@datagrok/peptides 1.7.2 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/563.js +2 -0
- package/dist/611.js +2 -0
- package/dist/802.js +2 -0
- package/dist/96.js +2 -0
- package/dist/package-test.js +2 -29778
- package/dist/package.js +2 -28285
- package/files/icons/logo-summary-viewer.svg +13 -0
- package/files/icons/peptide-sar-vertical-viewer.svg +13 -0
- package/files/icons/peptide-sar-viewer.svg +19 -0
- package/files/icons/peptide-space-viewer.svg +40 -0
- package/package.json +5 -6
- package/src/model.ts +262 -196
- package/src/package.ts +44 -29
- package/src/tests/peptide-space-test.ts +1 -2
- package/src/tests/viewers.ts +0 -2
- package/src/utils/cell-renderer.ts +1 -1
- package/src/utils/distance-matrix.worker.ts +16 -0
- package/src/utils/peptide-similarity-space.ts +0 -1
- package/src/utils/statistics.ts +9 -0
- package/src/utils/types.ts +5 -1
- package/src/utils/worker-creator.ts +11 -0
- package/src/viewers/logo-summary.ts +232 -133
- package/src/viewers/peptide-space-viewer.ts +6 -6
- package/src/viewers/sar-viewer.ts +3 -3
- package/src/widgets/distribution.ts +14 -17
- package/src/widgets/peptides.ts +4 -1
- package/src/widgets/settings.ts +30 -4
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_workers_dimensionality-reducer_js.js +0 -9077
package/dist/563.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var peptides;(()=>{"use strict";var t,e,r={8563:(t,e,r)=>{var n=r(4221),s=r(7659),i=r(3659);function o(t){return Math.random()*t}function h(t){return Math.floor(o(t))}function a(t=!1,e="Assertion error."){if(!t)throw new Error(e)}function l(t,e,r=0){return new Array(t).fill(r).map((()=>new i.OW(e).fill(r)))}function u(t,e,r=1){const n=t.length;a(n==e.length,"Vector lengths do not match.");const s=new i.OW(n);for(let n=0;n<t.length;++n)s[n]=t[n]+r*e[n];return s}function c(t,e,r=1){const n=l(t,e);for(let s=0;s<t;++s)for(let t=0;t<e;++t)n[s][t]=o(r);return n}function f(t,e){const r=function(t){let e=0;for(let r=0;r<t.length;++r)e+=t[r];return e}(function(t){const e=t.length,r=new i.OW(e);for(let e=0;e<t.length;++e)r[e]=t[e]*t[e];return r}(u(t,e,-1)));return Math.sqrt(r)}function g(t,e){const r=t.length,n=l(r,r,0);for(let s=0;s<r;++s)for(let i=s+1;i<r;++i){const r=null==t[s]||null==t[i]?0:e(t[s],t[i]);n[s][i]=n[i][s]=r}return n}class m{constructor(t){var e,r,n,s,i,o,h;this.steps=null!==(e=null==t?void 0:t.steps)&&void 0!==e?e:0,this.cycles=null!==(r=null==t?void 0:t.cycles)&&void 0!==r?r:1e6,this.cutoff=null!==(n=null==t?void 0:t.cutoff)&&void 0!==n?n:0,this.lambda=null!==(s=null==t?void 0:t.lambda)&&void 0!==s?s:2,this.dlambda=null!==(i=null==t?void 0:t.dlambda)&&void 0!==i?i:.01,this.lambda2=this.lambda/2,this.dlambda2=this.dlambda/2,this.epsilon=null!==(o=null==t?void 0:t.epsilon)&&void 0!==o?o:1e-10,this.distanceFunction=null!==(h=null==t?void 0:t.distance)&&void 0!==h?h:f,this.distance=[]}initDistance(t){this.distance=g(t,this.distanceFunction)}calcDistance(t,e,r){return this.distance[e][r]}embed(t){const e=t.length,r=c(e,m.dimension,40);let n=this.lambda2;0==this.steps&&(this.steps=t.length-1),this.initDistance(t);for(let s=0;s<this.cycles;++s){for(let s=0;s<this.steps;++s){const s=h(e);let i=h(e);for(;s==i;)i=h(e);const o=r[s],a=r[i],l=this.calcDistance(t,s,i),c=f(o,a);if(0==this.cutoff||l<=this.cutoff||c<l){const t=n*(l-c)/(c+this.epsilon),e=u(o,a,-1);r[s]=u(o,e,t),r[i]=u(a,e,-t)}}if(n-=this.dlambda2,n<=0)break}return r}}m.dimension=2;class p extends m{embed(t){const e=t.length,r=c(e,p.dimension,40);let n=this.lambda;this.initDistance(t);for(let s=0;s<this.cycles;++s){const s=h(e),i=r[s];for(let o=0;o<e;++o){if(s==o)continue;const e=r[o],h=this.calcDistance(t,s,o),a=f(i,e);if(0==this.cutoff||h<=this.cutoff||a<h){const t=n*(h-a)/(a+this.epsilon),s=u(i,e,-1);r[o]=u(e,s,-t)}}if(n-=this.dlambda,n<=0)break}return r}}class d extends m{constructor(t){var e,r,n,s,i;super(t),this.cycles=null!==(e=null==t?void 0:t.cycles)&&void 0!==e?e:1e3,this.steps=null!==(r=null==t?void 0:t.steps)&&void 0!==r?r:1e5,this.radiusPercent=null!==(n=null==t?void 0:t.radiusPercent)&&void 0!==n?n:1,this.maxDistance=null!==(s=null==t?void 0:t.maxDistance)&&void 0!==s?s:null,this.maxDistanceSteps=null!==(i=null==t?void 0:t.maxDistanceSteps)&&void 0!==i?i:null}embed(t){const e=t.length,r=c(e,d.dimension,40);if(this.initDistance(t),null==this.maxDistanceSteps&&(this.maxDistanceSteps=e*Math.floor((e-1)/2)),null==this.maxDistance){this.maxDistance=-1e37;for(let r=0;r<this.maxDistanceSteps;r++){const r=h(e);let n=h(e);for(;r==n;)n=h(e);const s=this.calcDistance(t,r,n);s>this.maxDistance&&(this.maxDistance=s)}}let n=this.lambda;const s=0==this.radiusPercent?this.maxDistance:this.maxDistance*this.radiusPercent;for(let i=0;i<this.cycles;++i){for(let i=0;i<this.steps;++i){const i=h(e);let o=h(e);for(;i==o;)o=h(e);const a=r[i],l=r[o],c=this.calcDistance(t,i,o),g=f(a,l);if(c<=s||g<c){const t=.5*n*(c-g)/(g+this.epsilon),e=u(a,l,-1);r[i]=u(a,e,t),r[o]=u(l,e,-t)}}if(n-=(this.lambda-this.dlambda)/(this.cycles-1),n<this.dlambda)break}return r}}var w,y,v,b=r(1811),M=r(3979),x=r(5697);!function(t){t.Levenshtein="Levenshtein",t.JaroWinkler="Jaro-Winkler",t.Manhattan="Manhattan"}(w||(w={})),function(t){t.Euclidean="Euclidean"}(y||(y={})),function(t){t.Tanimoto="Tanimoto",t.Dice="Dice",t.Asymmetric="Asymmetric",t.BraunBlanquet="Braun-Blanquet",t.Cosine="Cosine",t.Kulczynski="Kulczynski",t.McConnaughey="Mc-Connaughey",t.RogotGoldberg="Rogot-Goldberg",t.Russel="Russel",t.Sokal="Sokal",t.Hamming="Hamming",t.Euclidean="Euclidean"}(v||(v={}));const S={[y.Euclidean]:f},_={[w.Levenshtein]:b.T,[w.JaroWinkler]:M.H$,[w.Manhattan]:function(t,e){if(t.length!==e.length)return 1;{let r=0;for(let n=1;n<t.length;n++)r+=t[n]==e[n]?0:1;return r/t.length}}},E={[v.Tanimoto]:x.KR,[v.Dice]:x._h,[v.Asymmetric]:x.yU,[v.BraunBlanquet]:x.Dz,[v.Cosine]:x.Zd,[v.Kulczynski]:x.s,[v.McConnaughey]:x.aW,[v.RogotGoldberg]:x.MI,[v.Russel]:x.fX,[v.Sokal]:x.NB,[v.Hamming]:x.UX,[v.Euclidean]:x.WI};var R;!function(t){t.Vector="Vector",t.String="String",t.BitArray="BitArray"}(R||(R={}));const N={[R.Vector]:{[y.Euclidean]:S[y.Euclidean]},[R.String]:{[w.Levenshtein]:_[w.Levenshtein],[w.JaroWinkler]:_[w.JaroWinkler],[w.Manhattan]:_[w.Manhattan]},[R.BitArray]:{[v.Tanimoto]:E[v.Tanimoto],[v.Dice]:E[v.Dice],[v.Asymmetric]:E[v.Asymmetric],[v.BraunBlanquet]:E[v.BraunBlanquet],[v.Cosine]:E[v.Cosine],[v.Kulczynski]:E[v.Kulczynski],[v.McConnaughey]:E[v.McConnaughey],[v.RogotGoldberg]:E[v.RogotGoldberg],[v.Russel]:E[v.Russel],[v.Sokal]:E[v.Sokal]}},k=Object.keys(N).reduce(((t,e)=>{for(const r of Object.keys(N[e]))t[r]=e;return t}),{});class I{constructor(t){this.method=t,this.dataType=k[t]}getMeasure(){return N[this.dataType][this.method]}static getMetricByDataType(t){return Object.keys(N[t])}static get availableMeasures(){return Object.keys(N)}}class A{constructor(t,e=!1){if(this._length=0,this._version=0,this._updateLevel=0,this._selectedCount=0,this._selectedCountVersion=-1,this._selectedIndexesVersion=-1,this._versionedName="",this._versionedNameVersion=-1,this.SHRINK_THRESHOLD=256,"number"==typeof t){const r=t,n=A._createBuffer(r);if(e)for(let t=0;t<n.length;t++)n[t]=-1;this._data=n,this._length=r}else{if(!(t instanceof Uint32Array))throw new Error("Invalid constructor");this._data=t,this._length=e}}getRawData(){return this._data}assureGoez(t,e){if(t<0)throw new Error(`${e} should be greater than zero`)}assureInRange(t,e,r,n){if(t<e||t>r)throw new Error(`Argument ${n} (${t}) out of range (${e}, ${r})`)}copy(t,e,r){for(let n=0;n<r;n++)e[n]=t[n]}copyFrom(t){if(this._length!=t._length)throw new Error(`Lengths differ (${this._length} != ${t._length})`);this.copy(t._data,this._data,this.lengthInInts),this._version++}get length(){return this._length}get buffer(){return this._data}set buffer(t){this._data=t,this._version++}get version(){return this._version}set version(t){this._version=t}incrementVersion(t=!0){this._version++}get lengthInInts(){return Math.floor((this._length+31)/32)}get versionedName(){return this._version==this._versionedNameVersion?this._versionedName:""}set versionedName(t){this._versionedName=t,this._versionedNameVersion=this._version}get self(){return this}setLength(t){if(t<0)throw new Error("should be >= 0");if(t==this._length)return;const e=Math.floor((t+31)/32);if(e>this._data.length||e+this.SHRINK_THRESHOLD<this._data.length){const t=new Uint32Array(e);this.copy(this._data,t,e>this._data.length?this._data.length:e),this._data=t}t>this._length&&(this._length%32>0&&(this._data[this.lengthInInts-1]&=(1<<(this._length%32&31))-1),this._data.fill(0,this.lengthInInts,e)),this._length=t,this._version++}static fromAnd(t,e){if(t._length!=e._length)throw new Error(`Lengths differ (${t._length} != ${e._length})`);const r=new A(t._length);r._length=t._length,r._data=A._createBuffer(r._length),r._version=0;const n=t.lengthInInts;for(let s=0;s<n;s++)r._data[s]=t._data[s]&e._data[s];return r}static _createBuffer(t){return new Uint32Array(Math.floor((t+31)/32))}static fromValues(t){const e=new A(t.length);e._version=0;for(let r=0;r<e._length;r++)t[r]&&(e._data[Math.floor(r/32)]|=1<<(r%32&31));return e}static fromSeq(t,e){const r=new A(t);for(let n=0;n<t;++n)r.setBit(n,e(n));return r._version=0,r}static fromString(t){return A.fromSeq(t.length,(e=>"1"==t.charAt(e)))}static fromUint32Array(t,e){const r=new A(t);return r._data=e,r}static fromBytes(t){const e=t.length,r=new A(8*e);r._data=new Uint32Array(Math.floor((e+3)/4)),r._length=8*e;let n=0,s=0;for(;e-s>=4;)r._data[n++]=255&t[s]|(255&t[s+1])<<8|(255&t[s+2])<<16|(255&t[s+3])<<24,s+=4;return e-s==3&&(r._data[n]=(255&t[s+2])<<16),e-s==2&&(r._data[n]|=(255&t[s+1])<<8),e-s==1&&(r._data[n]|=255&t[s]),r._version=0,r}toString(){return`${this._length} bits, ${this.countBits(!0)} set`}equals(t){if(this==t)return!0;if(null==t)return!1;if(this._length!=t._length)return!1;if(0==this._length)return!0;for(let e=0;e<this._data.length-1;e++)if(this._data[e]!=t._data[e])return!1;for(let e=8*(this._data.length-1);e<this._length;e++)if(this.getBit(e)!=t.getBit(e))return!1;return!0}clone(){const t=new A(0,!1);return t._data=Uint32Array.from(this._data),t._length=this._length,t._version=this._version,t}init(t,e){this.setAll(!1,!1);for(let e=0;e<this._length;e++)t(e)&&(this._data[Math.floor(e/32)]|=1<<(e%32&31));return this.incrementVersion(e),this}invert(t=!0){for(let t=0;t<this._data.length;t++)this._data[t]^=-1;this.incrementVersion(t)}setAll(t,e=!1){const r=t?-1:0,n=this.lengthInInts;for(let t=0;t<n;t++)this._data[t]=r;this.incrementVersion(e)}setIndexes(t,e=!0,r=!0,n=!0){r&&this.setAll(!e,!1);for(const r of t)this.setFast(r,e);this.incrementVersion(n)}everyIndex(t,e=!0){for(const r of t)if(this.getBit(r)!=e)return!1;return!0}anyIndex(t,e=!0){for(const r of t)if(this.getBit(r)==e)return!0;return!1}setWhere(t,e=!0,r=!0,n=!0,s=!0){if(r&&s&&this.setAll(!e,!1),s)for(let r=0;r<this._length;r++)t(r)&&this.setFast(r,e);else for(let r=0;r<this._length;r++)this.setFast(r,t(r)?e:!e);this.incrementVersion(n)}getRange(t,e){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length,"to");const r=[];for(let n=t;n<e;++n)r.push(this.getBit(n));return A.fromValues(r)}getRangeAsList(t,e){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length,"to");const r=[];for(let n=t;n<e;++n)r.push(this.getBit(n));return r}setRange(t,e,r,n=!0){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length-1,"to");const s=Math.min(t,e),i=Math.max(t,e);if(r)for(let t=s;t<=i;t++)this.setTrue(t);else for(let t=s;t<=i;t++)this.setFalse(t);return this.incrementVersion(n),this}setRandom(t,e,r=!0){if(t<0||t>this._length)throw new Error("n must be >= 0 && <= Count");t>this._length/2&&this.setRandom(this._length-t,!e),this.setAll(!e);for(let r=0;r<t;){const t=Math.floor(Math.random()*this._length);this.getBit(t)!=e&&(this.setFast(t,e),r++)}this.incrementVersion(r)}and(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]&=t._data[e];return this.incrementVersion(e),this}andNot(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");const r=this.lengthInInts;for(let e=0;e<r;e++)this._data[e]&=~t._data[e];return this.incrementVersion(e),this}notAnd(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]=~this._data[e]&t._data[e];return this.incrementVersion(e),this}not(t=!0){for(let t=0,e=this.lengthInInts;t<e;t++)this._data[t]=~this._data[t];return this.incrementVersion(t),this}or(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]|=t._data[e];return this.incrementVersion(e),this}xor(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]^=t._data[e];return this.incrementVersion(e),this}insertAt(t,e,r=!1){if(this.assureInRange(t,0,this._length,"pos"),0==e)return;const n=this._length;this.setLength(this._length+e);for(let r=n-1;r>=t;r--)this.setBit(r+e,this.getBit(r));for(let n=t;n<t+e;n++)this.setBit(n,r)}removeAt(t,e=1){if(e<0)throw new Error("n cannot be negative");if(this.assureInRange(t,0,this._length-e,"pos"),this.contains(!0))for(let r=t;r<this._length-e;r++)this.setBit(r,this.getBit(r+e));this.setLength(this._length-e)}removeByMask(t,e=!0){if(this._length!=t.length)throw new Error("length != mask.length");if(t==this)this.setLength(t.countBits(!e)),this.setAll(!e);else{let r=0;for(let n=-1;-1!=(n=t.findNext(n,!e));)this.setFast(r++,this.getBit(n));this._length=r,this._version++}return this}getBit(t){return 0!=(this._data[Math.floor(t/32)]&1<<(31&t))}setBit(t,e,r=!0){this.setFast(t,e),this._version++}setFast(t,e){e?this._data[Math.floor(t/32)]|=1<<(31&t):this._data[Math.floor(t/32)]&=~(1<<(31&t))}setTrue(t){this._data[Math.floor(t/32)]|=1<<(31&t)}setFalse(t){this._data[Math.floor(t/32)]&=~(1<<(31&t))}trueCount(){return this.countBits(!0)}falseCount(){return this.countBits(!1)}countBits(t){if(0==this._length)return 0;if(this._selectedCountVersion!=this._version){this._selectedCount=0;const t=this.lengthInInts;let e=0;for(;e<t-1;e++)for(let t=this._data[e];0!=t;t>>>=8)this._selectedCount+=A._onBitCount[255&t];let r=this._data[e];const n=31&this._length;for(0!=n&&(r&=~(4294967295<<n));0!=r;r>>>=8)this._selectedCount+=A._onBitCount[255&r];this._selectedCountVersion=this._version}return t?this._selectedCount:this._length-this._selectedCount}countWhere(t){let e=0;if(this.trueCount()==this._length)for(let r=0;r<this._length;r++)e+=t(r)?1:0;else for(let r=-1;-1!=(r=this.findNext(r,!0));)e+=t(r)?1:0;return e}andWithCountBits(t,e){if(0==this._length)return 0;let r=0;const n=this.lengthInInts;let s=0;for(;s<n-1;s++)for(let e=this._data[s]&t._data[s];0!=e;e>>>=8)r+=A._onBitCount[255&e];let i=this._data[s]&t._data[s];const o=31&this._length;for(0!=o&&(i&=~(4294967295<<o));0!=i;i>>>=8)r+=A._onBitCount[255&i];return e?r:this._length-r}clear(){this.setLength(0)}contains(t){return this.findNext(-1,t)>=0}get allTrue(){return this.countBits(!0)==this._length}get allFalse(){return this.countBits(!1)==this._length}get anyTrue(){return this.countBits(!0)>0}get anyFalse(){return this.countBits(!1)>0}findNext(t,e=!0){if(this.assureInRange(t,-1,this._length,"index"),t>=this._length-1)return-1;let r=31&(t=t<0?0:t+1);const n=this.lengthInInts;for(let s=Math.floor(t/32);s<n;s++){let n=e?this._data[s]:~this._data[s];if(0!=r)n&=4294967295<<r&4294967295,r=0;else if(!e&&-4294967296==n)continue;for(let e=0;0!=n;e+=8,n>>>=8){const r=A._firstOnBit[255&n];if(r>=0)return(t=r+32*s+e)>=this._length?-1:t}}return-1}findPrev(t,e=!0){if(0==t)return-1;this.assureInRange(t,-1,this._length,"index");let r=1+(t=t<0?this._length-1:t-1)&31;for(let n=Math.floor(t/32);n>=0;n--){let t=e?this._data[n]:~this._data[n];0!=r&&(t&=~(4294967295<<r),r=0);for(let e=24;0!=t;e-=8,t<<=8){const r=A._lastOnBit[t>>>24];if(r>=0)return r+32*n+e}}return-1}}A._onBitCount=Int8Array.from([0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8]),A._firstOnBit=Int8Array.from([-1,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0]),A._lastOnBit=Int8Array.from([-1,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]);class z{constructor(t){this.data=t.data}}const C={UMAP:class extends z{constructor(t){super(t),a("distanceFn"in t),this.distanceFn=t.distanceFn,this.vectors=[],t.distanceFn=this._encodedDistance.bind(this),this.data.length<15&&(t.nNeighbors=this.data.length-1),this.reducer=new n.u(t)}_encodedDistance(t,e){return this.distanceFn(this.data[t[0]],this.data[e[0]])}_encode(){for(let t=0;t<this.data.length;++t)this.vectors.push([t])}transform(){this._encode();const t=this.reducer.fit(this.vectors);return{embedding:(e=t,new Array(e.length).fill(0).map(((t,r)=>i.OW.from(e[r]))))};var e}},"t-SNE":class extends z{constructor(t){var e;super(t),this.reducer=new s.Z(t),this.iterations=null!==(e=null==t?void 0:t.iterations)&&void 0!==e?e:100,this.distanceFn=t.distance}transform(){const t=g(this.data,this.distanceFn);this.reducer.initDataDist(t);for(let t=0;t<this.iterations;++t)this.reducer.step();return{distance:t,embedding:this.reducer.getSolution()}}},SPE:class extends z{constructor(t){super(t),this.reducer=new m(t)}transform(){const t=this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}},pSPE:class extends z{constructor(t){super(t),this.reducer=new p(t)}transform(){const t=this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}},OriginalSPE:class extends z{constructor(t){super(t),this.reducer=new d(t)}transform(){const t=this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}}};class F{constructor(t,e,r,n){var s;const i=new I(r).getMeasure();let o={};if("BitArray"==k[r])for(let e=0;e<t.length;++e)t[e]=new A(t[e]._data,t[e]._length);o="UMAP"==e?Object.assign(Object.assign(Object.assign({data:t},{distanceFn:i}),{nEpochs:null==n?void 0:n.cycles}),n):"t-SNE"==e?Object.assign(Object.assign(Object.assign({data:t},{distance:i}),{iterations:null!==(s=null==n?void 0:n.cycles)&&void 0!==s?s:void 0}),n):Object.assign(Object.assign({data:t},{distance:i}),n),this.reducer=new C[e](o)}transform(t=!1){if(null==this.reducer)throw new Error("Reducer was not defined.");let{embedding:e,distance:r}=this.reducer.transform();var n;return t&&(n=e,e=new Array(n[0].length).fill(0).map(((t,e)=>new i.OW(n.length).fill(0).map(((t,r)=>n[r][e]))))),{distance:r,embedding:e}}static availableMetricsByType(t){return Object.keys(N[t])}static get availableMethods(){return Object.keys(C)}static get availableMetrics(){let t=[];return Object.values(N).forEach((e=>{const r=Object.values(e);t=[...t,...r]})),t}}self.onmessage=({data:{columnData:t,method:e,measure:r,options:n}})=>{let s;try{s=function(t,e,r,n){return new F(t,e,r,n).transform(!0)}(t,e,r,n)}catch(t){s={error:t}}self.postMessage({error:s.error,distance:s.distance,embedding:s.embedding})}},7659:(t,e,r)=>{e.Z=void 0;var n=r(3832);Object.defineProperty(e,"Z",{enumerable:!0,get:function(){return n.TSNE}})},3832:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TSNE=void 0,e.TSNE=class{constructor(t){this.returnV=!1,this.vValue=0,this.iter=0,t=t||{},this.perplexity=this.getopt(t,"perplexity",30),this.dim=this.getopt(t,"dim",2),this.epsilon=this.getopt(t,"epsilon",10)}assert(t,e){if(!t)throw e||"Assertion failed"}getopt(t,e,r){return t.hasOwnProperty(e)?t[e]:r}gaussRandom(){if(this.returnV)return this.returnV=!1,this.vValue;const t=2*Math.random()-1,e=2*Math.random()-1,r=t*t+e*e;if(0===r||r>1)return this.gaussRandom();const n=Math.sqrt(-2*Math.log(r)/r);return this.vValue=e*n,this.returnV=!0,t*n}randn(t,e){return t+this.gaussRandom()*e}zeros(t){if(void 0===t||isNaN(t))return[];if("undefined"==typeof ArrayBuffer){const e=new Array(t);for(let r=0;r<t;r++)e[r]=0;return e}return new Float64Array(t)}randn2d(t,e,r){const n=void 0!==r,s=[];for(let i=0;i<t;i++){const t=[];for(let s=0;s<e;s++)n?t.push(r):t.push(this.randn(0,1e-4));s.push(t)}return s}L2(t,e){const r=t.length;let n=0;for(let s=0;s<r;s++){const r=t[s],i=e[s];n+=(r-i)*(r-i)}return n}xtod(t){const e=t.length,r=this.zeros(e*e);for(let n=0;n<e;n++)for(let s=n+1;s<e;s++){const i=this.L2(t[n],t[s]);r[n*e+s]=i,r[s*e+n]=i}return r}d2p(t,e,r){const n=Math.sqrt(t.length),s=Math.floor(n);this.assert(s===n,"D should have square number of elements.");const i=Math.log(e),o=this.zeros(s*s),h=this.zeros(s);for(let e=0;e<s;e++){let n=-1/0,a=1/0,l=1,u=!1;const c=50;let f=0;for(;!u;){let o=0;for(let r=0;r<s;r++){let n=Math.exp(-t[e*s+r]*l);e===r&&(n=0),h[r]=n,o+=n}let g=0;for(let t=0;t<s;t++){let e;e=0===o?0:h[t]/o,h[t]=e,e>1e-7&&(g-=e*Math.log(e))}g>i?(n=l,a===1/0?l*=2:l=(l+a)/2):(a=l,n===-1/0?l/=2:l=(l+n)/2),f++,Math.abs(g-i)<r&&(u=!0),f>=c&&(u=!0)}for(let t=0;t<s;t++)o[e*s+t]=h[t]}const a=this.zeros(s*s),l=2*s;for(let t=0;t<s;t++)for(let e=0;e<s;e++)a[t*s+e]=Math.max((o[t*s+e]+o[e*s+t])/l,1e-100);return a}sign(t){return t>0?1:t<0?-1:0}initDataRaw(t){const e=t.length,r=t[0].length;this.assert(e>0," X is empty? You must have some data!"),this.assert(r>0," X[0] is empty? Where is the data?");const n=this.xtod(t);this.P=this.d2p(n,this.perplexity,1e-4),this.N=e,this.initSolution()}initDataDist(t){const e=t.length;this.assert(e>0," X is empty? You must have some data!");const r=this.zeros(e*e);for(let n=0;n<e;n++)for(let s=n+1;s<e;s++){const i=t[n][s];r[n*e+s]=i,r[s*e+n]=i}this.P=this.d2p(r,this.perplexity,1e-4),this.N=e,this.initSolution()}initSolution(){this.Y=this.randn2d(this.N,this.dim),this.gains=this.randn2d(this.N,this.dim,1),this.ystep=this.randn2d(this.N,this.dim,0),this.iter=0}getSolution(){return this.Y}step(){this.iter+=1;const t=this.N,e=this.costGrad(this.Y),r=e.cost,n=e.grad,s=this.zeros(this.dim);for(let e=0;e<t;e++)for(let t=0;t<this.dim;t++){const r=n[e][t],i=this.ystep[e][t],o=this.gains[e][t];let h=this.sign(r)===this.sign(i)?.8*o:o+.2;h<.01&&(h=.01),this.gains[e][t]=h;const a=(this.iter<250?.5:.8)*i-this.epsilon*h*n[e][t];this.ystep[e][t]=a,this.Y[e][t]+=a,s[t]+=this.Y[e][t]}for(let e=0;e<t;e++)for(let r=0;r<this.dim;r++)this.Y[e][r]-=s[r]/t;return r}debugGrad(){const t=this.N,e=this.costGrad(this.Y),r=(e.cost,e.grad),n=1e-5;for(let e=0;e<t;e++)for(let t=0;t<this.dim;t++){const s=this.Y[e][t];this.Y[e][t]=s+n;const i=this.costGrad(this.Y);this.Y[e][t]=s-n;const o=this.costGrad(this.Y),h=r[e][t],a=(i.cost-o.cost)/(2*n);console.log(e+","+t+": gradcheck analytic: "+h+" vs. numerical: "+a),this.Y[e][t]=s}}costGrad(t){const e=this.N,r=this.dim,n=this.P,s=this.iter<100?4:1,i=this.zeros(e*e);let o=0;for(let n=0;n<e;n++)for(let s=n+1;s<e;s++){let h=0;for(let e=0;e<r;e++){const r=t[n][e]-t[s][e];h+=r*r}const a=1/(1+h);i[n*e+s]=a,i[s*e+n]=a,o+=2*a}const h=e*e,a=this.zeros(h);for(let t=0;t<h;t++)a[t]=Math.max(i[t]/o,1e-100);let l=0;const u=[];for(let o=0;o<e;o++){const h=new Array(r);for(let t=0;t<r;t++)h[t]=0;for(let u=0;u<e;u++){l+=-n[o*e+u]*Math.log(a[o*e+u]);const c=4*(s*n[o*e+u]-a[o*e+u])*i[o*e+u];for(let e=0;e<r;e++)h[e]+=c*(t[o][e]-t[u][e])}u.push(h)}return{cost:l,grad:u}}}},9251:(t,e,r)=>{r.r(e),r.d(e,{default:()=>O});const n=Object.prototype.toString;function s(t){return n.call(t).endsWith("Array]")}function i(t,e,r){let n=0;const s=r(e);for(let e=0;e<t.x.length;e++)n+=Math.abs(t.y[e]-s(t.x[e]));return n}const o=Object.prototype.toString;function h(t){return o.call(t).endsWith("Array]")}const a=Object.prototype.toString;function l(t){return a.call(t).endsWith("Array]")}const u=Object.prototype.toString;const c=Object.prototype.toString;function f(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!l(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");if(void 0!==r.output){if(!l(r.output))throw new TypeError("output option must be an array if specified");e=r.output}else e=new Array(t.length);var n=function(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e=t,!c.call(e).endsWith("Array]"))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");var n=r.fromIndex,s=void 0===n?0:n,i=r.toIndex,o=void 0===i?t.length:i;if(s<0||s>=t.length||!Number.isInteger(s))throw new Error("fromIndex must be a positive integer smaller than length");if(o<=s||o>t.length||!Number.isInteger(o))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var h=t[s],a=s+1;a<o;a++)t[a]<h&&(h=t[a]);return h}(t),s=function(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e=t,!u.call(e).endsWith("Array]"))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");var n=r.fromIndex,s=void 0===n?0:n,i=r.toIndex,o=void 0===i?t.length:i;if(s<0||s>=t.length||!Number.isInteger(s))throw new Error("fromIndex must be a positive integer smaller than length");if(o<=s||o>t.length||!Number.isInteger(o))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var h=t[s],a=s+1;a<o;a++)t[a]>h&&(h=t[a]);return h}(t);if(n===s)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var i=r.min,o=void 0===i?r.autoMinMax?n:0:i,h=r.max,a=void 0===h?r.autoMinMax?s:1:h;if(o>=a)throw new RangeError("min option must be smaller than max option");for(var f=(a-o)/(s-n),g=0;g<t.length;g++)e[g]=(t[g]-n)*f+o;return e}const g=" ".repeat(2),m=" ".repeat(4);function p(t,e={}){const{maxRows:r=15,maxColumns:n=10,maxNumSize:s=8,padMinus:i="auto"}=e;return`${t.constructor.name} {\n${g}[\n${m}${function(t,e,r,n,s){const{rows:i,columns:o}=t,h=Math.min(i,e),a=Math.min(o,r),l=[];if("auto"===s){s=!1;t:for(let e=0;e<h;e++)for(let r=0;r<a;r++)if(t.get(e,r)<0){s=!0;break t}}for(let e=0;e<h;e++){let r=[];for(let i=0;i<a;i++)r.push(d(t.get(e,i),n,s));l.push(`${r.join(" ")}`)}return a!==o&&(l[l.length-1]+=` ... ${o-r} more columns`),h!==i&&l.push(`... ${i-e} more rows`),l.join(`\n${m}`)}(t,r,n,s,i)}\n${g}]\n${g}rows: ${t.rows}\n${g}columns: ${t.columns}\n}`}function d(t,e,r){return(t>=0&&r?` ${w(t,e-1)}`:w(t,e)).padEnd(e)}function w(t,e){let r=t.toString();if(r.length<=e)return r;let n=t.toFixed(e);if(n.length>e&&(n=t.toFixed(Math.max(0,e-(n.length-e)))),n.length<=e&&!n.startsWith("0.000")&&!n.startsWith("-0.000"))return n;let s=t.toExponential(e);return s.length>e&&(s=t.toExponential(Math.max(0,e-(s.length-e)))),s.slice(0)}function y(t,e,r){let n=r?t.rows:t.rows-1;if(e<0||e>n)throw new RangeError("Row index out of range")}function v(t,e,r){let n=r?t.columns:t.columns-1;if(e<0||e>n)throw new RangeError("Column index out of range")}function b(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.columns)throw new RangeError("vector size must be the same as the number of columns");return e}function M(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.rows)throw new RangeError("vector size must be the same as the number of rows");return e}function x(t,e,r,n,s){if(5!==arguments.length)throw new RangeError("expected 4 arguments");if(_("startRow",e),_("endRow",r),_("startColumn",n),_("endColumn",s),e>r||n>s||e<0||e>=t.rows||r<0||r>=t.rows||n<0||n>=t.columns||s<0||s>=t.columns)throw new RangeError("Submatrix indices are out of range")}function S(t,e=0){let r=[];for(let n=0;n<t;n++)r.push(e);return r}function _(t,e){if("number"!=typeof e)throw new TypeError(`${t} must be a number`)}function E(t){if(t.isEmpty())throw new Error("Empty matrix has no elements to index")}class R{static from1DArray(t,e,r){if(t*e!==r.length)throw new RangeError("data length does not match given dimensions");let n=new k(t,e);for(let s=0;s<t;s++)for(let t=0;t<e;t++)n.set(s,t,r[s*e+t]);return n}static rowVector(t){let e=new k(1,t.length);for(let r=0;r<t.length;r++)e.set(0,r,t[r]);return e}static columnVector(t){let e=new k(t.length,1);for(let r=0;r<t.length;r++)e.set(r,0,t[r]);return e}static zeros(t,e){return new k(t,e)}static ones(t,e){return new k(t,e).fill(1)}static rand(t,e,r={}){if("object"!=typeof r)throw new TypeError("options must be an object");const{random:n=Math.random}=r;let s=new k(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)s.set(r,t,n());return s}static randInt(t,e,r={}){if("object"!=typeof r)throw new TypeError("options must be an object");const{min:n=0,max:s=1e3,random:i=Math.random}=r;if(!Number.isInteger(n))throw new TypeError("min must be an integer");if(!Number.isInteger(s))throw new TypeError("max must be an integer");if(n>=s)throw new RangeError("min must be smaller than max");let o=s-n,h=new k(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++){let e=n+Math.round(i()*o);h.set(r,t,e)}return h}static eye(t,e,r){void 0===e&&(e=t),void 0===r&&(r=1);let n=Math.min(t,e),s=this.zeros(t,e);for(let t=0;t<n;t++)s.set(t,t,r);return s}static diag(t,e,r){let n=t.length;void 0===e&&(e=n),void 0===r&&(r=e);let s=Math.min(n,e,r),i=this.zeros(e,r);for(let e=0;e<s;e++)i.set(e,e,t[e]);return i}static min(t,e){t=this.checkMatrix(t),e=this.checkMatrix(e);let r=t.rows,n=t.columns,s=new k(r,n);for(let i=0;i<r;i++)for(let r=0;r<n;r++)s.set(i,r,Math.min(t.get(i,r),e.get(i,r)));return s}static max(t,e){t=this.checkMatrix(t),e=this.checkMatrix(e);let r=t.rows,n=t.columns,s=new this(r,n);for(let i=0;i<r;i++)for(let r=0;r<n;r++)s.set(i,r,Math.max(t.get(i,r),e.get(i,r)));return s}static checkMatrix(t){return R.isMatrix(t)?t:new k(t)}static isMatrix(t){return null!=t&&"Matrix"===t.klass}get size(){return this.rows*this.columns}apply(t){if("function"!=typeof t)throw new TypeError("callback must be a function");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.call(this,e,r);return this}to1DArray(){let t=[];for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.push(this.get(e,r));return t}to2DArray(){let t=[];for(let e=0;e<this.rows;e++){t.push([]);for(let r=0;r<this.columns;r++)t[e].push(this.get(e,r))}return t}toJSON(){return this.to2DArray()}isRowVector(){return 1===this.rows}isColumnVector(){return 1===this.columns}isVector(){return 1===this.rows||1===this.columns}isSquare(){return this.rows===this.columns}isEmpty(){return 0===this.rows||0===this.columns}isSymmetric(){if(this.isSquare()){for(let t=0;t<this.rows;t++)for(let e=0;e<=t;e++)if(this.get(t,e)!==this.get(e,t))return!1;return!0}return!1}isEchelonForm(){let t=0,e=0,r=-1,n=!0,s=!1;for(;t<this.rows&&n;){for(e=0,s=!1;e<this.columns&&!1===s;)0===this.get(t,e)?e++:1===this.get(t,e)&&e>r?(s=!0,r=e):(n=!1,s=!0);t++}return n}isReducedEchelonForm(){let t=0,e=0,r=-1,n=!0,s=!1;for(;t<this.rows&&n;){for(e=0,s=!1;e<this.columns&&!1===s;)0===this.get(t,e)?e++:1===this.get(t,e)&&e>r?(s=!0,r=e):(n=!1,s=!0);for(let r=e+1;r<this.rows;r++)0!==this.get(t,r)&&(n=!1);t++}return n}echelonForm(){let t=this.clone(),e=0,r=0;for(;e<t.rows&&r<t.columns;){let n=e;for(let s=e;s<t.rows;s++)t.get(s,r)>t.get(n,r)&&(n=s);if(0===t.get(n,r))r++;else{t.swapRows(e,n);let s=t.get(e,r);for(let n=r;n<t.columns;n++)t.set(e,n,t.get(e,n)/s);for(let n=e+1;n<t.rows;n++){let s=t.get(n,r)/t.get(e,r);t.set(n,r,0);for(let i=r+1;i<t.columns;i++)t.set(n,i,t.get(n,i)-t.get(e,i)*s)}e++,r++}}return t}reducedEchelonForm(){let t=this.echelonForm(),e=t.columns,r=t.rows,n=r-1;for(;n>=0;)if(0===t.maxRow(n))n--;else{let s=0,i=!1;for(;s<r&&!1===i;)1===t.get(n,s)?i=!0:s++;for(let r=0;r<n;r++){let i=t.get(r,s);for(let o=s;o<e;o++){let e=t.get(r,o)-i*t.get(n,o);t.set(r,o,e)}}n--}return t}set(){throw new Error("set method is unimplemented")}get(){throw new Error("get method is unimplemented")}repeat(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{rows:e=1,columns:r=1}=t;if(!Number.isInteger(e)||e<=0)throw new TypeError("rows must be a positive integer");if(!Number.isInteger(r)||r<=0)throw new TypeError("columns must be a positive integer");let n=new k(this.rows*e,this.columns*r);for(let t=0;t<e;t++)for(let e=0;e<r;e++)n.setSubMatrix(this,this.rows*t,this.columns*e);return n}fill(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,t);return this}neg(){return this.mulS(-1)}getRow(t){y(this,t);let e=[];for(let r=0;r<this.columns;r++)e.push(this.get(t,r));return e}getRowVector(t){return k.rowVector(this.getRow(t))}setRow(t,e){y(this,t),e=b(this,e);for(let r=0;r<this.columns;r++)this.set(t,r,e[r]);return this}swapRows(t,e){y(this,t),y(this,e);for(let r=0;r<this.columns;r++){let n=this.get(t,r);this.set(t,r,this.get(e,r)),this.set(e,r,n)}return this}getColumn(t){v(this,t);let e=[];for(let r=0;r<this.rows;r++)e.push(this.get(r,t));return e}getColumnVector(t){return k.columnVector(this.getColumn(t))}setColumn(t,e){v(this,t),e=M(this,e);for(let r=0;r<this.rows;r++)this.set(r,t,e[r]);return this}swapColumns(t,e){v(this,t),v(this,e);for(let r=0;r<this.rows;r++){let n=this.get(r,t);this.set(r,t,this.get(r,e)),this.set(r,e,n)}return this}addRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t[r]);return this}subRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t[r]);return this}mulRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t[r]);return this}divRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t[r]);return this}addColumnVector(t){t=M(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t[e]);return this}subColumnVector(t){t=M(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t[e]);return this}mulColumnVector(t){t=M(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t[e]);return this}divColumnVector(t){t=M(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t[e]);return this}mulRow(t,e){y(this,t);for(let r=0;r<this.columns;r++)this.set(t,r,this.get(t,r)*e);return this}mulColumn(t,e){v(this,t);for(let r=0;r<this.rows;r++)this.set(r,t,this.get(r,t)*e);return this}max(t){if(this.isEmpty())return NaN;switch(t){case"row":{const t=new Array(this.rows).fill(Number.NEGATIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t[e]&&(t[e]=this.get(e,r));return t}case"column":{const t=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t[r]&&(t[r]=this.get(e,r));return t}case void 0:{let t=this.get(0,0);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t&&(t=this.get(e,r));return t}default:throw new Error(`invalid option: ${t}`)}}maxIndex(){E(this);let t=this.get(0,0),e=[0,0];for(let r=0;r<this.rows;r++)for(let n=0;n<this.columns;n++)this.get(r,n)>t&&(t=this.get(r,n),e[0]=r,e[1]=n);return e}min(t){if(this.isEmpty())return NaN;switch(t){case"row":{const t=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t[e]&&(t[e]=this.get(e,r));return t}case"column":{const t=new Array(this.columns).fill(Number.POSITIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t[r]&&(t[r]=this.get(e,r));return t}case void 0:{let t=this.get(0,0);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t&&(t=this.get(e,r));return t}default:throw new Error(`invalid option: ${t}`)}}minIndex(){E(this);let t=this.get(0,0),e=[0,0];for(let r=0;r<this.rows;r++)for(let n=0;n<this.columns;n++)this.get(r,n)<t&&(t=this.get(r,n),e[0]=r,e[1]=n);return e}maxRow(t){if(y(this,t),this.isEmpty())return NaN;let e=this.get(t,0);for(let r=1;r<this.columns;r++)this.get(t,r)>e&&(e=this.get(t,r));return e}maxRowIndex(t){y(this,t),E(this);let e=this.get(t,0),r=[t,0];for(let n=1;n<this.columns;n++)this.get(t,n)>e&&(e=this.get(t,n),r[1]=n);return r}minRow(t){if(y(this,t),this.isEmpty())return NaN;let e=this.get(t,0);for(let r=1;r<this.columns;r++)this.get(t,r)<e&&(e=this.get(t,r));return e}minRowIndex(t){y(this,t),E(this);let e=this.get(t,0),r=[t,0];for(let n=1;n<this.columns;n++)this.get(t,n)<e&&(e=this.get(t,n),r[1]=n);return r}maxColumn(t){if(v(this,t),this.isEmpty())return NaN;let e=this.get(0,t);for(let r=1;r<this.rows;r++)this.get(r,t)>e&&(e=this.get(r,t));return e}maxColumnIndex(t){v(this,t),E(this);let e=this.get(0,t),r=[0,t];for(let n=1;n<this.rows;n++)this.get(n,t)>e&&(e=this.get(n,t),r[0]=n);return r}minColumn(t){if(v(this,t),this.isEmpty())return NaN;let e=this.get(0,t);for(let r=1;r<this.rows;r++)this.get(r,t)<e&&(e=this.get(r,t));return e}minColumnIndex(t){v(this,t),E(this);let e=this.get(0,t),r=[0,t];for(let n=1;n<this.rows;n++)this.get(n,t)<e&&(e=this.get(n,t),r[0]=n);return r}diag(){let t=Math.min(this.rows,this.columns),e=[];for(let r=0;r<t;r++)e.push(this.get(r,r));return e}norm(t="frobenius"){let e=0;if("max"===t)return this.max();if("frobenius"===t){for(let t=0;t<this.rows;t++)for(let r=0;r<this.columns;r++)e+=this.get(t,r)*this.get(t,r);return Math.sqrt(e)}throw new RangeError(`unknown norm type: ${t}`)}cumulativeSum(){let t=0;for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t+=this.get(e,r),this.set(e,r,t);return this}dot(t){R.isMatrix(t)&&(t=t.to1DArray());let e=this.to1DArray();if(e.length!==t.length)throw new RangeError("vectors do not have the same size");let r=0;for(let n=0;n<e.length;n++)r+=e[n]*t[n];return r}mmul(t){t=k.checkMatrix(t);let e=this.rows,r=this.columns,n=t.columns,s=new k(e,n),i=new Float64Array(r);for(let o=0;o<n;o++){for(let e=0;e<r;e++)i[e]=t.get(e,o);for(let t=0;t<e;t++){let e=0;for(let n=0;n<r;n++)e+=this.get(t,n)*i[n];s.set(t,o,e)}}return s}strassen2x2(t){t=k.checkMatrix(t);let e=new k(2,2);const r=this.get(0,0),n=t.get(0,0),s=this.get(0,1),i=t.get(0,1),o=this.get(1,0),h=t.get(1,0),a=this.get(1,1),l=t.get(1,1),u=(r+a)*(n+l),c=(o+a)*n,f=r*(i-l),g=a*(h-n),m=(r+s)*l,p=u+g-m+(s-a)*(h+l),d=f+m,w=c+g,y=u-c+f+(o-r)*(n+i);return e.set(0,0,p),e.set(0,1,d),e.set(1,0,w),e.set(1,1,y),e}strassen3x3(t){t=k.checkMatrix(t);let e=new k(3,3);const r=this.get(0,0),n=this.get(0,1),s=this.get(0,2),i=this.get(1,0),o=this.get(1,1),h=this.get(1,2),a=this.get(2,0),l=this.get(2,1),u=this.get(2,2),c=t.get(0,0),f=t.get(0,1),g=t.get(0,2),m=t.get(1,0),p=t.get(1,1),d=t.get(1,2),w=t.get(2,0),y=t.get(2,1),v=t.get(2,2),b=(r-i)*(-f+p),M=(-r+i+o)*(c-f+p),x=(i+o)*(-c+f),S=r*c,_=(-r+a+l)*(c-g+d),E=(-r+a)*(g-d),R=(a+l)*(-c+g),N=(-s+l+u)*(p+w-y),I=(s-u)*(p-y),A=s*w,z=(l+u)*(-w+y),C=(-s+o+h)*(d+w-v),F=(s-h)*(d-v),T=(o+h)*(-w+v),O=S+A+n*m,V=(r+n+s-i-o-l-u)*p+M+x+S+N+A+z,P=S+_+R+(r+n+s-o-h-a-l)*d+A+C+T,D=b+o*(-c+f+m-p-d-w+v)+M+S+A+C+F,j=b+M+x+S+h*y,B=A+C+F+T+i*g,L=S+_+E+l*(-c+g+m-p-d-w+y)+N+I+A,q=N+I+A+z+a*f,$=S+_+E+R+u*v;return e.set(0,0,O),e.set(0,1,V),e.set(0,2,P),e.set(1,0,D),e.set(1,1,j),e.set(1,2,B),e.set(2,0,L),e.set(2,1,q),e.set(2,2,$),e}mmulStrassen(t){t=k.checkMatrix(t);let e=this.clone(),r=e.rows,n=e.columns,s=t.rows,i=t.columns;function o(t,e,r){let n=t.rows,s=t.columns;if(n===e&&s===r)return t;{let n=R.zeros(e,r);return n=n.setSubMatrix(t,0,0),n}}n!==s&&console.warn(`Multiplying ${r} x ${n} and ${s} x ${i} matrix: dimensions do not match.`);let h=Math.max(r,s),a=Math.max(n,i);return e=o(e,h,a),function t(e,r,n,s){if(n<=512||s<=512)return e.mmul(r);n%2==1&&s%2==1?(e=o(e,n+1,s+1),r=o(r,n+1,s+1)):n%2==1?(e=o(e,n+1,s),r=o(r,n+1,s)):s%2==1&&(e=o(e,n,s+1),r=o(r,n,s+1));let i=parseInt(e.rows/2,10),h=parseInt(e.columns/2,10),a=e.subMatrix(0,i-1,0,h-1),l=r.subMatrix(0,i-1,0,h-1),u=e.subMatrix(0,i-1,h,e.columns-1),c=r.subMatrix(0,i-1,h,r.columns-1),f=e.subMatrix(i,e.rows-1,0,h-1),g=r.subMatrix(i,r.rows-1,0,h-1),m=e.subMatrix(i,e.rows-1,h,e.columns-1),p=r.subMatrix(i,r.rows-1,h,r.columns-1),d=t(R.add(a,m),R.add(l,p),i,h),w=t(R.add(f,m),l,i,h),y=t(a,R.sub(c,p),i,h),v=t(m,R.sub(g,l),i,h),b=t(R.add(a,u),p,i,h),M=t(R.sub(f,a),R.add(l,c),i,h),x=t(R.sub(u,m),R.add(g,p),i,h),S=R.add(d,v);S.sub(b),S.add(x);let _=R.add(y,b),E=R.add(w,v),N=R.sub(d,w);N.add(y),N.add(M);let k=R.zeros(2*S.rows,2*S.columns);return k=k.setSubMatrix(S,0,0),k=k.setSubMatrix(_,S.rows,0),k=k.setSubMatrix(E,0,S.columns),k=k.setSubMatrix(N,S.rows,S.columns),k.subMatrix(0,n-1,0,s-1)}(e,t=o(t,h,a),h,a)}scaleRows(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:e=0,max:r=1}=t;if(!Number.isFinite(e))throw new TypeError("min must be a number");if(!Number.isFinite(r))throw new TypeError("max must be a number");if(e>=r)throw new RangeError("min must be smaller than max");let n=new k(this.rows,this.columns);for(let t=0;t<this.rows;t++){const s=this.getRow(t);s.length>0&&f(s,{min:e,max:r,output:s}),n.setRow(t,s)}return n}scaleColumns(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:e=0,max:r=1}=t;if(!Number.isFinite(e))throw new TypeError("min must be a number");if(!Number.isFinite(r))throw new TypeError("max must be a number");if(e>=r)throw new RangeError("min must be smaller than max");let n=new k(this.rows,this.columns);for(let t=0;t<this.columns;t++){const s=this.getColumn(t);s.length&&f(s,{min:e,max:r,output:s}),n.setColumn(t,s)}return n}flipRows(){const t=Math.ceil(this.columns/2);for(let e=0;e<this.rows;e++)for(let r=0;r<t;r++){let t=this.get(e,r),n=this.get(e,this.columns-1-r);this.set(e,r,n),this.set(e,this.columns-1-r,t)}return this}flipColumns(){const t=Math.ceil(this.rows/2);for(let e=0;e<this.columns;e++)for(let r=0;r<t;r++){let t=this.get(r,e),n=this.get(this.rows-1-r,e);this.set(r,e,n),this.set(this.rows-1-r,e,t)}return this}kroneckerProduct(t){t=k.checkMatrix(t);let e=this.rows,r=this.columns,n=t.rows,s=t.columns,i=new k(e*n,r*s);for(let o=0;o<e;o++)for(let e=0;e<r;e++)for(let r=0;r<n;r++)for(let h=0;h<s;h++)i.set(n*o+r,s*e+h,this.get(o,e)*t.get(r,h));return i}kroneckerSum(t){if(t=k.checkMatrix(t),!this.isSquare()||!t.isSquare())throw new Error("Kronecker Sum needs two Square Matrices");let e=this.rows,r=t.rows,n=this.kroneckerProduct(k.eye(r,r)),s=k.eye(e,e).kroneckerProduct(t);return n.add(s)}transpose(){let t=new k(this.columns,this.rows);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.set(r,e,this.get(e,r));return t}sortRows(t=N){for(let e=0;e<this.rows;e++)this.setRow(e,this.getRow(e).sort(t));return this}sortColumns(t=N){for(let e=0;e<this.columns;e++)this.setColumn(e,this.getColumn(e).sort(t));return this}subMatrix(t,e,r,n){x(this,t,e,r,n);let s=new k(e-t+1,n-r+1);for(let i=t;i<=e;i++)for(let e=r;e<=n;e++)s.set(i-t,e-r,this.get(i,e));return s}subMatrixRow(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=this.columns-1),e>r||e<0||e>=this.columns||r<0||r>=this.columns)throw new RangeError("Argument out of range");let n=new k(t.length,r-e+1);for(let s=0;s<t.length;s++)for(let i=e;i<=r;i++){if(t[s]<0||t[s]>=this.rows)throw new RangeError(`Row index out of range: ${t[s]}`);n.set(s,i-e,this.get(t[s],i))}return n}subMatrixColumn(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=this.rows-1),e>r||e<0||e>=this.rows||r<0||r>=this.rows)throw new RangeError("Argument out of range");let n=new k(r-e+1,t.length);for(let s=0;s<t.length;s++)for(let i=e;i<=r;i++){if(t[s]<0||t[s]>=this.columns)throw new RangeError(`Column index out of range: ${t[s]}`);n.set(i-e,s,this.get(i,t[s]))}return n}setSubMatrix(t,e,r){if((t=k.checkMatrix(t)).isEmpty())return this;x(this,e,e+t.rows-1,r,r+t.columns-1);for(let n=0;n<t.rows;n++)for(let s=0;s<t.columns;s++)this.set(e+n,r+s,t.get(n,s));return this}selection(t,e){!function(t,e){if(!h(e))throw new TypeError("row indices must be an array");for(let r=0;r<e.length;r++)if(e[r]<0||e[r]>=t.rows)throw new RangeError("row indices are out of range")}(this,t),function(t,e){if(!h(e))throw new TypeError("column indices must be an array");for(let r=0;r<e.length;r++)if(e[r]<0||e[r]>=t.columns)throw new RangeError("column indices are out of range")}(this,e);let r=new k(t.length,e.length);for(let n=0;n<t.length;n++){let s=t[n];for(let t=0;t<e.length;t++){let i=e[t];r.set(n,t,this.get(s,i))}}return r}trace(){let t=Math.min(this.rows,this.columns),e=0;for(let r=0;r<t;r++)e+=this.get(r,r);return e}clone(){let t=new k(this.rows,this.columns);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.set(e,r,this.get(e,r));return t}sum(t){switch(t){case"row":return function(t){let e=S(t.rows);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[r]+=t.get(r,n);return e}(this);case"column":return function(t){let e=S(t.columns);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[n]+=t.get(r,n);return e}(this);case void 0:return function(t){let e=0;for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)e+=t.get(r,n);return e}(this);default:throw new Error(`invalid option: ${t}`)}}product(t){switch(t){case"row":return function(t){let e=S(t.rows,1);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[r]*=t.get(r,n);return e}(this);case"column":return function(t){let e=S(t.columns,1);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[n]*=t.get(r,n);return e}(this);case void 0:return function(t){let e=1;for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)e*=t.get(r,n);return e}(this);default:throw new Error(`invalid option: ${t}`)}}mean(t){const e=this.sum(t);switch(t){case"row":for(let t=0;t<this.rows;t++)e[t]/=this.columns;return e;case"column":for(let t=0;t<this.columns;t++)e[t]/=this.rows;return e;case void 0:return e/this.size;default:throw new Error(`invalid option: ${t}`)}}variance(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");const{unbiased:r=!0,mean:n=this.mean(t)}=e;if("boolean"!=typeof r)throw new TypeError("unbiased must be a boolean");switch(t){case"row":if(!h(n))throw new TypeError("mean must be an array");return function(t,e,r){const n=t.rows,s=t.columns,i=[];for(let o=0;o<n;o++){let n=0,h=0,a=0;for(let e=0;e<s;e++)a=t.get(o,e)-r[o],n+=a,h+=a*a;e?i.push((h-n*n/s)/(s-1)):i.push((h-n*n/s)/s)}return i}(this,r,n);case"column":if(!h(n))throw new TypeError("mean must be an array");return function(t,e,r){const n=t.rows,s=t.columns,i=[];for(let o=0;o<s;o++){let s=0,h=0,a=0;for(let e=0;e<n;e++)a=t.get(e,o)-r[o],s+=a,h+=a*a;e?i.push((h-s*s/n)/(n-1)):i.push((h-s*s/n)/n)}return i}(this,r,n);case void 0:if("number"!=typeof n)throw new TypeError("mean must be a number");return function(t,e,r){const n=t.rows,s=t.columns,i=n*s;let o=0,h=0,a=0;for(let e=0;e<n;e++)for(let n=0;n<s;n++)a=t.get(e,n)-r,o+=a,h+=a*a;return e?(h-o*o/i)/(i-1):(h-o*o/i)/i}(this,r,n);default:throw new Error(`invalid option: ${t}`)}}standardDeviation(t,e){"object"==typeof t&&(e=t,t=void 0);const r=this.variance(t,e);if(void 0===t)return Math.sqrt(r);for(let t=0;t<r.length;t++)r[t]=Math.sqrt(r[t]);return r}center(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");const{center:r=this.mean(t)}=e;switch(t){case"row":if(!h(r))throw new TypeError("center must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e[r])}(this,r),this;case"column":if(!h(r))throw new TypeError("center must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e[n])}(this,r),this;case void 0:if("number"!=typeof r)throw new TypeError("center must be a number");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e)}(this,r),this;default:throw new Error(`invalid option: ${t}`)}}scale(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");let r=e.scale;switch(t){case"row":if(void 0===r)r=function(t){const e=[];for(let r=0;r<t.rows;r++){let n=0;for(let e=0;e<t.columns;e++)n+=Math.pow(t.get(r,e),2)/(t.columns-1);e.push(Math.sqrt(n))}return e}(this);else if(!h(r))throw new TypeError("scale must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e[r])}(this,r),this;case"column":if(void 0===r)r=function(t){const e=[];for(let r=0;r<t.columns;r++){let n=0;for(let e=0;e<t.rows;e++)n+=Math.pow(t.get(e,r),2)/(t.rows-1);e.push(Math.sqrt(n))}return e}(this);else if(!h(r))throw new TypeError("scale must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e[n])}(this,r),this;case void 0:if(void 0===r)r=function(t){const e=t.size-1;let r=0;for(let n=0;n<t.columns;n++)for(let s=0;s<t.rows;s++)r+=Math.pow(t.get(s,n),2)/e;return Math.sqrt(r)}(this);else if("number"!=typeof r)throw new TypeError("scale must be a number");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e)}(this,r),this;default:throw new Error(`invalid option: ${t}`)}}toString(t){return p(this,t)}}function N(t,e){return t-e}R.prototype.klass="Matrix","undefined"!=typeof Symbol&&(R.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return p(this)}),R.random=R.rand,R.randomInt=R.randInt,R.diagonal=R.diag,R.prototype.diagonal=R.prototype.diag,R.identity=R.eye,R.prototype.negate=R.prototype.neg,R.prototype.tensorProduct=R.prototype.kroneckerProduct;class k extends R{constructor(t,e){if(super(),k.isMatrix(t))return t.clone();if(Number.isInteger(t)&&t>=0){if(this.data=[],!(Number.isInteger(e)&&e>=0))throw new TypeError("nColumns must be a positive integer");for(let r=0;r<t;r++)this.data.push(new Float64Array(e))}else{if(!h(t))throw new TypeError("First argument must be a positive number or an array");{const r=t;if("number"!=typeof(e=(t=r.length)?r[0].length:0))throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let n=0;n<t;n++){if(r[n].length!==e)throw new RangeError("Inconsistent array dimensions");if(!r[n].every((t=>"number"==typeof t)))throw new TypeError("Input data contains non-numeric values");this.data.push(Float64Array.from(r[n]))}}}this.rows=t,this.columns=e}set(t,e,r){return this.data[t][e]=r,this}get(t,e){return this.data[t][e]}removeRow(t){return y(this,t),this.data.splice(t,1),this.rows-=1,this}addRow(t,e){return void 0===e&&(e=t,t=this.rows),y(this,t,!0),e=Float64Array.from(b(this,e)),this.data.splice(t,0,e),this.rows+=1,this}removeColumn(t){v(this,t);for(let e=0;e<this.rows;e++){const r=new Float64Array(this.columns-1);for(let n=0;n<t;n++)r[n]=this.data[e][n];for(let n=t+1;n<this.columns;n++)r[n-1]=this.data[e][n];this.data[e]=r}return this.columns-=1,this}addColumn(t,e){void 0===e&&(e=t,t=this.columns),v(this,t,!0),e=M(this,e);for(let r=0;r<this.rows;r++){const n=new Float64Array(this.columns+1);let s=0;for(;s<t;s++)n[s]=this.data[r][s];for(n[s++]=e[r];s<this.columns+1;s++)n[s]=this.data[r][s-1];this.data[r]=n}return this.columns+=1,this}}!function(t,e){t.prototype.add=function(t){return"number"==typeof t?this.addS(t):this.addM(t)},t.prototype.addS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t);return this},t.prototype.addM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t.get(e,r));return this},t.add=function(t,r){return new e(t).add(r)},t.prototype.sub=function(t){return"number"==typeof t?this.subS(t):this.subM(t)},t.prototype.subS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t);return this},t.prototype.subM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t.get(e,r));return this},t.sub=function(t,r){return new e(t).sub(r)},t.prototype.subtract=t.prototype.sub,t.prototype.subtractS=t.prototype.subS,t.prototype.subtractM=t.prototype.subM,t.subtract=t.sub,t.prototype.mul=function(t){return"number"==typeof t?this.mulS(t):this.mulM(t)},t.prototype.mulS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t);return this},t.prototype.mulM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t.get(e,r));return this},t.mul=function(t,r){return new e(t).mul(r)},t.prototype.multiply=t.prototype.mul,t.prototype.multiplyS=t.prototype.mulS,t.prototype.multiplyM=t.prototype.mulM,t.multiply=t.mul,t.prototype.div=function(t){return"number"==typeof t?this.divS(t):this.divM(t)},t.prototype.divS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t);return this},t.prototype.divM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t.get(e,r));return this},t.div=function(t,r){return new e(t).div(r)},t.prototype.divide=t.prototype.div,t.prototype.divideS=t.prototype.divS,t.prototype.divideM=t.prototype.divM,t.divide=t.div,t.prototype.mod=function(t){return"number"==typeof t?this.modS(t):this.modM(t)},t.prototype.modS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)%t);return this},t.prototype.modM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)%t.get(e,r));return this},t.mod=function(t,r){return new e(t).mod(r)},t.prototype.modulus=t.prototype.mod,t.prototype.modulusS=t.prototype.modS,t.prototype.modulusM=t.prototype.modM,t.modulus=t.mod,t.prototype.and=function(t){return"number"==typeof t?this.andS(t):this.andM(t)},t.prototype.andS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)&t);return this},t.prototype.andM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)&t.get(e,r));return this},t.and=function(t,r){return new e(t).and(r)},t.prototype.or=function(t){return"number"==typeof t?this.orS(t):this.orM(t)},t.prototype.orS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)|t);return this},t.prototype.orM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)|t.get(e,r));return this},t.or=function(t,r){return new e(t).or(r)},t.prototype.xor=function(t){return"number"==typeof t?this.xorS(t):this.xorM(t)},t.prototype.xorS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)^t);return this},t.prototype.xorM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)^t.get(e,r));return this},t.xor=function(t,r){return new e(t).xor(r)},t.prototype.leftShift=function(t){return"number"==typeof t?this.leftShiftS(t):this.leftShiftM(t)},t.prototype.leftShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)<<t);return this},t.prototype.leftShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)<<t.get(e,r));return this},t.leftShift=function(t,r){return new e(t).leftShift(r)},t.prototype.signPropagatingRightShift=function(t){return"number"==typeof t?this.signPropagatingRightShiftS(t):this.signPropagatingRightShiftM(t)},t.prototype.signPropagatingRightShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>t);return this},t.prototype.signPropagatingRightShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>t.get(e,r));return this},t.signPropagatingRightShift=function(t,r){return new e(t).signPropagatingRightShift(r)},t.prototype.rightShift=function(t){return"number"==typeof t?this.rightShiftS(t):this.rightShiftM(t)},t.prototype.rightShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>>t);return this},t.prototype.rightShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>>t.get(e,r));return this},t.rightShift=function(t,r){return new e(t).rightShift(r)},t.prototype.zeroFillRightShift=t.prototype.rightShift,t.prototype.zeroFillRightShiftS=t.prototype.rightShiftS,t.prototype.zeroFillRightShiftM=t.prototype.rightShiftM,t.zeroFillRightShift=t.rightShift,t.prototype.not=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,~this.get(t,e));return this},t.not=function(t){return new e(t).not()},t.prototype.abs=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.abs(this.get(t,e)));return this},t.abs=function(t){return new e(t).abs()},t.prototype.acos=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.acos(this.get(t,e)));return this},t.acos=function(t){return new e(t).acos()},t.prototype.acosh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.acosh(this.get(t,e)));return this},t.acosh=function(t){return new e(t).acosh()},t.prototype.asin=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.asin(this.get(t,e)));return this},t.asin=function(t){return new e(t).asin()},t.prototype.asinh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.asinh(this.get(t,e)));return this},t.asinh=function(t){return new e(t).asinh()},t.prototype.atan=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.atan(this.get(t,e)));return this},t.atan=function(t){return new e(t).atan()},t.prototype.atanh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.atanh(this.get(t,e)));return this},t.atanh=function(t){return new e(t).atanh()},t.prototype.cbrt=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cbrt(this.get(t,e)));return this},t.cbrt=function(t){return new e(t).cbrt()},t.prototype.ceil=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.ceil(this.get(t,e)));return this},t.ceil=function(t){return new e(t).ceil()},t.prototype.clz32=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.clz32(this.get(t,e)));return this},t.clz32=function(t){return new e(t).clz32()},t.prototype.cos=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cos(this.get(t,e)));return this},t.cos=function(t){return new e(t).cos()},t.prototype.cosh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cosh(this.get(t,e)));return this},t.cosh=function(t){return new e(t).cosh()},t.prototype.exp=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.exp(this.get(t,e)));return this},t.exp=function(t){return new e(t).exp()},t.prototype.expm1=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.expm1(this.get(t,e)));return this},t.expm1=function(t){return new e(t).expm1()},t.prototype.floor=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.floor(this.get(t,e)));return this},t.floor=function(t){return new e(t).floor()},t.prototype.fround=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.fround(this.get(t,e)));return this},t.fround=function(t){return new e(t).fround()},t.prototype.log=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log(this.get(t,e)));return this},t.log=function(t){return new e(t).log()},t.prototype.log1p=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log1p(this.get(t,e)));return this},t.log1p=function(t){return new e(t).log1p()},t.prototype.log10=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log10(this.get(t,e)));return this},t.log10=function(t){return new e(t).log10()},t.prototype.log2=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log2(this.get(t,e)));return this},t.log2=function(t){return new e(t).log2()},t.prototype.round=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.round(this.get(t,e)));return this},t.round=function(t){return new e(t).round()},t.prototype.sign=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sign(this.get(t,e)));return this},t.sign=function(t){return new e(t).sign()},t.prototype.sin=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sin(this.get(t,e)));return this},t.sin=function(t){return new e(t).sin()},t.prototype.sinh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sinh(this.get(t,e)));return this},t.sinh=function(t){return new e(t).sinh()},t.prototype.sqrt=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sqrt(this.get(t,e)));return this},t.sqrt=function(t){return new e(t).sqrt()},t.prototype.tan=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.tan(this.get(t,e)));return this},t.tan=function(t){return new e(t).tan()},t.prototype.tanh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.tanh(this.get(t,e)));return this},t.tanh=function(t){return new e(t).tanh()},t.prototype.trunc=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.trunc(this.get(t,e)));return this},t.trunc=function(t){return new e(t).trunc()},t.pow=function(t,r){return new e(t).pow(r)},t.prototype.pow=function(t){return"number"==typeof t?this.powS(t):this.powM(t)},t.prototype.powS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,Math.pow(this.get(e,r),t));return this},t.prototype.powM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,Math.pow(this.get(e,r),t.get(e,r)));return this}}(R,k);class I extends R{constructor(t){super(),this.data=t,this.rows=t.length,this.columns=t[0].length}set(t,e,r){return this.data[t][e]=r,this}get(t,e){return this.data[t][e]}}class A{constructor(t){let e,r,n,s,i,o,h,a,l,u=(t=I.checkMatrix(t)).clone(),c=u.rows,f=u.columns,g=new Float64Array(c),m=1;for(e=0;e<c;e++)g[e]=e;for(a=new Float64Array(c),r=0;r<f;r++){for(e=0;e<c;e++)a[e]=u.get(e,r);for(e=0;e<c;e++){for(l=Math.min(e,r),i=0,n=0;n<l;n++)i+=u.get(e,n)*a[n];a[e]-=i,u.set(e,r,a[e])}for(s=r,e=r+1;e<c;e++)Math.abs(a[e])>Math.abs(a[s])&&(s=e);if(s!==r){for(n=0;n<f;n++)o=u.get(s,n),u.set(s,n,u.get(r,n)),u.set(r,n,o);h=g[s],g[s]=g[r],g[r]=h,m=-m}if(r<c&&0!==u.get(r,r))for(e=r+1;e<c;e++)u.set(e,r,u.get(e,r)/u.get(r,r))}this.LU=u,this.pivotVector=g,this.pivotSign=m}isSingular(){let t=this.LU,e=t.columns;for(let r=0;r<e;r++)if(0===t.get(r,r))return!0;return!1}solve(t){t=k.checkMatrix(t);let e=this.LU;if(e.rows!==t.rows)throw new Error("Invalid matrix dimensions");if(this.isSingular())throw new Error("LU matrix is singular");let r,n,s,i=t.columns,o=t.subMatrixRow(this.pivotVector,0,i-1),h=e.columns;for(s=0;s<h;s++)for(r=s+1;r<h;r++)for(n=0;n<i;n++)o.set(r,n,o.get(r,n)-o.get(s,n)*e.get(r,s));for(s=h-1;s>=0;s--){for(n=0;n<i;n++)o.set(s,n,o.get(s,n)/e.get(s,s));for(r=0;r<s;r++)for(n=0;n<i;n++)o.set(r,n,o.get(r,n)-o.get(s,n)*e.get(r,s))}return o}get determinant(){let t=this.LU;if(!t.isSquare())throw new Error("Matrix must be square");let e=this.pivotSign,r=t.columns;for(let n=0;n<r;n++)e*=t.get(n,n);return e}get lowerTriangularMatrix(){let t=this.LU,e=t.rows,r=t.columns,n=new k(e,r);for(let s=0;s<e;s++)for(let e=0;e<r;e++)s>e?n.set(s,e,t.get(s,e)):s===e?n.set(s,e,1):n.set(s,e,0);return n}get upperTriangularMatrix(){let t=this.LU,e=t.rows,r=t.columns,n=new k(e,r);for(let s=0;s<e;s++)for(let e=0;e<r;e++)s<=e?n.set(s,e,t.get(s,e)):n.set(s,e,0);return n}get pivotPermutationVector(){return Array.from(this.pivotVector)}}function z(t,e){let r=0;return Math.abs(t)>Math.abs(e)?(r=e/t,Math.abs(t)*Math.sqrt(1+r*r)):0!==e?(r=t/e,Math.abs(e)*Math.sqrt(1+r*r)):0}class C{constructor(t){let e,r,n,s,i=(t=I.checkMatrix(t)).clone(),o=t.rows,h=t.columns,a=new Float64Array(h);for(n=0;n<h;n++){let t=0;for(e=n;e<o;e++)t=z(t,i.get(e,n));if(0!==t){for(i.get(n,n)<0&&(t=-t),e=n;e<o;e++)i.set(e,n,i.get(e,n)/t);for(i.set(n,n,i.get(n,n)+1),r=n+1;r<h;r++){for(s=0,e=n;e<o;e++)s+=i.get(e,n)*i.get(e,r);for(s=-s/i.get(n,n),e=n;e<o;e++)i.set(e,r,i.get(e,r)+s*i.get(e,n))}}a[n]=-t}this.QR=i,this.Rdiag=a}solve(t){t=k.checkMatrix(t);let e=this.QR,r=e.rows;if(t.rows!==r)throw new Error("Matrix row dimensions must agree");if(!this.isFullRank())throw new Error("Matrix is rank deficient");let n,s,i,o,h=t.columns,a=t.clone(),l=e.columns;for(i=0;i<l;i++)for(s=0;s<h;s++){for(o=0,n=i;n<r;n++)o+=e.get(n,i)*a.get(n,s);for(o=-o/e.get(i,i),n=i;n<r;n++)a.set(n,s,a.get(n,s)+o*e.get(n,i))}for(i=l-1;i>=0;i--){for(s=0;s<h;s++)a.set(i,s,a.get(i,s)/this.Rdiag[i]);for(n=0;n<i;n++)for(s=0;s<h;s++)a.set(n,s,a.get(n,s)-a.get(i,s)*e.get(n,i))}return a.subMatrix(0,l-1,0,h-1)}isFullRank(){let t=this.QR.columns;for(let e=0;e<t;e++)if(0===this.Rdiag[e])return!1;return!0}get upperTriangularMatrix(){let t,e,r=this.QR,n=r.columns,s=new k(n,n);for(t=0;t<n;t++)for(e=0;e<n;e++)t<e?s.set(t,e,r.get(t,e)):t===e?s.set(t,e,this.Rdiag[t]):s.set(t,e,0);return s}get orthogonalMatrix(){let t,e,r,n,s=this.QR,i=s.rows,o=s.columns,h=new k(i,o);for(r=o-1;r>=0;r--){for(t=0;t<i;t++)h.set(t,r,0);for(h.set(r,r,1),e=r;e<o;e++)if(0!==s.get(r,r)){for(n=0,t=r;t<i;t++)n+=s.get(t,r)*h.get(t,e);for(n=-n/s.get(r,r),t=r;t<i;t++)h.set(t,e,h.get(t,e)+n*s.get(t,r))}}return h}}class F{constructor(t,e={}){if((t=I.checkMatrix(t)).isEmpty())throw new Error("Matrix must be non-empty");let r=t.rows,n=t.columns;const{computeLeftSingularVectors:s=!0,computeRightSingularVectors:i=!0,autoTranspose:o=!1}=e;let h,a=Boolean(s),l=Boolean(i),u=!1;if(r<n)if(o){h=t.transpose(),r=h.rows,n=h.columns,u=!0;let e=a;a=l,l=e}else h=t.clone(),console.warn("Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose");else h=t.clone();let c=Math.min(r,n),f=Math.min(r+1,n),g=new Float64Array(f),m=new k(r,c),p=new k(n,n),d=new Float64Array(n),w=new Float64Array(r),y=new Float64Array(f);for(let t=0;t<f;t++)y[t]=t;let v=Math.min(r-1,n),b=Math.max(0,Math.min(n-2,r)),M=Math.max(v,b);for(let t=0;t<M;t++){if(t<v){g[t]=0;for(let e=t;e<r;e++)g[t]=z(g[t],h.get(e,t));if(0!==g[t]){h.get(t,t)<0&&(g[t]=-g[t]);for(let e=t;e<r;e++)h.set(e,t,h.get(e,t)/g[t]);h.set(t,t,h.get(t,t)+1)}g[t]=-g[t]}for(let e=t+1;e<n;e++){if(t<v&&0!==g[t]){let n=0;for(let s=t;s<r;s++)n+=h.get(s,t)*h.get(s,e);n=-n/h.get(t,t);for(let s=t;s<r;s++)h.set(s,e,h.get(s,e)+n*h.get(s,t))}d[e]=h.get(t,e)}if(a&&t<v)for(let e=t;e<r;e++)m.set(e,t,h.get(e,t));if(t<b){d[t]=0;for(let e=t+1;e<n;e++)d[t]=z(d[t],d[e]);if(0!==d[t]){d[t+1]<0&&(d[t]=0-d[t]);for(let e=t+1;e<n;e++)d[e]/=d[t];d[t+1]+=1}if(d[t]=-d[t],t+1<r&&0!==d[t]){for(let e=t+1;e<r;e++)w[e]=0;for(let e=t+1;e<r;e++)for(let r=t+1;r<n;r++)w[e]+=d[r]*h.get(e,r);for(let e=t+1;e<n;e++){let n=-d[e]/d[t+1];for(let s=t+1;s<r;s++)h.set(s,e,h.get(s,e)+n*w[s])}}if(l)for(let e=t+1;e<n;e++)p.set(e,t,d[e])}}let x=Math.min(n,r+1);if(v<n&&(g[v]=h.get(v,v)),r<x&&(g[x-1]=0),b+1<x&&(d[b]=h.get(b,x-1)),d[x-1]=0,a){for(let t=v;t<c;t++){for(let e=0;e<r;e++)m.set(e,t,0);m.set(t,t,1)}for(let t=v-1;t>=0;t--)if(0!==g[t]){for(let e=t+1;e<c;e++){let n=0;for(let s=t;s<r;s++)n+=m.get(s,t)*m.get(s,e);n=-n/m.get(t,t);for(let s=t;s<r;s++)m.set(s,e,m.get(s,e)+n*m.get(s,t))}for(let e=t;e<r;e++)m.set(e,t,-m.get(e,t));m.set(t,t,1+m.get(t,t));for(let e=0;e<t-1;e++)m.set(e,t,0)}else{for(let e=0;e<r;e++)m.set(e,t,0);m.set(t,t,1)}}if(l)for(let t=n-1;t>=0;t--){if(t<b&&0!==d[t])for(let e=t+1;e<n;e++){let r=0;for(let s=t+1;s<n;s++)r+=p.get(s,t)*p.get(s,e);r=-r/p.get(t+1,t);for(let s=t+1;s<n;s++)p.set(s,e,p.get(s,e)+r*p.get(s,t))}for(let e=0;e<n;e++)p.set(e,t,0);p.set(t,t,1)}let S=x-1,_=0,E=Number.EPSILON;for(;x>0;){let t,e;for(t=x-2;t>=-1&&-1!==t;t--){const e=Number.MIN_VALUE+E*Math.abs(g[t]+Math.abs(g[t+1]));if(Math.abs(d[t])<=e||Number.isNaN(d[t])){d[t]=0;break}}if(t===x-2)e=4;else{let r;for(r=x-1;r>=t&&r!==t;r--){let e=(r!==x?Math.abs(d[r]):0)+(r!==t+1?Math.abs(d[r-1]):0);if(Math.abs(g[r])<=E*e){g[r]=0;break}}r===t?e=3:r===x-1?e=1:(e=2,t=r)}switch(t++,e){case 1:{let e=d[x-2];d[x-2]=0;for(let r=x-2;r>=t;r--){let s=z(g[r],e),i=g[r]/s,o=e/s;if(g[r]=s,r!==t&&(e=-o*d[r-1],d[r-1]=i*d[r-1]),l)for(let t=0;t<n;t++)s=i*p.get(t,r)+o*p.get(t,x-1),p.set(t,x-1,-o*p.get(t,r)+i*p.get(t,x-1)),p.set(t,r,s)}break}case 2:{let e=d[t-1];d[t-1]=0;for(let n=t;n<x;n++){let s=z(g[n],e),i=g[n]/s,o=e/s;if(g[n]=s,e=-o*d[n],d[n]=i*d[n],a)for(let e=0;e<r;e++)s=i*m.get(e,n)+o*m.get(e,t-1),m.set(e,t-1,-o*m.get(e,n)+i*m.get(e,t-1)),m.set(e,n,s)}break}case 3:{const e=Math.max(Math.abs(g[x-1]),Math.abs(g[x-2]),Math.abs(d[x-2]),Math.abs(g[t]),Math.abs(d[t])),s=g[x-1]/e,i=g[x-2]/e,o=d[x-2]/e,h=g[t]/e,u=d[t]/e,c=((i+s)*(i-s)+o*o)/2,f=s*o*(s*o);let w=0;0===c&&0===f||(w=c<0?0-Math.sqrt(c*c+f):Math.sqrt(c*c+f),w=f/(c+w));let y=(h+s)*(h-s)+w,v=h*u;for(let e=t;e<x-1;e++){let s=z(y,v);0===s&&(s=Number.MIN_VALUE);let i=y/s,o=v/s;if(e!==t&&(d[e-1]=s),y=i*g[e]+o*d[e],d[e]=i*d[e]-o*g[e],v=o*g[e+1],g[e+1]=i*g[e+1],l)for(let t=0;t<n;t++)s=i*p.get(t,e)+o*p.get(t,e+1),p.set(t,e+1,-o*p.get(t,e)+i*p.get(t,e+1)),p.set(t,e,s);if(s=z(y,v),0===s&&(s=Number.MIN_VALUE),i=y/s,o=v/s,g[e]=s,y=i*d[e]+o*g[e+1],g[e+1]=-o*d[e]+i*g[e+1],v=o*d[e+1],d[e+1]=i*d[e+1],a&&e<r-1)for(let t=0;t<r;t++)s=i*m.get(t,e)+o*m.get(t,e+1),m.set(t,e+1,-o*m.get(t,e)+i*m.get(t,e+1)),m.set(t,e,s)}d[x-2]=y,_+=1;break}case 4:if(g[t]<=0&&(g[t]=g[t]<0?-g[t]:0,l))for(let e=0;e<=S;e++)p.set(e,t,-p.get(e,t));for(;t<S&&!(g[t]>=g[t+1]);){let e=g[t];if(g[t]=g[t+1],g[t+1]=e,l&&t<n-1)for(let r=0;r<n;r++)e=p.get(r,t+1),p.set(r,t+1,p.get(r,t)),p.set(r,t,e);if(a&&t<r-1)for(let n=0;n<r;n++)e=m.get(n,t+1),m.set(n,t+1,m.get(n,t)),m.set(n,t,e);t++}_=0,x--}}if(u){let t=p;p=m,m=t}this.m=r,this.n=n,this.s=g,this.U=m,this.V=p}solve(t){let e=t,r=this.threshold,n=this.s.length,s=k.zeros(n,n);for(let t=0;t<n;t++)Math.abs(this.s[t])<=r?s.set(t,t,0):s.set(t,t,1/this.s[t]);let i=this.U,o=this.rightSingularVectors,h=o.mmul(s),a=o.rows,l=i.rows,u=k.zeros(a,l);for(let t=0;t<a;t++)for(let e=0;e<l;e++){let r=0;for(let s=0;s<n;s++)r+=h.get(t,s)*i.get(e,s);u.set(t,e,r)}return u.mmul(e)}solveForDiagonal(t){return this.solve(k.diag(t))}inverse(){let t=this.V,e=this.threshold,r=t.rows,n=t.columns,s=new k(r,this.s.length);for(let i=0;i<r;i++)for(let r=0;r<n;r++)Math.abs(this.s[r])>e&&s.set(i,r,t.get(i,r)/this.s[r]);let i=this.U,o=i.rows,h=i.columns,a=new k(r,o);for(let t=0;t<r;t++)for(let e=0;e<o;e++){let r=0;for(let n=0;n<h;n++)r+=s.get(t,n)*i.get(e,n);a.set(t,e,r)}return a}get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]}get norm2(){return this.s[0]}get rank(){let t=Math.max(this.m,this.n)*this.s[0]*Number.EPSILON,e=0,r=this.s;for(let n=0,s=r.length;n<s;n++)r[n]>t&&e++;return e}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return k.diag(this.s)}}function T(t,e,r,n,s){let i=r*n*n,o=k.eye(e.length,e.length,i);const h=s(e);let a=new Float64Array(t.x.length);for(let e=0;e<t.x.length;e++)a[e]=h(t.x[e]);let l=function(t,e,r,n,s){const i=r.length,o=t.x.length;let h=new Array(i);for(let a=0;a<i;a++){h[a]=new Array(o);let i=r.slice();i[a]+=n;let l=s(i);for(let r=0;r<o;r++)h[a][r]=e[r]-l(t.x[r])}return new k(h)}(t,a,e,n,s),u=function(t,e){const r=t.x.length;let n=new Array(r);for(let s=0;s<r;s++)n[s]=[t.y[s]-e[s]];return new k(n)}(t,a),c=function(t,e=!1){return t=I.checkMatrix(t),e?new F(t).inverse():function(t,e,r=!1){return t=I.checkMatrix(t),e=I.checkMatrix(e),r?new F(t).solve(e):t.isSquare()?new A(t).solve(e):new C(t).solve(e)}(t,k.eye(t.rows))}(o.add(l.mmul(l.transpose())));return(e=(e=new k([e])).sub(c.mmul(l).mmul(u).mul(n).transpose())).to1DArray()}function O(t,e,r={}){let{maxIterations:n=100,gradientDifference:o=.1,damping:h=0,errorTolerance:a=.01,minValues:l,maxValues:u,initialValues:c}=r;if(h<=0)throw new Error("The damping option must be a positive number");if(!t.x||!t.y)throw new Error("The data parameter must have x and y elements");if(!s(t.x)||t.x.length<2||!s(t.y)||t.y.length<2)throw new Error("The data parameter elements must be an array with more than 2 points");if(t.x.length!==t.y.length)throw new Error("The data parameter elements must have the same size");let f=c||new Array(e.length).fill(1),g=f.length;if(u=u||new Array(g).fill(Number.MAX_SAFE_INTEGER),l=l||new Array(g).fill(Number.MIN_SAFE_INTEGER),u.length!==l.length)throw new Error("minValues and maxValues must be the same size");if(!s(f))throw new Error("initialValues must be an array");let m,p=i(t,f,e),d=p<=a;for(m=0;m<n&&!d;m++){f=T(t,f,h,o,e);for(let t=0;t<g;t++)f[t]=Math.min(Math.max(l[t],f[t]),u[t]);if(p=i(t,f,e),isNaN(p))break;d=p<=a}return{parameterValues:f,parameterError:p,iterations:m}}},9378:function(t,e,r){var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var s=n(r(4517));function i(t,e){var r=function(r){return s.empty(t).map((function(){return s.filled(e,r)}))},n=[];return n.push(r(-1)),n.push(r(1/0)),n.push(r(0)),n}function o(t,e,r,n,s){e=Math.floor(e);var i=t[0][e],o=t[1][e];if(t[2][e],r>=o[0])return 0;for(var a=0;a<i.length;a++)if(n===i[a])return 0;return h(t,e,r,n,s)}function h(t,e,r,n,s){var i=t[0][e],o=t[1][e],h=t[2][e];if(r>=o[0])return 0;o[0]=r,i[0]=n,h[0]=s;for(var a=0,l=0;;){var u=2*a+1,c=u+1,f=t[0][0].length;if(u>=f)break;if(c>=f){if(!(o[u]>r))break;l=u}else if(o[u]>=o[c]){if(!(r<o[u]))break;l=u}else{if(!(r<o[c]))break;l=c}o[a]=o[l],i[a]=i[l],h[a]=h[l],a=l}return o[a]=r,i[a]=n,h[a]=s,1}function a(t,e,r,n){for(;2*n+1<r;){var s=2*n+1,i=s+1,o=n;if(t[o]<t[s]&&(o=s),i<r&&t[o]<t[i]&&(o=i),o===n)break;var h=t[n];t[n]=t[o],t[o]=h;var a=e[n];e[n]=e[o],e[o]=a,n=o}}e.makeHeap=i,e.rejectionSample=function(t,e,r){for(var n=s.zeros(t),i=0;i<t;i++){for(var o=!0,h=0;o;){h=s.tauRandInt(e,r);for(var a=!1,l=0;l<i;l++)if(h===n[l]){a=!0;break}a||(o=!1)}n[i]=h}return n},e.heapPush=o,e.uncheckedHeapPush=h,e.buildCandidates=function(t,e,r,n,h){for(var a=i(e,n),l=0;l<e;l++)for(var u=0;u<r;u++)if(!(t[0][l][u]<0)){var c=t[0][l][u],f=t[2][l][u],g=s.tauRand(h);o(a,l,g,c,f),o(a,c,g,l,f),t[2][l][u]=0}return a},e.deheapSort=function(t){for(var e=t[0],r=t[1],n=0;n<e.length;n++)for(var s=e[n],i=r[n],o=0;o<s.length-1;o++){var h=s.length-o-1,l=i.length-o-1,u=s[0];s[0]=s[h],s[h]=u;var c=i[0];i[0]=i[l],i[l]=c,a(i,s,l,0)}return{indices:e,weights:r}},e.smallestFlagged=function(t,e){for(var r=t[0][e],n=t[1][e],s=t[2][e],i=1/0,o=-1,h=0;h>r.length;h++)1===s[h]&&n[h]<i&&(i=n[h],o=h);return o>=0?(s[o]=0,Math.floor(r[o])):-1}},4221:(t,e,r)=>{var n=r(4364);e.u=n.UMAP},5686:function(t,e,r){var n,s=this&&this.__read||function(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,s,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){s={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(s)throw s.error}}return o},i=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}},o=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var h=o(r(4517)),a=function(){function t(t,e,r,n){if(this.entries=new Map,this.nRows=0,this.nCols=0,t.length!==e.length||t.length!==r.length)throw new Error("rows, cols and values arrays must all have the same length");this.nRows=n[0],this.nCols=n[1];for(var s=0;s<r.length;s++){var i=t[s],o=e[s];this.checkDims(i,o);var h=this.makeKey(i,o);this.entries.set(h,{value:r[s],row:i,col:o})}}return t.prototype.makeKey=function(t,e){return t+":"+e},t.prototype.checkDims=function(t,e){if(!(t<this.nRows&&e<this.nCols))throw new Error("row and/or col specified outside of matrix dimensions")},t.prototype.set=function(t,e,r){this.checkDims(t,e);var n=this.makeKey(t,e);this.entries.has(n)?this.entries.get(n).value=r:this.entries.set(n,{value:r,row:t,col:e})},t.prototype.get=function(t,e,r){void 0===r&&(r=0),this.checkDims(t,e);var n=this.makeKey(t,e);return this.entries.has(n)?this.entries.get(n).value:r},t.prototype.getAll=function(t){void 0===t&&(t=!0);var e=[];return this.entries.forEach((function(t){e.push(t)})),t&&e.sort((function(t,e){return t.row===e.row?t.col-e.col:t.row-e.row})),e},t.prototype.getDims=function(){return[this.nRows,this.nCols]},t.prototype.getRows=function(){return Array.from(this.entries,(function(t){var e=s(t,2);return e[0],e[1].row}))},t.prototype.getCols=function(){return Array.from(this.entries,(function(t){var e=s(t,2);return e[0],e[1].col}))},t.prototype.getValues=function(){return Array.from(this.entries,(function(t){var e=s(t,2);return e[0],e[1].value}))},t.prototype.forEach=function(t){this.entries.forEach((function(e){return t(e.value,e.row,e.col)}))},t.prototype.map=function(e){var r=[];this.entries.forEach((function(t){r.push(e(t.value,t.row,t.col))}));var n=[this.nRows,this.nCols];return new t(this.getRows(),this.getCols(),r,n)},t.prototype.toArray=function(){var t=this,e=h.empty(this.nRows).map((function(){return h.zeros(t.nCols)}));return this.entries.forEach((function(t){e[t.row][t.col]=t.value})),e},t}();e.SparseMatrix=a,e.transpose=function(t){var e=[],r=[],n=[];t.forEach((function(t,s,i){e.push(s),r.push(i),n.push(t)}));var s=[t.nCols,t.nRows];return new a(r,e,n,s)},e.identity=function(t){for(var e=s(t,1)[0],r=new a([],[],[],t),n=0;n<e;n++)r.set(n,n,1);return r},e.pairwiseMultiply=function(t,e){return u(t,e,(function(t,e){return t*e}))},e.add=function(t,e){return u(t,e,(function(t,e){return t+e}))},e.subtract=function(t,e){return u(t,e,(function(t,e){return t-e}))},e.maximum=function(t,e){return u(t,e,(function(t,e){return t>e?t:e}))},e.multiplyScalar=function(t,e){return t.map((function(t){return t*e}))},e.eliminateZeros=function(t){for(var e=new Set,r=t.getValues(),n=t.getRows(),s=t.getCols(),i=0;i<r.length;i++)0===r[i]&&e.add(i);var o=function(t,r){return!e.has(r)},h=r.filter(o),l=n.filter(o),u=s.filter(o);return new a(l,u,h,t.getDims())},e.normalize=function(t,e){var r,n;void 0===e&&(e="l2");var s=l[e],o=new Map;t.forEach((function(t,e,r){var n=o.get(e)||[];n.push(r),o.set(e,n)}));var h=new a([],[],[],t.getDims()),u=function(e){for(var r=o.get(e).sort(),n=r.map((function(r){return t.get(e,r)})),i=s(n),a=0;a<i.length;a++)h.set(e,r[a],i[a])};try{for(var c=i(o.keys()),f=c.next();!f.done;f=c.next())u(f.value)}catch(t){r={error:t}}finally{try{f&&!f.done&&(n=c.return)&&n.call(c)}finally{if(r)throw r.error}}return h};var l=((n={}).max=function(t){for(var e=-1/0,r=0;r<t.length;r++)e=t[r]>e?t[r]:e;return t.map((function(t){return t/e}))},n.l1=function(t){for(var e=0,r=0;r<t.length;r++)e+=t[r];return t.map((function(t){return t/e}))},n.l2=function(t){for(var e=0,r=0;r<t.length;r++)e+=Math.pow(t[r],2);return t.map((function(t){return Math.sqrt(Math.pow(t,2)/e)}))},n);function u(t,e,r){for(var n=new Set,s=[],i=[],o=[],h=function(n,h){s.push(n),i.push(h);var a=r(t.get(n,h),e.get(n,h));o.push(a)},l=t.getValues(),u=t.getRows(),c=t.getCols(),f=0;f<l.length;f++){var g=(w=u[f])+":"+(y=c[f]);n.add(g),h(w,y)}var m=e.getValues(),p=e.getRows(),d=e.getCols();for(f=0;f<m.length;f++){var w,y;g=(w=p[f])+":"+(y=d[f]),n.has(g)||h(w,y)}var v=[t.nRows,t.nCols];return new a(s,i,o,v)}e.getCSR=function(t){var e=[];t.forEach((function(t,r,n){e.push({value:t,row:r,col:n})})),e.sort((function(t,e){return t.row===e.row?t.col-e.col:t.row-e.row}));for(var r=[],n=[],s=[],i=-1,o=0;o<e.length;o++){var h=e[o],a=h.row,l=h.col,u=h.value;a!==i&&(i=a,s.push(o)),r.push(l),n.push(u)}return{indices:r,values:n,indptr:s}}},760:function(t,e,r){var n=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}},s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var i=s(r(9378)),o=s(r(5686)),h=s(r(2320)),a=s(r(4517));e.makeNNDescent=function(t,e){return function(r,n,s,o,h,l,u,c){void 0===o&&(o=10),void 0===h&&(h=50),void 0===l&&(l=.001),void 0===u&&(u=.5),void 0===c&&(c=!0);for(var f=r.length,g=i.makeHeap(r.length,s),m=0;m<r.length;m++)for(var p=i.rejectionSample(s,r.length,e),d=0;d<p.length;d++){var w=t(r[m],r[p[d]]);i.heapPush(g,m,w,p[d],1),i.heapPush(g,p[d],w,m,1)}if(c)for(var y=0;y<n.length;y++)for(m=0;m<n[y].length&&!(n[y][m]<0);m++)for(d=m+1;d<n[y].length&&!(n[y][d]<0);d++)w=t(r[n[y][m]],r[n[y][d]]),i.heapPush(g,n[y][m],w,n[y][d],1),i.heapPush(g,n[y][d],w,n[y][m],1);for(y=0;y<o;y++){var v=i.buildCandidates(g,f,s,h,e),b=0;for(m=0;m<f;m++)for(d=0;d<h;d++){var M=Math.floor(v[0][m][d]);if(!(M<0||a.tauRand(e)<u))for(var x=0;x<h;x++){var S=Math.floor(v[0][m][x]),_=v[2][m][d],E=v[2][m][x];S<0||!_&&!E||(w=t(r[M],r[S]),b+=i.heapPush(g,M,w,S,1),b+=i.heapPush(g,S,w,M,1))}}if(b<=l*s*r.length)break}return i.deheapSort(g)}},e.makeInitializations=function(t){return{initFromRandom:function(e,r,n,s,o){for(var h=0;h<n.length;h++)for(var l=a.rejectionSample(e,r.length,o),u=0;u<l.length;u++)if(!(l[u]<0)){var c=t(r[l[u]],n[h]);i.heapPush(s,h,c,l[u],1)}},initFromTree:function(e,r,n,s,o){for(var a=0;a<n.length;a++)for(var l=h.searchFlatTree(n[a],e,o),u=0;u<l.length;u++){if(l[u]<0)return;var c=t(r[l[u]],n[a]);i.heapPush(s,a,c,l[u],1)}}}},e.makeInitializedNNSearch=function(t){return function(e,r,s,h){for(var a,l,u=o.getCSR(r),c=u.indices,f=u.indptr,g=0;g<h.length;g++)for(var m=new Set(s[0][g]);;){var p=i.smallestFlagged(s,g);if(-1===p)break;var d=c.slice(f[p],f[p+1]);try{for(var w=n(d),y=w.next();!y.done;y=w.next()){var v=y.value;if(v!==p&&-1!==v&&!m.has(v)){var b=t(e[v],h[g]);i.uncheckedHeapPush(s,g,b,v,1),m.add(v)}}}catch(t){a={error:t}}finally{try{y&&!y.done&&(l=w.return)&&l.call(w)}finally{if(a)throw a.error}}}return s}},e.initializeSearch=function(t,e,r,s,o,h,a){var l,u,c=i.makeHeap(r.length,s);if(o(s,e,r,c,a),t)try{for(var f=n(t),g=f.next();!g.done;g=f.next())h(g.value,e,r,c,a)}catch(t){l={error:t}}finally{try{g&&!g.done&&(u=f.return)&&u.call(f)}finally{if(l)throw l.error}}return c}},2320:function(t,e,r){var n=this&&this.__read||function(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,s,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){s={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(s)throw s.error}}return o},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}},o=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var h=o(r(4517)),a=function(t,e,r,n){this.hyperplanes=t,this.offsets=e,this.children=r,this.indices=n};function l(t,e,r,n,s){if(void 0===r&&(r=30),e.length>r){var i=function(t,e,r){var n=t[0].length,s=h.tauRandInt(e.length,r),i=h.tauRandInt(e.length,r);i=(i+=s===i?1:0)%e.length;for(var o=e[s],a=e[i],l=0,u=h.zeros(n),c=0;c<u.length;c++)u[c]=t[o][c]-t[a][c],l-=u[c]*(t[o][c]+t[a][c])/2;var f=0,g=0,m=h.zeros(e.length);for(c=0;c<e.length;c++){for(var p=l,d=0;d<n;d++)p+=u[d]*t[e[c]][d];0===p?(m[c]=h.tauRandInt(2,r),0===m[c]?f+=1:g+=1):p>0?(m[c]=0,f+=1):(m[c]=1,g+=1)}var w=h.zeros(f),y=h.zeros(g);for(f=0,g=0,c=0;c<m.length;c++)0===m[c]?(w[f]=e[c],f+=1):(y[g]=e[c],g+=1);return{indicesLeft:w,indicesRight:y,hyperplane:u,offset:l}}(t,e,s),o=i.indicesLeft,a=i.indicesRight,u=i.hyperplane,c=i.offset;return{leftChild:l(t,o,r,n+1,s),rightChild:l(t,a,r,n+1,s),isLeaf:!1,hyperplane:u,offset:c}}return{indices:e,isLeaf:!0}}function u(t,e,r,n,i,o,h){var a;if(t.isLeaf)return n[o][0]=-h,(a=i[h]).splice.apply(a,s([0,t.indices.length],t.indices)),{nodeNum:o,leafNum:h+=1};e[o]=t.hyperplane,r[o]=t.offset,n[o][0]=o+1;var l=o,c=u(t.leftChild,e,r,n,i,o+1,h);return o=c.nodeNum,h=c.leafNum,n[l][1]=o+1,{nodeNum:(c=u(t.rightChild,e,r,n,i,o+1,h)).nodeNum,leafNum:c.leafNum}}function c(t){return t.isLeaf?1:1+c(t.leftChild)+c(t.rightChild)}function f(t){return t.isLeaf?1:f(t.leftChild)+f(t.rightChild)}function g(t,e,r,n){for(var s=e,i=0;i<r.length;i++)s+=t[i]*r[i];return 0===s?h.tauRandInt(2,n):s>0?0:1}e.FlatTree=a,e.makeForest=function(t,e,r,n){var s=Math.max(10,e);return h.range(r).map((function(e,r){return function(t,e,r,n){return void 0===e&&(e=30),l(t,h.range(t.length),e,r,n)}(t,s,r,n)})).map((function(t){return function(t,e){var r=c(t),n=f(t),s=h.range(r).map((function(){return h.zeros(t.hyperplane?t.hyperplane.length:0)})),i=h.zeros(r),o=h.range(r).map((function(){return[-1,-1]})),l=h.range(n).map((function(){return h.range(e).map((function(){return-1}))}));return u(t,s,i,o,l,0,0),new a(s,i,o,l)}(t,s)}))},e.makeLeafArray=function(t){var e,r;if(t.length>0){var n=[];try{for(var o=i(t),h=o.next();!h.done;h=o.next()){var a=h.value;n.push.apply(n,s(a.indices))}}catch(t){e={error:t}}finally{try{h&&!h.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}return n}return[[-1]]},e.searchFlatTree=function(t,e,r){for(var n=0;e.children[n][0]>0;)n=0===g(e.hyperplanes[n],e.offsets[n],t,r)?e.children[n][0]:e.children[n][1];var s=-1*e.children[n][0];return e.indices[s]}},4364:function(t,e,r){var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(s,i){function o(t){try{a(n.next(t))}catch(t){i(t)}}function h(t){try{a(n.throw(t))}catch(t){i(t)}}function a(t){t.done?s(t.value):new r((function(e){e(t.value)})).then(o,h)}a((n=n.apply(t,e||[])).next())}))},s=this&&this.__generator||function(t,e){var r,n,s,i,o={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return i={next:h(0),throw:h(1),return:h(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function h(i){return function(h){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(s=2&i[0]?n.return:i[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,i[1])).done)return s;switch(n=0,s&&(i=[2&i[0],s.value]),i[0]){case 0:case 1:s=i;break;case 4:return o.label++,{value:i[1],done:!1};case 5:o.label++,n=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!((s=(s=o.trys).length>0&&s[s.length-1])||6!==i[0]&&2!==i[0])){o=0;continue}if(3===i[0]&&(!s||i[1]>s[0]&&i[1]<s[3])){o.label=i[1];break}if(6===i[0]&&o.label<s[1]){o.label=s[1],s=i;break}if(s&&o.label<s[2]){o.label=s[2],o.ops.push(i);break}s[2]&&o.ops.pop(),o.trys.pop();continue}i=e.call(t,o)}catch(t){i=[6,t],n=0}finally{r=s=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,h])}}},i=this&&this.__read||function(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,s,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){s={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(s)throw s.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t},h=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e},a=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var l=h(r(9378)),u=h(r(5686)),c=h(r(760)),f=h(r(2320)),g=h(r(4517)),m=a(r(9251)),p=1e-5,d=.001,w=function(){function t(t){void 0===t&&(t={});var e=this;this.learningRate=1,this.localConnectivity=1,this.minDist=.1,this.nComponents=2,this.nEpochs=0,this.nNeighbors=15,this.negativeSampleRate=5,this.random=Math.random,this.repulsionStrength=1,this.setOpMixRatio=1,this.spread=1,this.transformQueueSize=4,this.targetMetric="categorical",this.targetWeight=.5,this.targetNNeighbors=this.nNeighbors,this.distanceFn=y,this.isInitialized=!1,this.rpForest=[],this.embedding=[],this.optimizationState=new v;var r=function(r){void 0!==t[r]&&(e[r]=t[r])};r("distanceFn"),r("learningRate"),r("localConnectivity"),r("minDist"),r("nComponents"),r("nEpochs"),r("nNeighbors"),r("negativeSampleRate"),r("random"),r("repulsionStrength"),r("setOpMixRatio"),r("spread"),r("transformQueueSize")}return t.prototype.fit=function(t){return this.initializeFit(t),this.optimizeLayout(),this.embedding},t.prototype.fitAsync=function(t,e){return void 0===e&&(e=function(){return!0}),n(this,void 0,void 0,(function(){return s(this,(function(r){switch(r.label){case 0:return this.initializeFit(t),[4,this.optimizeLayoutAsync(e)];case 1:return r.sent(),[2,this.embedding]}}))}))},t.prototype.setSupervisedProjection=function(t,e){void 0===e&&(e={}),this.Y=t,this.targetMetric=e.targetMetric||this.targetMetric,this.targetWeight=e.targetWeight||this.targetWeight,this.targetNNeighbors=e.targetNNeighbors||this.targetNNeighbors},t.prototype.setPrecomputedKNN=function(t,e){this.knnIndices=t,this.knnDistances=e},t.prototype.initializeFit=function(t){if(t.length<=this.nNeighbors)throw new Error("Not enough data points ("+t.length+") to create nNeighbors: "+this.nNeighbors+". Add more data points or adjust the configuration.");if(this.X===t&&this.isInitialized)return this.getNEpochs();if(this.X=t,!this.knnIndices&&!this.knnDistances){var e=this.nearestNeighbors(t);this.knnIndices=e.knnIndices,this.knnDistances=e.knnDistances}this.graph=this.fuzzySimplicialSet(t,this.nNeighbors,this.setOpMixRatio),this.makeSearchFns(),this.searchGraph=this.makeSearchGraph(t),this.processGraphForSupervisedProjection();var r=this.initializeSimplicialSetEmbedding(),n=r.head,s=r.tail,i=r.epochsPerSample;return this.optimizationState.head=n,this.optimizationState.tail=s,this.optimizationState.epochsPerSample=i,this.initializeOptimization(),this.prepareForOptimizationLoop(),this.isInitialized=!0,this.getNEpochs()},t.prototype.makeSearchFns=function(){var t=c.makeInitializations(this.distanceFn),e=t.initFromTree,r=t.initFromRandom;this.initFromTree=e,this.initFromRandom=r,this.search=c.makeInitializedNNSearch(this.distanceFn)},t.prototype.makeSearchGraph=function(t){for(var e=this.knnIndices,r=this.knnDistances,n=[t.length,t.length],s=new u.SparseMatrix([],[],[],n),i=0;i<e.length;i++)for(var o=e[i],h=r[i],a=0;a<o.length;a++){var l=o[a],c=h[a];c>0&&s.set(i,l,c)}var f=u.transpose(s);return u.maximum(s,f)},t.prototype.transform=function(t){var e=this,r=this.X;if(void 0===r||0===r.length)throw new Error("No data has been fit.");var n=Math.floor(this.nNeighbors*this.transformQueueSize);n=Math.min(r.length,n);var s=c.initializeSearch(this.rpForest,r,t,n,this.initFromRandom,this.initFromTree,this.random),i=this.search(r,this.searchGraph,s,t),o=l.deheapSort(i),h=o.indices,a=o.weights;h=h.map((function(t){return t.slice(0,e.nNeighbors)})),a=a.map((function(t){return t.slice(0,e.nNeighbors)}));var f=Math.max(0,this.localConnectivity-1),m=this.smoothKNNDistance(a,this.nNeighbors,f),p=m.sigmas,d=m.rhos,w=this.computeMembershipStrengths(h,a,p,d),y=w.rows,v=w.cols,b=w.vals,M=[t.length,r.length],x=new u.SparseMatrix(y,v,b,M),S=u.normalize(x,"l1"),_=u.getCSR(S),R=t.length,N=E(g.reshape2d(_.indices,R,this.nNeighbors),g.reshape2d(_.values,R,this.nNeighbors),this.embedding),k=this.nEpochs?this.nEpochs/3:x.nRows<=1e4?100:30,I=x.getValues().reduce((function(t,e){return e>t?e:t}),0);x=x.map((function(t){return t<I/k?0:t})),x=u.eliminateZeros(x);var A=this.makeEpochsPerSample(x.getValues(),k),z=x.getRows(),C=x.getCols();return this.assignOptimizationStateParameters({headEmbedding:N,tailEmbedding:this.embedding,head:z,tail:C,currentEpoch:0,nEpochs:k,nVertices:x.getDims()[1],epochsPerSample:A}),this.prepareForOptimizationLoop(),this.optimizeLayout()},t.prototype.processGraphForSupervisedProjection=function(){var t=this.Y,e=this.X;if(t){if(t.length!==e.length)throw new Error("Length of X and y must be equal");if("categorical"===this.targetMetric){var r=this.targetWeight<1?1/(1-this.targetWeight)*2.5:1e12;this.graph=this.categoricalSimplicialSetIntersection(this.graph,t,r)}}},t.prototype.step=function(){var t=this.optimizationState.currentEpoch;return t<this.getNEpochs()&&this.optimizeLayoutStep(t),this.optimizationState.currentEpoch},t.prototype.getEmbedding=function(){return this.embedding},t.prototype.nearestNeighbors=function(t){var e,r=this.distanceFn,n=this.nNeighbors,s=c.makeNNDescent(r,this.random),i=5+Math.floor(.5==(e=Math.pow(t.length,.5)/20)?0:Math.round(e)),o=Math.max(5,Math.floor(Math.round(function(t){return Math.log(t)/Math.log(2)}(t.length))));this.rpForest=f.makeForest(t,n,i,this.random);var h=s(t,f.makeLeafArray(this.rpForest),n,o);return{knnIndices:h.indices,knnDistances:h.weights}},t.prototype.fuzzySimplicialSet=function(t,e,r){void 0===r&&(r=1);var n=this,s=n.knnIndices,i=void 0===s?[]:s,o=n.knnDistances,h=void 0===o?[]:o,a=n.localConnectivity,l=this.smoothKNNDistance(h,e,a),c=l.sigmas,f=l.rhos,g=this.computeMembershipStrengths(i,h,c,f),m=g.rows,p=g.cols,d=g.vals,w=[t.length,t.length],y=new u.SparseMatrix(m,p,d,w),v=u.transpose(y),b=u.pairwiseMultiply(y,v),M=u.subtract(u.add(y,v),b),x=u.multiplyScalar(M,r),S=u.multiplyScalar(b,1-r);return u.add(x,S)},t.prototype.categoricalSimplicialSetIntersection=function(t,e,r,n){void 0===n&&(n=1);var s=S(t,e,n,r);return _(s=u.eliminateZeros(s))},t.prototype.smoothKNNDistance=function(t,e,r,n,s){void 0===r&&(r=1),void 0===n&&(n=64),void 0===s&&(s=1);for(var i=Math.log(e)/Math.log(2)*s,o=g.zeros(t.length),h=g.zeros(t.length),a=0;a<t.length;a++){var l=0,u=1/0,c=1,f=t[a],m=f.filter((function(t){return t>0}));if(m.length>=r){var w=Math.floor(r),y=r-w;w>0?(o[a]=m[w-1],y>p&&(o[a]+=y*(m[w]-m[w-1]))):o[a]=y*m[0]}else m.length>0&&(o[a]=g.max(m));for(var v=0;v<n;v++){for(var b=0,M=1;M<t[a].length;M++){var x=t[a][M]-o[a];b+=x>0?Math.exp(-x/c):1}if(Math.abs(b-i)<p)break;b>i?c=(l+(u=c))/2:(l=c,u===1/0?c*=2:c=(l+u)/2)}if(h[a]=c,o[a]>0){var S=g.mean(f);h[a]<d*S&&(h[a]=d*S)}else{var _=g.mean(t.map(g.mean));h[a]<d*_&&(h[a]=d*_)}}return{sigmas:h,rhos:o}},t.prototype.computeMembershipStrengths=function(t,e,r,n){for(var s=t.length,i=t[0].length,o=g.zeros(s*i),h=g.zeros(s*i),a=g.zeros(s*i),l=0;l<s;l++)for(var u=0;u<i;u++){var c=0;-1!==t[l][u]&&(c=t[l][u]===l?0:e[l][u]-n[l]<=0?1:Math.exp(-(e[l][u]-n[l])/r[l]),o[l*i+u]=l,h[l*i+u]=t[l][u],a[l*i+u]=c)}return{rows:o,cols:h,vals:a}},t.prototype.initializeSimplicialSetEmbedding=function(){for(var t=this,e=this.getNEpochs(),r=this.nComponents,n=this.graph.getValues(),s=0,i=0;i<n.length;i++){var o=n[i];s<n[i]&&(s=o)}var h=this.graph.map((function(t){return t<s/e?0:t}));this.embedding=g.zeros(h.nRows).map((function(){return g.zeros(r).map((function(){return 20*g.tauRand(t.random)-10}))}));var a=[],l=[],u=[],c=h.getAll();for(i=0;i<c.length;i++){var f=c[i];f.value&&(a.push(f.value),u.push(f.row),l.push(f.col))}return{head:l,tail:u,epochsPerSample:this.makeEpochsPerSample(a,e)}},t.prototype.makeEpochsPerSample=function(t,e){var r=g.filled(t.length,-1),n=g.max(t),s=t.map((function(t){return t/n*e}));return s.forEach((function(t,n){t>0&&(r[n]=e/s[n])})),r},t.prototype.assignOptimizationStateParameters=function(t){Object.assign(this.optimizationState,t)},t.prototype.prepareForOptimizationLoop=function(){var t=this,e=t.repulsionStrength,r=t.learningRate,n=t.negativeSampleRate,s=this.optimizationState,i=s.epochsPerSample,h=s.headEmbedding,a=s.tailEmbedding,l=h[0].length,u=h.length===a.length,c=i.map((function(t){return t/n})),f=o(c),g=o(i);this.assignOptimizationStateParameters({epochOfNextSample:g,epochOfNextNegativeSample:f,epochsPerNegativeSample:c,moveOther:u,initialAlpha:r,alpha:r,gamma:e,dim:l})},t.prototype.initializeOptimization=function(){var t=this.embedding,e=this.embedding,r=this.optimizationState,n=r.head,s=r.tail,i=r.epochsPerSample,o=this.getNEpochs(),h=this.graph.nCols,a=x(this.spread,this.minDist),l=a.a,u=a.b;this.assignOptimizationStateParameters({headEmbedding:t,tailEmbedding:e,head:n,tail:s,epochsPerSample:i,a:l,b:u,nEpochs:o,nVertices:h})},t.prototype.optimizeLayoutStep=function(t){for(var e=this.optimizationState,r=e.head,n=e.tail,s=e.headEmbedding,i=e.tailEmbedding,o=e.epochsPerSample,h=e.epochOfNextSample,a=e.epochOfNextNegativeSample,l=e.epochsPerNegativeSample,u=e.moveOther,c=e.initialAlpha,f=e.alpha,m=e.gamma,p=e.a,d=e.b,w=e.dim,y=e.nEpochs,v=e.nVertices,x=0;x<o.length;x++)if(!(h[x]>t)){var S=r[x],_=n[x],E=s[S],R=i[_],N=M(E,R),k=0;N>0&&(k=-2*p*d*Math.pow(N,d-1),k/=p*Math.pow(N,d)+1);for(var I=0;I<w;I++){var A=b(k*(E[I]-R[I]),4);E[I]+=A*f,u&&(R[I]+=-A*f)}h[x]+=o[x];for(var z=Math.floor((t-a[x])/l[x]),C=0;C<z;C++){var F=g.tauRandInt(v,this.random),T=i[F],O=M(E,T),V=0;if(O>0)V=2*m*d,V/=(.001+O)*(p*Math.pow(O,d)+1);else if(S===F)continue;for(I=0;I<w;I++)A=4,V>0&&(A=b(V*(E[I]-T[I]),4)),E[I]+=A*f}a[x]+=z*l[x]}return e.alpha=c*(1-t/y),e.currentEpoch+=1,s},t.prototype.optimizeLayoutAsync=function(t){var e=this;return void 0===t&&(t=function(){return!0}),new Promise((function(r,i){var o=function(){return n(e,void 0,void 0,(function(){var e,n,h,a,l,u;return s(this,(function(s){try{if(e=this.optimizationState,n=e.nEpochs,h=e.currentEpoch,this.embedding=this.optimizeLayoutStep(h),a=this.optimizationState.currentEpoch,l=!1===t(a),u=a===n,l||u)return[2,r(u)];setTimeout((function(){return o()}),0)}catch(t){i(t)}return[2]}))}))};setTimeout((function(){return o()}),0)}))},t.prototype.optimizeLayout=function(t){void 0===t&&(t=function(){return!0});for(var e=!1,r=[];!e;){var n=this.optimizationState,s=n.nEpochs,i=n.currentEpoch;r=this.optimizeLayoutStep(i);var o=this.optimizationState.currentEpoch,h=!1===t(o);e=o===s||h}return r},t.prototype.getNEpochs=function(){var t=this.graph;if(this.nEpochs>0)return this.nEpochs;var e=t.nRows;return e<=2500?500:e<=5e3?400:e<=7500?300:200},t}();function y(t,e){for(var r=0,n=0;n<t.length;n++)r+=Math.pow(t[n]-e[n],2);return Math.sqrt(r)}e.UMAP=w,e.euclidean=y,e.cosine=function(t,e){for(var r=0,n=0,s=0,i=0;i<t.length;i++)r+=t[i]*e[i],n+=Math.pow(t[i],2),s+=Math.pow(e[i],2);return 0===n&&0===s?0:0===n||0===s?1:1-r/Math.sqrt(n*s)};var v=function(){this.currentEpoch=0,this.headEmbedding=[],this.tailEmbedding=[],this.head=[],this.tail=[],this.epochsPerSample=[],this.epochOfNextSample=[],this.epochOfNextNegativeSample=[],this.epochsPerNegativeSample=[],this.moveOther=!0,this.initialAlpha=1,this.alpha=1,this.gamma=1,this.a=1.5769434603113077,this.b=.8950608779109733,this.dim=2,this.nEpochs=500,this.nVertices=0};function b(t,e){return t>e?e:t<-e?-e:t}function M(t,e){for(var r=0,n=0;n<t.length;n++)r+=Math.pow(t[n]-e[n],2);return r}function x(t,e){var r=g.linear(0,3*t,300).map((function(t){return t<e?1:t})),n=g.zeros(r.length).map((function(n,s){return r[s]>=e?Math.exp(-(r[s]-e)/t):n})),s={x:r,y:n},o=m.default(s,(function(t){var e=i(t,2),r=e[0],n=e[1];return function(t){return 1/(1+r*Math.pow(t,2*n))}}),{damping:1.5,initialValues:[.5,.5],gradientDifference:.1,maxIterations:100,errorTolerance:.01}).parameterValues,h=i(o,2);return{a:h[0],b:h[1]}}function S(t,e,r,n){return void 0===r&&(r=1),void 0===n&&(n=5),t.map((function(t,s,i){return-1===e[s]||-1===e[i]?t*Math.exp(-r):e[s]!==e[i]?t*Math.exp(-n):t}))}function _(t){t=u.normalize(t,"max");var e=u.transpose(t),r=u.pairwiseMultiply(e,t);return t=u.add(t,u.subtract(e,r)),u.eliminateZeros(t)}function E(t,e,r){for(var n=g.zeros(t.length).map((function(t){return g.zeros(r[0].length)})),s=0;s<t.length;s++)for(var i=0;i<t[0].length;i++)for(var o=0;o<r[0].length;o++){var h=t[s][i];n[s][o]+=e[s][i]*r[h][o]}return n}e.findABParams=x,e.fastIntersection=S,e.resetLocalConnectivity=_,e.initTransform=E},4517:function(t,e){var r=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}};function n(t,e){return Math.floor(e()*t)}function s(t){for(var e=[],r=0;r<t;r++)e.push(void 0);return e}function i(t,e){return s(t).map((function(){return e}))}function o(t){return i(t,0)}function h(t){return t.reduce((function(t,e){return t+e}))}Object.defineProperty(e,"__esModule",{value:!0}),e.tauRandInt=n,e.tauRand=function(t){return t()},e.norm=function(t){var e,n,s=0;try{for(var i=r(t),o=i.next();!o.done;o=i.next()){var h=o.value;s+=Math.pow(h,2)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(e)throw e.error}}return Math.sqrt(s)},e.empty=s,e.range=function(t){return s(t).map((function(t,e){return e}))},e.filled=i,e.zeros=o,e.ones=function(t){return i(t,1)},e.linear=function(t,e,r){return s(r).map((function(n,s){return t+s*((e-t)/(r-1))}))},e.sum=h,e.mean=function(t){return h(t)/t.length},e.max=function(t){for(var e=0,r=0;r<t.length;r++)e=t[r]>e?t[r]:e;return e},e.max2d=function(t){for(var e=0,r=0;r<t.length;r++)for(var n=0;n<t[r].length;n++)e=t[r][n]>e?t[r][n]:e;return e},e.rejectionSample=function(t,e,r){for(var s=o(t),i=0;i<t;i++)for(var h=!0;h;){for(var a=n(e,r),l=!1,u=0;u<i;u++)if(a===s[u]){l=!0;break}l||(h=!1),s[i]=a}return s},e.reshape2d=function(t,e,r){var n=[],s=0;if(t.length!==e*r)throw new Error("Array dimensions must match input length.");for(var i=0;i<e;i++){for(var o=[],h=0;h<r;h++)o.push(t[s]),s+=1;n.push(o)}return n}}},n={};function s(t){var e=n[t];if(void 0!==e)return e.exports;var i=n[t]={exports:{}};return r[t].call(i.exports,i,i.exports,s),i.exports}s.m=r,s.x=()=>{var t=s.O(void 0,[611],(()=>s(8563)));return s.O(t)},t=[],s.O=(e,r,n,i)=>{if(!r){var o=1/0;for(u=0;u<t.length;u++){for(var[r,n,i]=t[u],h=!0,a=0;a<r.length;a++)(!1&i||o>=i)&&Object.keys(s.O).every((t=>s.O[t](r[a])))?r.splice(a--,1):(h=!1,i<o&&(o=i));if(h){t.splice(u--,1);var l=n();void 0!==l&&(e=l)}}return e}i=i||0;for(var u=t.length;u>0&&t[u-1][2]>i;u--)t[u]=t[u-1];t[u]=[r,n,i]},s.d=(t,e)=>{for(var r in e)s.o(e,r)&&!s.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce(((e,r)=>(s.f[r](t,e),e)),[])),s.u=t=>t+".js",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;s.g.importScripts&&(t=s.g.location+"");var e=s.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");r.length&&(t=r[r.length-1].src)}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{var t={563:1};s.f.i=(e,r)=>{t[e]||importScripts(s.p+s.u(e))};var e=self.webpackChunkpeptides=self.webpackChunkpeptides||[],r=e.push.bind(e);e.push=e=>{var[n,i,o]=e;for(var h in i)s.o(i,h)&&(s.m[h]=i[h]);for(o&&o(s);n.length;)t[n.pop()]=1;r(e)}})(),e=s.x,s.x=()=>s.e(611).then(e);var i=s.x();peptides=i})();
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLElBRWpEekUsRUFBU29JLFlBQWNHLFVBQVU5RCxLQUFLLEVBQ2pDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzlDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLElBRWpEekUsRUFBU3NJLFdBQWFDLFVBQVU5RCxLQUFLLEVBQ2hDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzlDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQzdDLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVB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Q2lLLEVBQTJCN3BDLEVBQUssQyxLL0NuQjdCbkMsRUFBT21xQyxFQUFvQjMyQixFQUMvQjIyQixFQUFvQjMyQixFQUFJLElBQ2hCMjJCLEVBQW9CMTRCLEVBQUUsS0FBSzh2QixLQUFLdmhDLEdnRER4QyxJQUFJd3FDLEVBQXNCTCxFQUFvQjMyQixJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvc3RhcnR1cCBjaHVuayBkZXBlbmRlbmNpZXMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvcmFuZG9tLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3NwZS5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL2JpdC1hcnJheS5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9yZWR1Y2UtZGltZW5zaW9uYWxpdHkuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvd29ya2Vycy9kaW1lbnNpb25hbGl0eS1yZWR1Y2VyLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BrZWNrZWx0L3RzbmUvbGliL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BrZWNrZWx0L3RzbmUvbGliL3RzbmUuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1sZXZlbmJlcmctbWFycXVhcmR0L3NyYy9lcnJvckNhbGN1bGF0aW9uLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L2xpYi1lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktcmVzY2FsZS9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L2xpYi1lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWF4L25vZGVfbW9kdWxlcy9pcy1hbnktYXJyYXkvbGliLWVzbS9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1hcnJheS1taW4vbm9kZV9tb2R1bGVzL2lzLWFueS1hcnJheS9saWItZXNtL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LXJlc2NhbGUvbGliLWVzNi9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1hcnJheS1taW4vbGliLWVzNi9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1hcnJheS1tYXgvbGliLWVzNi9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2luc3BlY3QuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy91dGlsLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvbWF0cml4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvc3RhdC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL21hdGhPcGVyYXRpb25zLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvd3JhcC9XcmFwcGVyTWF0cml4MkQuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy9sdS5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2RjL3V0aWwuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy9xci5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2RjL3N2ZC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1sZXZlbmJlcmctbWFycXVhcmR0L3NyYy9zdGVwLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvZGVjb21wb3NpdGlvbnMuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L2hlYXAuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC9tYXRyaXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L25uX2Rlc2NlbnQuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L3RyZWUuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L3VtYXAuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvdW1hcC1qcy9kaXN0L3V0aWxzLmpzIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvcHVibGljUGF0aCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVmZXJyZWQgPSBbXTtcbl9fd2VicGFja19yZXF1aXJlX18uTyA9IChyZXN1bHQsIGNodW5rSWRzLCBmbiwgcHJpb3JpdHkpID0+IHtcblx0aWYoY2h1bmtJZHMpIHtcblx0XHRwcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG5cdFx0Zm9yKHZhciBpID0gZGVmZXJyZWQubGVuZ3RoOyBpID4gMCAmJiBkZWZlcnJlZFtpIC0gMV1bMl0gPiBwcmlvcml0eTsgaS0tKSBkZWZlcnJlZFtpXSA9IGRlZmVycmVkW2kgLSAxXTtcblx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcblx0XHRyZXR1cm47XG5cdH1cblx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGRlZmVycmVkLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIFtjaHVua0lkcywgZm4sIHByaW9yaXR5XSA9IGRlZmVycmVkW2ldO1xuXHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuXHRcdGZvciAodmFyIGogPSAwOyBqIDwgY2h1bmtJZHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdGlmICgocHJpb3JpdHkgJiAxID09PSAwIHx8IG5vdEZ1bGZpbGxlZCA+PSBwcmlvcml0eSkgJiYgT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5PKS5ldmVyeSgoa2V5KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5PW2tleV0oY2h1bmtJZHNbal0pKSkpIHtcblx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmdWxmaWxsZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihmdWxmaWxsZWQpIHtcblx0XHRcdGRlZmVycmVkLnNwbGljZShpLS0sIDEpXG5cdFx0XHR2YXIgciA9IGZuKCk7XG5cdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTsiLCJ2YXIgbmV4dCA9IF9fd2VicGFja19yZXF1aXJlX18ueDtcbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZSg2MTEpLnRoZW4obmV4dCk7XG59OyIsIi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gZmxvYXQgZnJvbSAwIHRvIHJhbmdlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSByYW5nZSBNYXggZ2VuZXJhdGluZyB2YWx1ZS5cbiAqIEByZXR1cm4ge251bWJlcn0gQSByYW5kb20gZmxvYXQgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tRmxvYXQocmFuZ2UpIHtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIHJhbmdlO1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgc2luZ2xlIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGludGVnZXIgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tSW50KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IocmFuZG9tRmxvYXQocmFuZ2UpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtRnVaRzl0TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljbUZ1Wkc5dExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdSMEZOUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hYUVVGWExFTkJRVU1zUzBGQllUdEpRVU4yUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1MwRkJZVHRKUVVOeVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZUVNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUjJWdVpYSmhkR1Z6SUhOcGJtZHNaU0J5WVc1a2IyMGdabXh2WVhRZ1puSnZiU0F3SUhSdklISmhibWRsTGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCeVlXNW5aU0JOWVhnZ1oyVnVaWEpoZEdsdVp5QjJZV3gxWlM1Y2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdRU0J5WVc1a2IyMGdabXh2WVhRZ1oyVnVaWEpoZEdWa0xseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21GdVpHOXRSbXh2WVhRb2NtRnVaMlU2SUc1MWJXSmxjaWs2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCTllYUm9MbkpoYm1SdmJTZ3BJQ29nY21GdVoyVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnYVc1MFpXZGxjaUJtY205dElEQWdkRzhnY21GdVoyVXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJSEpoYm1kbElFMWhlQ0JuWlc1bGNtRjBhVzVuSUhaaGJIVmxMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCQklISmhibVJ2YlNCcGJuUmxaMlZ5SUdkbGJtVnlZWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEpoYm1SdmJVbHVkQ2h5WVc1blpUb2diblZ0WW1WeUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndVpteHZiM0lvY21GdVpHOXRSbXh2WVhRb2NtRnVaMlVwS1R0Y2JuMWNiaUpkZlE9PSIsImltcG9ydCB7IFZlY3RvciB9IGZyb20gJy4vdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgcmFuZG9tRmxvYXQsIHJhbmRvbUludCB9IGZyb20gJy4vcmFuZG9tJztcbi8qKlxuICogQXNzZXJ0cyBhIGNvbmRpdGlvbiBieSB0aHJvd2luZyBhbiBFcnJvci5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtjb25kaXRpb249ZmFsc2VdIENvbmRpdGlvbiB0byBhc3NlcnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2U9J0Fzc2VydGlvbiBlcnJvci4nXSBNZXNzYWdlIHRvIG91dHB1dC5cbiAqIEB0aHJvd3Mge0Vycm9yfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiA9IGZhbHNlLCBtZXNzYWdlID0gJ0Fzc2VydGlvbiBlcnJvci4nKSB7XG4gICAgaWYgKCFjb25kaXRpb24pXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBuZXcgdHdvLWRpbWVuc2lvbmFsIGFycmF5IGFuZCBmaWxscyBpdCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMSBUaGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIHJvd3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2YgY29sdW1ucykuXG4gKiBAcGFyYW0ge251bWJlcn0gW2ZpbGw9MF0gQSB2YWx1ZSB0byBmaWxsIHRoZSBjb29yZGluYXRlcyB3aXRoLlxuICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IEEgdHdvLWRpbWVuc2lvbmFsIGZpbGxlZCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5mdW5jdGlvbiBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMSwgZGltZW5zaW9uMiwgZmlsbCA9IDApIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KGRpbWVuc2lvbjEpLmZpbGwoZmlsbCkubWFwKCgpID0+IChuZXcgVmVjdG9yKGRpbWVuc2lvbjIpLmZpbGwoZmlsbCkpKTtcbn1cbi8qKlxuICogVHJhbnNwb3NlIG1hdHJpeC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4IFRoZSBtYXRyaXggdG8gYmUgdHJhbnNwb3NlZC5cbiAqIEByZXR1cm4ge01hdHJpeH0gVHJhbnNwb3NlZCBtYXRyaXguXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zcG9zZU1hdHJpeChtYXRyaXgpIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KG1hdHJpeFswXS5sZW5ndGgpLmZpbGwoMClcbiAgICAgICAgLm1hcCgoXywgaSkgPT4gKG5ldyBWZWN0b3IobWF0cml4Lmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGopID0+IChtYXRyaXhbal1baV0pKSkpO1xufVxuLyoqXG4gKiBBZGRzIHR3byB2ZWN0b3JzIHdpdGggdGhlIHNlY29uZCBvbmUgdG8gYmUgbXVsdGlwbGllZCBieSB0aGUgZ2l2ZW4gcmF0aW8uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IHAgVGhlIGZpcnN0IHZlY3RvciB0byBhZGQuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3RvciB0byBhZGQuXG4gKiBAcGFyYW0ge251bWJlcn0gW211bHRpcGxpZXI9MV0gQSBtdWx0aXBsaWVyIHRvIGJlIHVzZWQgYmVmb3JlIHRoZSBzZWNvbmQgdmVjdG9yIGlzIGFkZGVkLlxuICogQHJldHVybiB7VmVjdG9yfSBOZXcgdmVjdG9yIGNvbnRhaW5lZCB0aGUgcmVzdWx0IG9mIG9wZXJhdGlvbiBwK211bHRpcGxpZXIqcS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckFkZChwLCBxLCBtdWx0aXBsaWVyID0gMSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IHAubGVuZ3RoO1xuICAgIGFzc2VydChuSXRlbXMgPT0gcS5sZW5ndGgsICdWZWN0b3IgbGVuZ3RocyBkbyBub3QgbWF0Y2guJyk7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwLmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHBbaV0gKyBtdWx0aXBsaWVyICogcVtpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1bXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gYmUgc3VtbWVkLlxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgdmVjdG9yJ3MgaXRlbXMgc3VtLlxuICovXG5mdW5jdGlvbiBpdGVtc1N1bSh2KSB7XG4gICAgbGV0IHRvdGFsID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsICs9IHZbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdXFhcmVzIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIHNxdWFyZS5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gQSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsJ3MgaXRlbXMgc3F1YXJlZC5cbiAqL1xuZnVuY3Rpb24gdmVjdG9yU3F1YXJlKHYpIHtcbiAgICBjb25zdCBuSXRlbXMgPSB2Lmxlbmd0aDtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gdltpXSAqIHZbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZlY3Rvckxlbmd0aCh2KSB7XG4gICAgbGV0IHNxclN1bSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKVxuICAgICAgICBzcXJTdW0gKz0gdltpXSAqIHZbaV07XG4gICAgcmV0dXJuIE1hdGguc3FydChzcXJTdW0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckRvdFByb2R1Y3QodjEsIHYyKSB7XG4gICAgaWYgKHYxLmxlbmd0aCAhPSB2Mi5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRpbWVuc2lvbmFsaXR5IG9mIHRoZSB2ZWN0b3JzIG11c3QgbWF0Y2gnKTtcbiAgICBsZXQgcHJvZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2MS5sZW5ndGg7IGkrKylcbiAgICAgICAgcHJvZCArPSB2MVtpXSAqIHYyW2ldO1xuICAgIHJldHVybiBwcm9kO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCB2YWx1ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4LlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc2NhbGU9MS5dIE1heCB2YWx1ZSBnaXZlbiBieSByYW5kb20gZ2VuZXJhdG9yLlxuICogQHJldHVybiB7TWF0cml4fSBBIG5ldyBtYXRyaXggZmlsbGVkIHdpdGggcmFuZG9tIGZsb2F0aW5nIHBvaW50ICB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxsUmFuZG9tTWF0cml4KGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIHNjYWxlID0gMS4pIHtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMSwgZGltZW5zaW9uMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW1lbnNpb24xOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkaW1lbnNpb24yOyArK2opXG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSByYW5kb21GbG9hdChzY2FsZSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlY3RvcnMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IHAgVGhlIGZpcnN0IHZlY3Rvci5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yLlxuICogQHJldHVybiB7bnVtYmVyfSBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gdmVjdG9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHAsIHEpIHtcbiAgICBjb25zdCBkaWZmID0gdmVjdG9yQWRkKHAsIHEsIC0xKTtcbiAgICBjb25zdCBzcWRpZmYgPSB2ZWN0b3JTcXVhcmUoZGlmZik7XG4gICAgY29uc3Qgc3FkaWZmU3VtbSA9IGl0ZW1zU3VtKHNxZGlmZik7XG4gICAgcmV0dXJuIE1hdGguc3FydChzcWRpZmZTdW1tKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIGRpc3RhbmNlIG1hdHJpeCB1c2luZyBhIGN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3RvcnN9IGRhdGEgSW5wdXQgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzLlxuICogQHBhcmFtIHtEaXN0YW5jZU1ldHJpY30gZGlzdGFuY2UgQ3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICogQHJldHVybiB7TWF0cml4fSBDYWxjdWxhdGVkIGN1c3RvbSBkaXN0YW5jZSBtYXRyaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjRGlzdGFuY2VNYXRyaXgoZGF0YSwgZGlzdGFuY2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBkYXRhLmxlbmd0aDtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMobkl0ZW1zLCBuSXRlbXMsIDApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSAoZGF0YVtpXSA9PSBudWxsKSB8fCAoZGF0YVtqXSA9PSBudWxsKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKiBHZW5lcmF0ZXMgYXJyYXkgZnJvbSBhIHJhbmdlIFtiZWdpbjsgZW5kXSBvciBbYmVnaW47IGVuZCkgaWYgZW5kRXhjbHVzaXZlLiAqKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5SYW5nZShiZWdpbiwgZW5kLCBlbmRFeGNsdXNpdmUgPSBmYWxzZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGVuZCAtIGJlZ2luICsgKGVuZEV4Y2x1c2l2ZSA/IDAgOiAxKTtcbiAgICBjb25zdCBzZXJpZXMgPSBuZXcgSW50MzJBcnJheShuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpXG4gICAgICAgIHNlcmllc1tpXSA9IGJlZ2luICsgaTtcbiAgICByZXR1cm4gc2VyaWVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuICogQHBhcmFtIHtib29sZWFufSBbcmV2ZXJzZT1mYWxzZV0gV2hldGhlciB0byByZXR1cm4gcmV2ZXJzZWQgb3JkZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gVGhlIG9yZGVyIGNvbXB1dGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEaERRVUU0UXl4RFFVRkRMRU5CUVVNN1NVRkRiRVVzU1VGQlNTeEpRVUZKTEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCUTNKQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFWY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjRReXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOa0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhWUVVGclFpeEZRVUZGTEZWQlFXdENMRVZCUVVVc1VVRkJaMElzUlVGQlJUdEpRVU42Uml4TlFVRk5MRTFCUVUwc1IwRkJSeXhsUVVGbExFTkJRVU1zVlVGQlZTeEZRVUZGTEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUlhaRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRGFrTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOeVF6dEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxEQkNRVUV3UWl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8wbEJRemRFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMnhETEUxQlFVMHNWVUZCVlN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU53UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTEVOQlFVTXNTVUZCWVN4RlFVRkZMRkZCUVhkQ08wbEJRM2hGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZiRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTXZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnVReXhOUVVGTkxFTkJRVU1zUjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkdMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJwRE8wdEJRMFk3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVFzYTBaQlFXdEdPMEZCUTJ4R0xFMUJRVTBzVlVGQlZTeFJRVUZSTEVOQlFVTXNTMEZCWVN4RlFVRkZMRWRCUVZjc1JVRkJSU3haUVVGWkxFZEJRVWNzUzBGQlN6dEpRVU4yUlN4TlFVRk5MRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNCRUxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJSWFJETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXpkQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSWGhDTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxFOUJRVThzUTBGQlF5eE5RVUZoTEVWQlFVVXNUMEZCVHl4SFFVRkhMRXRCUVVzN1NVRkRjRVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFWRXNSVUZCUlN4RFFVRlJMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzWkhMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlRTeEZRVUZGTEVOQlFWTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4eFFrRkJjVUk3U1VGRGJFVXNUVUZCVFN4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExHMUNRVUZ0UWp0SlFVTjJSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eERRVUZETEVkQlFWVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUXpGRkxFOUJRVThzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXpGQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRTFCUVdNc1JVRkJSU3hEUVVGVExFVkJRVVVzU1VGQmQwTTdTVUZEYkVjc1UwRkJVeXhMUVVGTExFTkJRVU1zVFVGQlowTXNSVUZCUlN4UFFVRTRRanRSUVVNM1JTeEpRVUZKTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRjRUlzU1VGQlNTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUlhSQ0xFdEJRVXNzVFVGQlRTeFBRVUZQTEVsQlFVa3NUVUZCVFN4RlFVRkZPMWxCUXpWQ0xFMUJRVTBzWTBGQll5eEhRVUZITEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRaUVVONFF5eEpRVUZKTEZWQlFWVXNTVUZCU1N4SlFVRkpMRWxCUVVrc1kwRkJZeXhIUVVGSExGVkJRVlVzUlVGQlJUdG5Ra0ZEY2tRc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF6dG5Ra0ZEYmtJc1ZVRkJWU3hIUVVGSExHTkJRV01zUTBGQlF6dGhRVU0zUWp0VFFVTkdPMUZCUTBRc1QwRkJUeXhSUVVGUkxFTkJRVU03U1VGRGJFSXNRMEZCUXp0SlFVVkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1pETEUxQlFVMHNWVUZCVlN4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRk4wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVNdlFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU55UWp0SlFVVkVMRTlCUVU4c1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdVVUZEZUVJc1RVRkJUU3hIUVVGSExFZEJRVWNzUzBGQlN5eERRVU5tTEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUVRoQ0xFVkJReTlETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZUTEVkQlFVY3NSVUZCUlN4TFFVRkxPMWxCUTNoRUxFOUJRVThzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRVQ3hKUVVGSkxFZEJRVWNzUlVGQlJUdFpRVU5RTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGFrSXNWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU40UWp0TFFVTkdPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVPenM3UjBGSFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1NVRkJXVHRKUVVOd1F5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRZaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGV2l4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRGJFTXNTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZzUWl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVVZ3UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRGJFTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUlRkRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZGYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlEyeERMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZGYmtNc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFpDeERRVUZETzBGQlJVUTdPenM3TzBkQlMwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1lVRkJZU3hEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTzBsQlF6bERMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNoQ0xFOUJRVThzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEY2tVc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3VFdGMGNtbDRMQ0JXWldOMGIzSXNJRU52YjNKa2FXNWhkR1Z6TENCV1pXTjBiM0p6TENCRWFYTjBZVzVqWlUxbGRISnBZMzBnWm5KdmJTQW5MaTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTNKaGJtUnZiVVpzYjJGMExDQnlZVzVrYjIxSmJuUjlJR1p5YjIwZ0p5NHZjbUZ1Wkc5dEp6dGNibHh1THlvcVhHNGdLaUJCYzNObGNuUnpJR0VnWTI5dVpHbDBhVzl1SUdKNUlIUm9jbTkzYVc1bklHRnVJRVZ5Y205eUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMk52Ym1ScGRHbHZiajFtWVd4elpWMGdRMjl1WkdsMGFXOXVJSFJ2SUdGemMyVnlkQzVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmJXVnpjMkZuWlQwblFYTnpaWEowYVc5dUlHVnljbTl5TGlkZElFMWxjM05oWjJVZ2RHOGdiM1YwY0hWMExseHVJQ29nUUhSb2NtOTNjeUI3UlhKeWIzSjlYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaGMzTmxjblFvWTI5dVpHbDBhVzl1T2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlVzSUcxbGMzTmhaMlU2SUhOMGNtbHVaeUE5SUNkQmMzTmxjblJwYjI0Z1pYSnliM0l1SnlrZ2UxeHVJQ0JwWmlBb0lXTnZibVJwZEdsdmJpbGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvYldWemMyRm5aU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QnVaWGNnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJR0Z5Y21GNUlHRnVaQ0JtYVd4c2N5QnBkQ0IzYVhSb0lIUm9aU0IyWVd4MVpTQm5hWFpsYmk1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnWkdsdFpXNXphVzl1TVNCVWFHVWdabWx5YzNRZ1pHbHRaVzV6YVc5dUlHOW1JSFJvWlNCamIyOXlaR2x1WVhSbGN5QW9iblZ0WW1WeUlHOW1JSEp2ZDNNcExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR1JwYldWdWMybHZiaklnVkdobElITmxZMjl1WkNCa2FXMWxibk5wYjI0Z2IyWWdkR2hsSUdOdmIzSmthVzVoZEdWeklDaHVkVzFpWlhJZ2IyWWdZMjlzZFcxdWN5a3VYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnVzJacGJHdzlNRjBnUVNCMllXeDFaU0IwYnlCbWFXeHNJSFJvWlNCamIyOXlaR2x1WVhSbGN5QjNhWFJvTGx4dUlDb2dRSEpsZEhWeWJpQjdRMjl2Y21ScGJtRjBaWE45SUVFZ2RIZHZMV1JwYldWdWMybHZibUZzSUdacGJHeGxaQ0IzYVhSb0lIUm9aU0IyWVd4MVpTQm5hWFpsYmk1Y2JpQXFJRUIwYjJSdklFMXBaMmgwSUdKbElITnNiM2NnYzJsdVkyVWdkWE5sWkNCQmNuSmhlUzV0WVhBdUlGQnliMkpoWW14NUlHNWxaV1J6SUhCbGNtWnZjbTFoYm1ObElISmxkbWx6YVc5dUxseHVJQ292WEc1bWRXNWpkR2x2YmlCcGJtbDBRMjl2Y21ScGJtRjBaWE1vWkdsdFpXNXphVzl1TVRvZ2JuVnRZbVZ5TENCa2FXMWxibk5wYjI0eU9pQnVkVzFpWlhJc0lHWnBiR3c2SUc1MWJXSmxjaUE5SURBcE9pQkRiMjl5WkdsdVlYUmxjeUI3WEc0Z0lISmxkSFZ5YmlCdVpYY2dRWEp5WVhrb1pHbHRaVzV6YVc5dU1Ta3VabWxzYkNobWFXeHNLUzV0WVhBb0tDa2dQVDRnS0c1bGR5QldaV04wYjNJb1pHbHRaVzV6YVc5dU1pa3VabWxzYkNobWFXeHNLU2twTzF4dWZWeHVYRzR2S2lwY2JpQXFJRlJ5WVc1emNHOXpaU0J0WVhSeWFYZ3VYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHROWVhSeWFYaDlJRzFoZEhKcGVDQlVhR1VnYldGMGNtbDRJSFJ2SUdKbElIUnlZVzV6Y0c5elpXUXVYRzRnS2lCQWNtVjBkWEp1SUh0TllYUnlhWGg5SUZSeVlXNXpjRzl6WldRZ2JXRjBjbWw0TGx4dUlDb2dRSFJ2Wkc4Z1RXbG5hSFFnWW1VZ2MyeHZkeUJ6YVc1alpTQjFjMlZrSUVGeWNtRjVMbTFoY0M0Z1VISnZZbUZpYkhrZ2JtVmxaSE1nY0dWeVptOXliV0Z1WTJVZ2NtVjJhWE5wYjI0dVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwY21GdWMzQnZjMlZOWVhSeWFYZ29iV0YwY21sNE9pQk5ZWFJ5YVhncE9pQk5ZWFJ5YVhnZ2UxeHVJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLRzFoZEhKcGVGc3dYUzVzWlc1bmRHZ3BMbVpwYkd3b01DbGNiaUFnSUNBdWJXRndLQ2hmTENCcEtTQTlQaUFvYm1WM0lGWmxZM1J2Y2lodFlYUnlhWGd1YkdWdVozUm9LUzVtYVd4c0tEQXBMbTFoY0Nnb1h5d2dhaWtnUFQ0Z0tHMWhkSEpwZUZ0cVhWdHBYU2twS1NrN1hHNTlYRzVjYmk4cUtseHVJQ29nUVdSa2N5QjBkMjhnZG1WamRHOXljeUIzYVhSb0lIUm9aU0J6WldOdmJtUWdiMjVsSUhSdklHSmxJRzExYkhScGNHeHBaV1FnWW5rZ2RHaGxJR2RwZG1WdUlISmhkR2x2TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCd0lGUm9aU0JtYVhKemRDQjJaV04wYjNJZ2RHOGdZV1JrTGx4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIRWdWR2hsSUhObFkyOXVaQ0IyWldOMGIzSWdkRzhnWVdSa0xseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnR0ZFd4MGFYQnNhV1Z5UFRGZElFRWdiWFZzZEdsd2JHbGxjaUIwYnlCaVpTQjFjMlZrSUdKbFptOXlaU0IwYUdVZ2MyVmpiMjVrSUhabFkzUnZjaUJwY3lCaFpHUmxaQzVjYmlBcUlFQnlaWFIxY200Z2UxWmxZM1J2Y24wZ1RtVjNJSFpsWTNSdmNpQmpiMjUwWVdsdVpXUWdkR2hsSUhKbGMzVnNkQ0J2WmlCdmNHVnlZWFJwYjI0Z2NDdHRkV3gwYVhCc2FXVnlLbkV1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKQlpHUW9jRG9nVm1WamRHOXlMQ0J4T2lCV1pXTjBiM0lzSUcxMWJIUnBjR3hwWlhJNklHNTFiV0psY2lBOUlERXBPaUJXWldOMGIzSWdlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0J3TG14bGJtZDBhRHRjYmx4dUlDQmhjM05sY25Rb2JrbDBaVzF6SUQwOUlIRXViR1Z1WjNSb0xDQW5WbVZqZEc5eUlHeGxibWQwYUhNZ1pHOGdibTkwSUcxaGRHTm9MaWNwTzF4dVhHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2JtVjNJRlpsWTNSdmNpaHVTWFJsYlhNcE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2NDNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkZ0cFhTQTlJSEJiYVYwZ0t5QnRkV3gwYVhCc2FXVnlJQ29nY1Z0cFhUdGNibHh1SUNCeVpYUjFjbTRnZEc5MFlXdzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1UzVnRjeUIwYUdVZ2RtVmpkRzl5SjNNZ2FYUmxiWE11WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJSFlnVkdobElIWmxZM1J2Y2lCMGJ5QmlaU0J6ZFcxdFpXUXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUZSb1pTQjJaV04wYjNJbmN5QnBkR1Z0Y3lCemRXMHVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbDBaVzF6VTNWdEtIWTZJRlpsWTNSdmNpazZJRzUxYldKbGNpQjdYRzRnSUd4bGRDQjBiM1JoYkNBOUlEQTdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjJMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJSFJ2ZEdGc0lDczlJSFpiYVYwN1hHNWNiaUFnY21WMGRYSnVJSFJ2ZEdGc08xeHVmVnh1WEc0dktpcGNiaUFxSUZOMWNXRnlaWE1nZEdobElIWmxZM1J2Y2lkeklHbDBaVzF6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0IySUZSb1pTQjJaV04wYjNJZ2RHOGdjM0YxWVhKbExseHVJQ29nUUhKbGRIVnliaUI3Vm1WamRHOXlmU0JCSUc1bGR5QjJaV04wYjNJZ1kyOXVkR0ZwYm1sdVp5QjBhR1VnYjNKcFoybHVZV3duY3lCcGRHVnRjeUJ6Y1hWaGNtVmtMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQjJaV04wYjNKVGNYVmhjbVVvZGpvZ1ZtVmpkRzl5S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ2RpNXNaVzVuZEdnN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2JtVjNJRlpsWTNSdmNpaHVTWFJsYlhNcE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RpNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkZ0cFhTQTlJSFpiYVYwZ0tpQjJXMmxkTzF4dVhHNGdJSEpsZEhWeWJpQjBiM1JoYkR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFpsWTNSdmNreGxibWQwYUNoMk9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JzWlhRZ2MzRnlVM1Z0T2lCdWRXMWlaWElnUFNBd08xeHVJQ0JtYjNJZ0tHeGxkQ0JwT2lCdWRXMWlaWElnUFNBd095QnBJRHdnZGk1c1pXNW5kR2c3SUdrckt5bGNiaUFnSUNCemNYSlRkVzBnS3owZ2RsdHBYU0FxSUhaYmFWMDdYRzRnSUhKbGRIVnliaUJOWVhSb0xuTnhjblFvYzNGeVUzVnRLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIWmxZM1J2Y2tSdmRGQnliMlIxWTNRb2RqRTZJRlpsWTNSdmNpd2dkakk2SUZabFkzUnZjaWs2SUc1MWJXSmxjaUI3WEc0Z0lHbG1JQ2gyTVM1c1pXNW5kR2dnSVQwZ2RqSXViR1Z1WjNSb0tWeHVJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVkdobElHUnBiV1Z1YzJsdmJtRnNhWFI1SUc5bUlIUm9aU0IyWldOMGIzSnpJRzExYzNRZ2JXRjBZMmduS1R0Y2JpQWdiR1YwSUhCeWIyUTZJRzUxYldKbGNpQTlJREE3WEc0Z0lHWnZjaUFvYkdWMElHazZJRzUxYldKbGNpQTlJREE3SUdrZ1BDQjJNUzVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0J3Y205a0lDczlJSFl4VzJsZElDb2dkakpiYVYwN1hHNGdJSEpsZEhWeWJpQndjbTlrTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0J0WVhSeWFYZ2dabWxzYkdWa0lIZHBkR2dnY21GdVpHOXRJR1pzYjJGMGFXNW5JSEJ2YVc1MElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQnRZWFJ5YVhndVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNaUJVYUdVZ2MyVmpiMjVrSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnYldGMGNtbDRMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0elkyRnNaVDB4TGwwZ1RXRjRJSFpoYkhWbElHZHBkbVZ1SUdKNUlISmhibVJ2YlNCblpXNWxjbUYwYjNJdVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRUVnYm1WM0lHMWhkSEpwZUNCbWFXeHNaV1FnZDJsMGFDQnlZVzVrYjIwZ1pteHZZWFJwYm1jZ2NHOXBiblFnSUhaaGJIVmxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJSE5qWVd4bE9pQnVkVzFpWlhJZ1BTQXhMaWs2SUUxaGRISnBlQ0I3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWhrYVcxbGJuTnBiMjR4TENCa2FXMWxibk5wYjI0eUtUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUnBiV1Z1YzJsdmJqRTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z1pHbHRaVzV6YVc5dU1qc2dLeXRxS1Z4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdjbUZ1Wkc5dFJteHZZWFFvYzJOaGJHVXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGc1kzVnNZWFJsY3lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdkbVZqZEc5eWN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhFZ1ZHaGxJSE5sWTI5dVpDQjJaV04wYjNJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlJRVYxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCbmFYWmxiaUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2NEb2dWbVZqZEc5eUxDQnhPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JrYVdabUlEMGdkbVZqZEc5eVFXUmtLSEFzSUhFc0lDMHhLVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1JRDBnZG1WamRHOXlVM0YxWVhKbEtHUnBabVlwTzF4dUlDQmpiMjV6ZENCemNXUnBabVpUZFcxdElEMGdhWFJsYlhOVGRXMG9jM0ZrYVdabUtUdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2h6Y1dScFptWlRkVzF0S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnWkdsemRHRnVZMlVnYldGMGNtbDRJSFZ6YVc1bklHRWdZM1Z6ZEc5dElHUnBjM1JoYm1ObElHWjFibU4wYVc5dUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWMzMGdaR0YwWVNCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlhNdVhHNGdLaUJBY0dGeVlXMGdlMFJwYzNSaGJtTmxUV1YwY21samZTQmthWE4wWVc1alpTQkRkWE4wYjIwZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI0dVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRU5oYkdOMWJHRjBaV1FnWTNWemRHOXRJR1JwYzNSaGJtTmxJRzFoZEhKcGVDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTkVhWE4wWVc1alpVMWhkSEpwZUNoa1lYUmhPaUJXWldOMGIzSnpMQ0JrYVhOMFlXNWpaVG9nUkdsemRHRnVZMlZOWlhSeWFXTXBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JrWVhSaExteGxibWQwYUR0Y2JpQWdZMjl1YzNRZ2JXRjBjbWw0SUQwZ2FXNXBkRU52YjNKa2FXNWhkR1Z6S0c1SmRHVnRjeXdnYmtsMFpXMXpMQ0F3S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc1SmRHVnRjenNnS3l0cEtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJR2tnS3lBeE95QnFJRHdnYmtsMFpXMXpPeUFySzJvcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdRNklHNTFiV0psY2lBOUlDaGtZWFJoVzJsZElEMDlJRzUxYkd3cElIeDhJQ2hrWVhSaFcycGRJRDA5SUc1MWJHd3BJRDhnTUNBNklHUnBjM1JoYm1ObEtHUmhkR0ZiYVYwc0lHUmhkR0ZiYWwwcE8xeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnYldGMGNtbDRXMnBkVzJsZElEMGdaRHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlHMWhkSEpwZUR0Y2JuMWNibHh1THlvcUlFZGxibVZ5WVhSbGN5QmhjbkpoZVNCbWNtOXRJR0VnY21GdVoyVWdXMkpsWjJsdU95QmxibVJkSUc5eUlGdGlaV2RwYmpzZ1pXNWtLU0JwWmlCbGJtUkZlR05zZFhOcGRtVXVJQ29xTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGJsSmhibWRsS0dKbFoybHVPaUJ1ZFcxaVpYSXNJR1Z1WkRvZ2JuVnRZbVZ5TENCbGJtUkZlR05zZFhOcGRtVWdQU0JtWVd4elpTazZJRWx1ZERNeVFYSnlZWGtnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCbGJtUWdMU0JpWldkcGJpQXJJQ2hsYm1SRmVHTnNkWE5wZG1VZ1B5QXdJRG9nTVNrN1hHNGdJR052Ym5OMElITmxjbWxsY3lBOUlHNWxkeUJKYm5Rek1rRnljbUY1S0c1SmRHVnRjeWs3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNsY2JpQWdJQ0J6WlhKcFpYTmJhVjBnUFNCaVpXZHBiaUFySUdrN1hHNWNiaUFnY21WMGRYSnVJSE5sY21sbGN6dGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUc5eVpHVnlJRzltSUhaaGJIVmxjeUJoY3lCcFppQjBhR1Y1SUdGeVpTQnpiM0owWldRdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdGhibmxiWFgwZ2RtRnNkV1Z6SUVsdWNIVjBJR0Z5Y21GNUxseHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiY21WMlpYSnpaVDFtWVd4elpWMGdWMmhsZEdobGNpQjBieUJ5WlhSMWNtNGdjbVYyWlhKelpXUWdiM0prWlhJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSmJYWDBnVkdobElHOXlaR1Z5SUdOdmJYQjFkR1ZrTGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZWEpuVTI5eWRDaDJZV3gxWlhNNklHRnVlVnRkTENCeVpYWmxjbk5sSUQwZ1ptRnNjMlVwT2lCdWRXMWlaWEpiWFNCN1hHNGdJR052Ym5OMElITnZjblJtYmlBOUlISmxkbVZ5YzJVZ1B5QW9ZVG9nWVc1NVcxMHNJR0k2SUdGdWVWdGRLU0E5UGlBb1lsc3dYU0F0SUdGYk1GMHBJRG9nS0dFNklHRnVlVnRkTENCaU9pQmhibmxiWFNrZ1BUNGdLR0ZiTUYwZ0xTQmlXekJkS1R0Y2JpQWdZMjl1YzNRZ1pHVmpiM0lnUFNBb2Rqb2dZVzU1TENCcE9pQnVkVzFpWlhJcElEMCtJRnQyTENCcFhUc2dMeThnYzJWMElHbHVaR1Y0SUhSdklIWmhiSFZsWEc0Z0lHTnZibk4wSUhWdVpHVmpiM0lnUFNBb1lUb2dZVzU1VzEwcElEMCtJR0ZiTVYwN0lDOHZJR3hsWVhabElHOXViSGtnYVc1a1pYaGNiaUFnWTI5dWMzUWdYMkZ5WjNOdmNuUWdQU0FvWVhKeU9pQmhibmxiWFNrZ1BUNGdZWEp5TG0xaGNDaGtaV052Y2lrdWMyOXlkQ2h6YjNKMFptNHBMbTFoY0NoMWJtUmxZMjl5S1R0Y2JpQWdjbVYwZFhKdUlGOWhjbWR6YjNKMEtIWmhiSFZsY3lrN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUIwYUdVZ2FXNWtaWGhsY3lCdlppQjBhR1VnYlc5emRDQmthWFpsY25ObElHOWlhbVZqZEhNZ1lXTmpiM0prYVc1bklIUnZJSFJvWlNCa2FYTjBJR1oxYm1OMGFXOXVYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYkdWdVozUm9JSFJ2ZEdGc0lHNTFiV0psY2lCdlppQnZZbXBsWTNSelhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdiaUJ1ZFcxaVpYSWdiMllnWkdsMlpYSnpaU0JsYkdWdFpXNTBjeUIwYnlCbWFXNWtYRzRnS2lCQWNHRnlZVzBnZXlocE1Ub2diblZ0WW1WeUxDQnBNam9nYm5WdFltVnlLU0E5UGlCdWRXMWlaWEo5SUdScGMzUWdZU0JtZFc1amRHbHZiaUIzYUdsamFDQmpZV3hqZFd4aGRHVnpJR1JwYzNSaGJtTmxJR0psZEhkbFpXNWNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBkMjhnYjJKcVpXTjBjeUIxYzJsdVp5QjBhR1ZwY2lCcGJtUmxlR1Z6WEc0Z0tpQkFjbVYwZFhKdWN5QjdiblZ0WW1WeVcxMTlJRlJvWlNCcGJtUmxlR1Z6SUc5bUlIUm9aU0J0YjNOMElHUnBkbVZ5YzJVZ2IySnFaV04wYzF4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwUkdsMlpYSnpaVk4xWW5ObGRDaHNaVzVuZEdnNklHNTFiV0psY2l3Z2Jqb2diblZ0WW1WeUxDQmthWE4wT2lBb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0JtZFc1amRHbHZiaUJ0WVhoQ2VTaDJZV3gxWlhNNklFbDBaWEpoWW14bFNYUmxjbUYwYjNJOGJuVnRZbVZ5UGl3Z2IzSmtaWEpDZVRvZ0tHazZJRzUxYldKbGNpa2dQVDRnYm5WdFltVnlLU0I3WEc0Z0lDQWdiR1YwSUcxaGVGWmhiSFZsSUQwZ2JuVnNiRHRjYmlBZ0lDQnNaWFFnYldGNFQzSmtaWEpDZVNBOUlHNTFiR3c3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdWc1pXMWxiblFnYjJZZ2RtRnNkV1Z6S1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JsYkdWdFpXNTBUM0prWlhKQ2VTQTlJRzl5WkdWeVFua29aV3hsYldWdWRDazdYRzRnSUNBZ0lDQnBaaUFvYldGNFQzSmtaWEpDZVNBOVBTQnVkV3hzSUh4OElHVnNaVzFsYm5SUGNtUmxja0o1SUQ0Z2JXRjRUM0prWlhKQ2VTa2dlMXh1SUNBZ0lDQWdJQ0J0WVhoV1lXeDFaU0E5SUdWc1pXMWxiblE3WEc0Z0lDQWdJQ0FnSUcxaGVFOXlaR1Z5UW5rZ1BTQmxiR1Z0Wlc1MFQzSmtaWEpDZVR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHMWhlRlpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ2MzVmljMlYwSUQwZ1czSmhibVJ2YlVsdWRDaHNaVzVuZEdnZ0xTQXhLVjA3WEc0Z0lHTnZibk4wSUdOdmJYQnNaVzFsYm5RZ1BTQnVaWGNnVTJWMEtDazdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnNaVzVuZEdnN0lDc3JhU2tnZTF4dUlDQWdJR2xtSUNnaGMzVmljMlYwTG1sdVkyeDFaR1Z6S0drcEtWeHVJQ0FnSUNBZ1kyOXRjR3hsYldWdWRDNWhaR1FvYVNrN1hHNGdJSDFjYmx4dUlDQjNhR2xzWlNBb2MzVmljMlYwTG14bGJtZDBhQ0E4SUc0cElIdGNiaUFnSUNCamIyNXpkQ0JwWkhnZ1BTQnRZWGhDZVNoY2JpQWdJQ0FnSUdOdmJYQnNaVzFsYm5RdWRtRnNkV1Z6S0NrZ1lYTWdTWFJsY21GaWJHVkpkR1Z5WVhSdmNqeHVkVzFpWlhJK0xGeHVJQ0FnSUNBZ0tHa3BJRDArSUUxaGRHZ3ViV2x1TG1Gd2NHeDVLRTFoZEdnc0lITjFZbk5sZEM1dFlYQW9ablZ1WTNScGIyNG9kbUZzTENCcGJtUmxlQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWkdsemRDaHBMQ0IyWVd3cE8xeHVJQ0FnSUNBZ2ZTa3BLVHRjYmlBZ0lDQnBaaUFvYVdSNEtTQjdYRzRnSUNBZ0lDQnpkV0p6WlhRdWNIVnphQ2hwWkhncE8xeHVJQ0FnSUNBZ1kyOXRjR3hsYldWdWRDNWtaV3hsZEdVb2FXUjRLVHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlITjFZbk5sZER0Y2JuMWNibHh1THlvcVhHNGdLaUJTWlhSMWNtNXpJRzV2Y20xaGJHbDZaV1FnZG1WamRHOXlYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnWkdGMFlTQnVkVzFsY21sallXd2dZWEp5WVhsY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRzV2Y20xaGJHbDZaU2hrWVhSaE9pQldaV04wYjNJcE9pQldaV04wYjNJZ2UxeHVJQ0JzWlhRZ2JXVmhiaUE5SURBN1hHNGdJR3hsZENCemRHUWdQU0F3TzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWkdGMFlTNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQnRaV0Z1SUNzOUlHUmhkR0ZiYVYwN1hHNWNiaUFnYldWaGJpQXZQU0JrWVhSaExteGxibWQwYUR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdSaGRHRXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdjM1JrSUNzOUlDaGtZWFJoVzJsZElDMGdiV1ZoYmlrZ0tpQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cE8xeHVYRzRnSUhOMFpDQTlJRTFoZEdndWMzRnlkQ2h6ZEdRZ0x5QmtZWFJoTG14bGJtZDBhQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JrWVhSaExteGxibWQwYURzZ0t5dHBLVnh1SUNBZ0lHUmhkR0ZiYVYwZ1BTQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cElDOGdjM1JrTzF4dVhHNGdJSEpsZEhWeWJpQmtZWFJoTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVpwYm1SeklITmxkQ0JrYVdabVpYSmxibU5sSUdKbGRIZGxaVzRnZEhkdklHeHBjM1J6TGx4dUlDb2dRSEJoY21GdElIdGhibmxiWFgwZ1lTQlVhR1VnWm1seWMzUWdiR2x6ZEM1Y2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHSWdWR2hsSUhObFkyOXVaQ0JzYVhOMExseHVJQ29nUUhKbGRIVnliaUI3WVc1NVcxMTlYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCelpYUkVhV1ptWlhKbGJtTmxLR0U2SUdGdWVWdGRMQ0JpT2lCaGJubGJYU2s2SUdGdWVWdGRJSHRjYmlBZ1kyOXVjM1FnWWxObGRDQTlJRzVsZHlCVFpYUW9ZaWs3WEc0Z0lISmxkSFZ5YmlCQmNuSmhlUzVtY205dEtHNWxkeUJUWlhRb1lTNW1hV3gwWlhJb0tIZ3BJRDArSUNGaVUyVjBMbWhoY3loNEtTa3BMblpoYkhWbGN5Z3BLVHRjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsIGNhbGNEaXN0YW5jZU1hdHJpeCwgZmlsbFJhbmRvbU1hdHJpeCwgdmVjdG9yQWRkLCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IHJhbmRvbUludCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3JhbmRvbSc7XG4vKipcbiAqIEltcGxlbWVudHMgc3RvY2hhc3RpYyBwcm94aW1pdHkgZW1iZWRkaW5nLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBTUEVCYXNlXG4gKiBAbGluayBkb2k6MTAuMTAxNi9TMTA5My0zMjYzKDAzKTAwMTU1LTRcbiAqL1xuZXhwb3J0IGNsYXNzIFNQRUJhc2Uge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFQmFzZS5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBTUEVCYXNlXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2c7XG4gICAgICAgIHRoaXMuc3RlcHMgPSAoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc3RlcHMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDA7XG4gICAgICAgIHRoaXMuY3ljbGVzID0gKF9iID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmN5Y2xlcykgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMWU2O1xuICAgICAgICAvLyBTZWxlY3QgYSBjdXRvZmYgZGlzdGFuY2Uge2N1dG9mZn0gYW5kIC4uLlxuICAgICAgICB0aGlzLmN1dG9mZiA9IChfYyA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jdXRvZmYpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgIC8vIC4uLiBhbiBpbml0aWFsIGxlYXJuaW5nIHJhdGUge2xhbWJkYX0gPiAwXG4gICAgICAgIHRoaXMubGFtYmRhID0gKF9kID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxhbWJkYSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMi4wO1xuICAgICAgICB0aGlzLmRsYW1iZGEgPSAoX2UgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZGxhbWJkYSkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMC4wMTtcbiAgICAgICAgdGhpcy5sYW1iZGEyID0gdGhpcy5sYW1iZGEgLyAyLjtcbiAgICAgICAgdGhpcy5kbGFtYmRhMiA9IHRoaXMuZGxhbWJkYSAvIDIuO1xuICAgICAgICB0aGlzLmVwc2lsb24gPSAoX2YgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZXBzaWxvbikgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMWUtMTA7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBicmFjZS1zdHlsZVxuICAgICAgICB0aGlzLmRpc3RhbmNlRnVuY3Rpb24gPSAoX2cgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZGlzdGFuY2UpICE9PSBudWxsICYmIF9nICE9PSB2b2lkIDAgPyBfZyA6IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlO1xuICAgICAgICB0aGlzLmRpc3RhbmNlID0gW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGRpc3RhbmNlIG1hdHJpeC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBJbnB1dCB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuLlxuICAgICAqIEBtZW1iZXJvZiBTUEVCYXNlXG4gICAgICovXG4gICAgaW5pdERpc3RhbmNlKHZlY3RvcnMpIHtcbiAgICAgICAgdGhpcy5kaXN0YW5jZSA9IGNhbGNEaXN0YW5jZU1hdHJpeCh2ZWN0b3JzLCB0aGlzLmRpc3RhbmNlRnVuY3Rpb24pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIGRpc3RhbmNlIGJldHdlZW4gdGhlIHR3byB2ZWN0b3JzIGdpdmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIFNldCBvZiB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZXMgYmV0d2Vlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgxIEluZGV4IG9mIHRoZSBmaXJzdCB2ZWN0b3Igb2YgdGhlIHBhaXIuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4MiBJbmRleCBvZiB0aGUgc2Vjb25kIHZlY3RvciBvZiB0aGUgcGFpci5cbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IERpc3RhbmNlIGJldHdlZW4gdGhlc2UgdHdvIHZlY3RvcnMuXG4gICAgICovXG4gICAgY2FsY0Rpc3RhbmNlKHZlY3RvcnMsIGluZGV4MSwgaW5kZXgyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3RhbmNlW2luZGV4MV1baW5kZXgyXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSB2ZWN0b3JzIGdpdmVuIGludG8gYSB0d28tZGltZW5zaW9uYWwgc3BhY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1ZlY3RvcnN9IHZlY3RvcnMgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcy5cbiAgICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gU1BFIGNvb3JkaW5hdGVzIGluIEQgc3BhY2UuXG4gICAgICovXG4gICAgZW1iZWQodmVjdG9ycykge1xuICAgICAgICBjb25zdCBuSXRlbXMgPSB2ZWN0b3JzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgYXJlYVdpZHRoID0gNDA7XG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMgb2YgdGhlIE4gcG9pbnRzLlxuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGZpbGxSYW5kb21NYXRyaXgobkl0ZW1zLCBTUEVCYXNlLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcbiAgICAgICAgbGV0IGxhbWJkYTIgPSB0aGlzLmxhbWJkYTI7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzID09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMgPSB2ZWN0b3JzLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGZvciAobGV0IGN5Y2xlID0gMDsgY3ljbGUgPCB0aGlzLmN5Y2xlczsgKytjeWNsZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgc3RlcCA9IDA7IHN0ZXAgPCB0aGlzLnN0ZXBzOyArK3N0ZXApIHtcbiAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdHdvIHBvaW50cywgaSBhbmQgaiwgYXQgcmFuZG9tLCAuLi5cbiAgICAgICAgICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgbGV0IGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSB0aGVpciBwcm94aW1pdHkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogYW5kIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gY29tcHV0ZSB0aGVpciBFdWNsaWRlYW4gZGlzdGFuY2Ugb24gdGhlIEQtZGltZW5zaW9uYWwgbWFwLCBkaWouXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xuICAgICAgICAgICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuY3V0b2ZmID09IDApIHx8IChyIDw9IHRoaXMuY3V0b2ZmKSB8fCAoZCA8IHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBsYW1iZGEyICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGkgYW5kIHhqLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tpXSA9IHZlY3RvckFkZChyb3dpLCBkaWZmSUosIG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBEZWNyZWFzZSB0aGUgbGVhcm5pbmcgcmF0ZSB7bGFtYmRhfSBieSBhIHByZXNjcmliZWQge2RsYW1iZGF9LlxuICAgICAgICAgICAgbGFtYmRhMiAtPSB0aGlzLmRsYW1iZGEyO1xuICAgICAgICAgICAgaWYgKGxhbWJkYTIgPD0gMC4pIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gICAgfVxufVxuU1BFQmFzZS5kaW1lbnNpb24gPSAyO1xuLyoqXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgUFNQRUJhc2VcbiAqIEBsaW5rIGRvaToxMC4xMDE2L1MxMDkzLTMyNjMoMDMpMDAxNTUtNFxuICovXG5leHBvcnQgY2xhc3MgUFNQRUJhc2UgZXh0ZW5kcyBTUEVCYXNlIHtcbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIHZlY3RvcnMgZ2l2ZW4gaW50byBhIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyBhIG1vZGlmaWVkIHVwZGF0ZSBydWxlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMuXG4gICAgICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IFNQRSBjb29yZGluYXRlcyBpbiBEIHNwYWNlLlxuICAgICAqL1xuICAgIGVtYmVkKHZlY3RvcnMpIHtcbiAgICAgICAgY29uc3Qgbkl0ZW1zID0gdmVjdG9ycy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGFyZWFXaWR0aCA9IDQwO1xuICAgICAgICAvLyAgSW5pdGlhbGl6ZSB0aGUgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcyBvZiB0aGUgTiBwb2ludHMuXG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmlsbFJhbmRvbU1hdHJpeChuSXRlbXMsIFBTUEVCYXNlLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcbiAgICAgICAgbGV0IGxhbWJkYSA9IHRoaXMubGFtYmRhO1xuICAgICAgICB0aGlzLmluaXREaXN0YW5jZSh2ZWN0b3JzKTtcbiAgICAgICAgZm9yIChsZXQgY3ljbGUgPSAwOyBjeWNsZSA8IHRoaXMuY3ljbGVzOyArK2N5Y2xlKSB7XG4gICAgICAgICAgICAvLyBTZWxlY3QgYSBwb2ludCwgaSwgYXQgcmFuZG9tIChwaXZvdCkuXG4gICAgICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICBjb25zdCByb3dpID0gY29vcmRpbmF0ZXNbaV07XG4gICAgICAgICAgICAvLyBGb3IgZXZlcnkgcG9pbnQgaiAhPSBpIC4uLlxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgICAgICAgICAgIGlmIChpID09IGopXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSBpdHMgcHJveGltaXR5IHRvIGkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogLi4uXG4gICAgICAgICAgICAgICAgY29uc3QgciA9IHRoaXMuY2FsY0Rpc3RhbmNlKHZlY3RvcnMsIGksIGopO1xuICAgICAgICAgICAgICAgIC8vIC4uLiBhbmQgY29tcHV0ZSB0aGVpciBFdWNsaWRlYW4gZGlzdGFuY2Ugb24gdGhlIEQtZGltZW5zaW9uYWwgbWFwLCBkaWouXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xuICAgICAgICAgICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuY3V0b2ZmID09IDApIHx8IChyIDw9IHRoaXMuY3V0b2ZmKSB8fCAoZCA8IHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBsYW1iZGEgKiAociAtIGQpIC8gKGQgKyB0aGlzLmVwc2lsb24pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xuICAgICAgICAgICAgICAgICAgICAvLyAuLi4gdXBkYXRlIHRoZSBjb29yZGluYXRlcyB4ai5cbiAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXNbal0gPSB2ZWN0b3JBZGQocm93aiwgZGlmZklKLCAtbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRGVjcmVhc2UgdGhlIGxlYXJuaW5nIHJhdGUge2xhbWJkYX0gYnkgYSBwcmVzY3JpYmVkIHtkbGFtYmRhfS5cbiAgICAgICAgICAgIGxhbWJkYSAtPSB0aGlzLmRsYW1iZGE7XG4gICAgICAgICAgICBpZiAobGFtYmRhIDw9IDAuKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBtb2RpZmllZCBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIE9yaWdpbmFsU1BFXG4gKiBAbGluayBkb2k6MTAuMTAwMi9qY2MuMTAyMzRcbiAqL1xuZXhwb3J0IGNsYXNzIE9yaWdpbmFsU1BFIGV4dGVuZHMgU1BFQmFzZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5jeWNsZXMgPSAoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY3ljbGVzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAxZTM7XG4gICAgICAgIHRoaXMuc3RlcHMgPSAoX2IgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc3RlcHMpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDEwMDAwMDtcbiAgICAgICAgdGhpcy5yYWRpdXNQZXJjZW50ID0gKF9jID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJhZGl1c1BlcmNlbnQpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDEuMDtcbiAgICAgICAgdGhpcy5tYXhEaXN0YW5jZSA9IChfZCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5tYXhEaXN0YW5jZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogbnVsbDtcbiAgICAgICAgdGhpcy5tYXhEaXN0YW5jZVN0ZXBzID0gKF9lID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm1heERpc3RhbmNlU3RlcHMpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IG51bGw7XG4gICAgfVxuICAgIGVtYmVkKHZlY3RvcnMpIHtcbiAgICAgICAgY29uc3Qgbkl0ZW1zID0gdmVjdG9ycy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGFyZWFXaWR0aCA9IDQwO1xuICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzIG9mIHRoZSBOIHBvaW50cy5cbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBmaWxsUmFuZG9tTWF0cml4KG5JdGVtcywgT3JpZ2luYWxTUEUuZGltZW5zaW9uLCBhcmVhV2lkdGgpO1xuICAgICAgICB0aGlzLmluaXREaXN0YW5jZSh2ZWN0b3JzKTtcbiAgICAgICAgaWYgKHRoaXMubWF4RGlzdGFuY2VTdGVwcyA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlU3RlcHMgPSBuSXRlbXMgKiBNYXRoLmZsb29yKChuSXRlbXMgLSAxKSAvIDIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1heERpc3RhbmNlID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMubWF4RGlzdGFuY2UgPSAtMWUzNztcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGhpcy5tYXhEaXN0YW5jZVN0ZXBzOyBuKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgbGV0IGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuY2FsY0Rpc3RhbmNlKHZlY3RvcnMsIGksIGopO1xuICAgICAgICAgICAgICAgIGlmIChkID4gdGhpcy5tYXhEaXN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlID0gZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxhbWJkYSA9IHRoaXMubGFtYmRhO1xuICAgICAgICBjb25zdCByYWRpdXMgPSAodGhpcy5yYWRpdXNQZXJjZW50ID09IDAuMCkgPyB0aGlzLm1heERpc3RhbmNlIDogdGhpcy5tYXhEaXN0YW5jZSAqIHRoaXMucmFkaXVzUGVyY2VudDtcbiAgICAgICAgZm9yIChsZXQgY3ljbGUgPSAwOyBjeWNsZSA8IHRoaXMuY3ljbGVzOyArK2N5Y2xlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBzdGVwID0gMDsgc3RlcCA8IHRoaXMuc3RlcHM7ICsrc3RlcCkge1xuICAgICAgICAgICAgICAgIC8vIFNlbGVjdCB0d28gcG9pbnRzLCBpIGFuZCBqLCBhdCByYW5kb20sIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IGkgPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICBsZXQgaiA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpID09IGopXG4gICAgICAgICAgICAgICAgICAgIGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dpID0gY29vcmRpbmF0ZXNbaV07XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93aiA9IGNvb3JkaW5hdGVzW2pdO1xuICAgICAgICAgICAgICAgIC8vIHJldHJpZXZlIChvciBldmFsdWF0ZSkgdGhlaXIgcHJveGltaXR5IGluIHRoZSBpbnB1dCBzcGFjZSwgcmlqIGFuZCAuLi5cbiAgICAgICAgICAgICAgICBjb25zdCByID0gdGhpcy5jYWxjRGlzdGFuY2UodmVjdG9ycywgaSwgaik7XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSB0aGVpciBFdWNsaWRlYW4gZGlzdGFuY2Ugb24gdGhlIEQtZGltZW5zaW9uYWwgbWFwLCBkaWouXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xuICAgICAgICAgICAgICAgIGlmICgociA8PSByYWRpdXMpIHx8IChkIDwgcikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXVsdGlwbGllciA9IGxhbWJkYSAqIDAuNSAqIChyIC0gZCkgLyAoZCArIHRoaXMuZXBzaWxvbik7XG4gICAgICAgICAgICAgICAgICAgIC8vIC4uLiB1cGRhdGUgdGhlIGNvb3JkaW5hdGVzIHhpIGFuZCB4ai5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlmZklKID0gdmVjdG9yQWRkKHJvd2ksIHJvd2osIC0xKTtcbiAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXNbaV0gPSB2ZWN0b3JBZGQocm93aSwgZGlmZklKLCBtdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXNbal0gPSB2ZWN0b3JBZGQocm93aiwgZGlmZklKLCAtbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFtYmRhIC09ICgodGhpcy5sYW1iZGEgLSB0aGlzLmRsYW1iZGEpIC8gKHRoaXMuY3ljbGVzIC0gMS4wKSk7XG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBpZiAobGFtYmRhIDwgdGhpcy5kbGFtYmRhKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzQmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMzQmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGRFRDd3dRa0ZCTUVJc1JVRkRNVUlzYTBKQlFXdENMRVZCUTJ4Q0xHZENRVUZuUWl4RlFVTm9RaXhUUVVGVExFZEJRMVlzVFVGQlRTeHBSRUZCYVVRc1EwRkJRenRCUVVONlJDeFBRVUZQTEVWQlFVTXNVMEZCVXl4RlFVRkRMRTFCUVUwc2MwTkJRWE5ETEVOQlFVTTdRVUZGTDBRN096czdPenRIUVUxSE8wRkJRMGdzVFVGQlRTeFBRVUZQTEU5QlFVODdTVUZoYkVJN096czdUMEZKUnp0SlFVTklMRmxCUVZrc1QwRkJhVUk3TzFGQlF6TkNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzVFVGQlFTeFBRVUZQTEdGQlFWQXNUMEZCVHl4MVFrRkJVQ3hQUVVGUExFTkJRVVVzUzBGQlN5eHRRMEZCU1N4RFFVRkRMRU5CUVVNN1VVRkRha01zU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRkJMRTlCUVU4c1lVRkJVQ3hQUVVGUExIVkNRVUZRTEU5QlFVOHNRMEZCUlN4TlFVRk5MRzFEUVVGSkxFZEJRVWNzUTBGQlF6dFJRVU55UXl3MFEwRkJORU03VVVGRE5VTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGQkxFOUJRVThzWVVGQlVDeFBRVUZQTEhWQ1FVRlFMRTlCUVU4c1EwRkJSU3hOUVVGTkxHMURRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnVReXcwUTBGQk5FTTdVVUZETlVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZCTEU5QlFVOHNZVUZCVUN4UFFVRlBMSFZDUVVGUUxFOUJRVThzUTBGQlJTeE5RVUZOTEcxRFFVRkpMRWRCUVVjc1EwRkJRenRSUVVOeVF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTFCUVVFc1QwRkJUeXhoUVVGUUxFOUJRVThzZFVKQlFWQXNUMEZCVHl4RFFVRkZMRTlCUVU4c2JVTkJRVWtzU1VGQlNTeERRVUZETzFGQlEzaERMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkRPVUlzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGRExFVkJRVVVzUTBGQlF6dFJRVU5vUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFMUJRVUVzVDBGQlR5eGhRVUZRTEU5QlFVOHNkVUpCUVZBc1QwRkJUeXhEUVVGRkxFOUJRVThzYlVOQlFVa3NTMEZCU3l4RFFVRkRPMUZCUTNwRExIVkRRVUYxUXp0UlFVTjJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1RVRkJRU3hQUVVGUExHRkJRVkFzVDBGQlR5eDFRa0ZCVUN4UFFVRlBMRU5CUVVVc1VVRkJVU3h0UTBGQlNTd3dRa0ZCTUVJc1EwRkJRenRSUVVONFJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOeVFpeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEVHl4WlFVRlpMRU5CUVVNc1QwRkJaMEk3VVVGRGNrTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhyUWtGQmEwSXNRMEZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNN1NVRkRja1VzUTBGQlF6dEpRVVZFT3pzN096czdPMDlCVDBjN1NVRkRUeXhaUVVGWkxFTkJRVU1zVDBGQlowSXNSVUZCUlN4TlFVRmpMRVZCUVVVc1RVRkJZenRSUVVOeVJTeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEZGtNc1EwRkJRenRKUVVWRU96czdPenRQUVV0SE8wbEJRMGtzUzBGQlN5eERRVUZETEU5QlFXZENPMUZCUXpOQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRPVUlzVFVGQlRTeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTNKQ0xEUkVRVUUwUkR0UlFVTTFSQ3hOUVVGTkxGZEJRVmNzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFVkJRVVVzVDBGQlR5eERRVUZETEZOQlFWTXNSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJRenRSUVVVelJTeEpRVUZKTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8xRkJSVE5DTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFVkJRVVU3V1VGRGJrSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZETEVOQlFVTXNRMEZCUXp0VFFVTXZRanRSUVVWRUxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZNMElzUzBGQlN5eEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRVZCUVVVc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVN1dVRkRhRVFzUzBGQlN5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVN1owSkJRelZETERaRFFVRTJRenRuUWtGRE4wTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzJkQ1FVTTFRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRekZDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNN2IwSkJRVVVzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRmNrTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTTFRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJSVFZDTERaRlFVRTJSVHRuUWtGRE4wVXNUVUZCVFN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU16UXl4elJVRkJjMFU3WjBKQlEzUkZMRTFCUVUwc1EwRkJReXhIUVVGSExEQkNRVUV3UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZGYWtRc2FVUkJRV2xFTzJkQ1FVTnFSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVTdiMEpCUTNaRUxFMUJRVTBzVlVGQlZTeEhRVUZITEU5QlFVOHNSMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03YjBKQlEzaEVMSGREUVVGM1F6dHZRa0ZEZUVNc1RVRkJUU3hOUVVGTkxFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZEZWtNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzI5Q1FVTnlSQ3hYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0cFFrRkRka1E3WVVGRFJqdFpRVU5FTEdsRlFVRnBSVHRaUVVOcVJTeFBRVUZQTEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRenRaUVVONlFpeEpRVUZKTEU5QlFVOHNTVUZCU1N4RlFVRkZMRVZCUVVVN1owSkJRMnBDTEUxQlFVMDdZVUZEVUR0VFFVTkdPMUZCUTBRc1QwRkJUeXhYUVVGWExFTkJRVU03U1VGRGNrSXNRMEZCUXpzN1FVRXhSMmRDTEdsQ1FVRlRMRWRCUVVjc1EwRkJReXhEUVVGRE8wRkJOa2RxUXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVVVGQlV5eFRRVUZSTEU5QlFVODdTVUZEYmtNN096czdPMDlCUzBjN1NVRkRTU3hMUVVGTExFTkJRVU1zVDBGQlowSTdVVUZETTBJc1RVRkJUU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTTVRaXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEY2tJc05rUkJRVFpFTzFGQlF6ZEVMRTFCUVUwc1YwRkJWeXhIUVVGSExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1JVRkJSU3hSUVVGUkxFTkJRVU1zVTBGQlV5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXpWRkxFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkZla0lzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVVelFpeExRVUZMTEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNc1JVRkJSU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSVHRaUVVOb1JDeDNRMEZCZDBNN1dVRkRlRU1zVFVGQlRTeERRVUZETEVkQlFWY3NVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xbEJRM0JETEUxQlFVMHNTVUZCU1N4SFFVRkhMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVVUxUWl3MlFrRkJOa0k3V1VGRE4wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGREwwSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenR2UWtGQlJTeFRRVUZUTzJkQ1FVTnlRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRelZDTERSRlFVRTBSVHRuUWtGRE5VVXNUVUZCVFN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU16UXl3d1JVRkJNRVU3WjBKQlF6RkZMRTFCUVUwc1EwRkJReXhIUVVGSExEQkNRVUV3UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtRc2FVUkJRV2xFTzJkQ1FVTnFSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVTdiMEpCUTNaRUxFMUJRVTBzVlVGQlZTeEhRVUZITEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03YjBKQlEzcEVMRTFCUVUwc1RVRkJUU3hIUVVGSExGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzcERMR2xEUVVGcFF6dHZRa0ZEYWtNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdhVUpCUTNaRU8yRkJRMFk3V1VGRFJDeHBSVUZCYVVVN1dVRkRha1VzVFVGQlRTeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1dVRkRka0lzU1VGQlNTeE5RVUZOTEVsQlFVa3NSVUZCUlN4RlFVRkZPMmRDUVVOb1FpeE5RVUZOTzJGQlExQTdVMEZEUmp0UlFVTkVMRTlCUVU4c1YwRkJWeXhEUVVGRE8wbEJRM0pDTEVOQlFVTTdRMEZEUmp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVDBGQlR5eFhRVUZaTEZOQlFWRXNUMEZCVHp0SlFWZDBReXhaUVVGWkxFOUJRV2xDT3p0UlFVTXpRaXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEWml4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVUVzVDBGQlR5eGhRVUZRTEU5QlFVOHNkVUpCUVZBc1QwRkJUeXhEUVVGRkxFMUJRVTBzYlVOQlFVa3NSMEZCUnl4RFFVRkRPMUZCUTNKRExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NUVUZCUVN4UFFVRlBMR0ZCUVZBc1QwRkJUeXgxUWtGQlVDeFBRVUZQTEVOQlFVVXNTMEZCU3l4dFEwRkJTU3hOUVVGTkxFTkJRVU03VVVGRGRFTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhOUVVGQkxFOUJRVThzWVVGQlVDeFBRVUZQTEhWQ1FVRlFMRTlCUVU4c1EwRkJSU3hoUVVGaExHMURRVUZKTEVkQlFVY3NRMEZCUXp0UlFVTnVSQ3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEUxQlFVRXNUMEZCVHl4aFFVRlFMRTlCUVU4c2RVSkJRVkFzVDBGQlR5eERRVUZGTEZkQlFWY3NiVU5CUVVrc1NVRkJTU3hEUVVGRE8xRkJRMmhFTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUjBGQlJ5eE5RVUZCTEU5QlFVOHNZVUZCVUN4UFFVRlBMSFZDUVVGUUxFOUJRVThzUTBGQlJTeG5Ra0ZCWjBJc2JVTkJRVWtzU1VGQlNTeERRVUZETzBsQlF6VkVMRU5CUVVNN1NVRkZUU3hMUVVGTExFTkJRVU1zVDBGQlowSTdVVUZETTBJc1RVRkJUU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTTVRaXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEY2tJc05FUkJRVFJFTzFGQlF6VkVMRTFCUVUwc1YwRkJWeXhIUVVGSExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1JVRkJSU3hYUVVGWExFTkJRVU1zVTBGQlV5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUlM5RkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZNMElzU1VGQlNTeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEycERMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNSMEZCUnl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12UkR0UlFVTkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzU1VGQlNTeEpRVUZKTEVWQlFVVTdXVUZETlVJc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXp0WlFVTjZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU01UXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdaMEpCUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMmRDUVVOMlJDeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRPMjlDUVVGRkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJSWEpETEUxQlFVMHNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE0wTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJUdHZRa0ZEZUVJc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eERRVUZETEVOQlFVTTdhVUpCUTNSQ08yRkJRMFk3VTBGRFJqdFJRVVZFTEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGVrSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTTdVVUZGZEVjc1MwRkJTeXhKUVVGSkxFdEJRVXNzUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVTdXVUZEYUVRc1MwRkJTeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFVVTdaMEpCUXpWRExEWkRRVUUyUXp0blFrRkROME1zVFVGQlRTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8yZENRVU0xUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdaMEpCUXpGQ0xFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTTdiMEpCUVVVc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0blFrRkZja01zVFVGQlRTeEpRVUZKTEVkQlFVY3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU0xUWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUlRWQ0xIbEZRVUY1UlR0blFrRkRla1VzVFVGQlRTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVNelF5eHJSVUZCYTBVN1owSkJRMnhGTEUxQlFVMHNRMEZCUXl4SFFVRkhMREJDUVVFd1FpeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRmFrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSVHR2UWtGRE5VSXNUVUZCVFN4VlFVRlZMRWRCUVVjc1RVRkJUU3hIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN2IwSkJReTlFTEhkRFFVRjNRenR2UWtGRGVFTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGVrTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8yOUNRVU55UkN4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dHBRa0ZEZGtRN1lVRkRSanRaUVVORUxFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZCUXl4RFFVRkRPMWxCUTJwRkxFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1owSkJRM3BDTEUxQlFVMDdZVUZEVUR0VFFVTkdPMUZCUTBRc1QwRkJUeXhYUVVGWExFTkJRVU03U1VGRGNrSXNRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHRQY0hScGIyNXpMQ0JEYjI5eVpHbHVZWFJsY3l3Z1ZtVmpkRzl5Y3l3Z1JHbHpkR0Z1WTJWTlpYUnlhV045SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1hHNGdJR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1SUNCallXeGpSR2x6ZEdGdVkyVk5ZWFJ5YVhnc1hHNGdJR1pwYkd4U1lXNWtiMjFOWVhSeWFYZ3NYRzRnSUhabFkzUnZja0ZrWkN4Y2JuMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHR5WVc1a2IyMUpiblI5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNKaGJtUnZiU2M3WEc1Y2JpOHFLbHh1SUNvZ1NXMXdiR1Z0Wlc1MGN5QnpkRzlqYUdGemRHbGpJSEJ5YjNocGJXbDBlU0JsYldKbFpHUnBibWN1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUZOUVJVSmhjMlZjYmlBcUlFQnNhVzVySUdSdmFUb3hNQzR4TURFMkwxTXhNRGt6TFRNeU5qTW9NRE1wTURBeE5UVXRORnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVTFCRlFtRnpaU0I3WEc0Z0lIQnliM1JsWTNSbFpDQnpkR0YwYVdNZ1pHbHRaVzV6YVc5dUlEMGdNanRjYmlBZ2NISnZkR1ZqZEdWa0lITjBaWEJ6T2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQmplV05zWlhNNklHNTFiV0psY2p0Y2JpQWdjSEp2ZEdWamRHVmtJR04xZEc5bVpqb2diblZ0WW1WeU8xeHVJQ0J3Y205MFpXTjBaV1FnYkdGdFltUmhPaUJ1ZFcxaVpYSTdYRzRnSUhCeWIzUmxZM1JsWkNCa2JHRnRZbVJoT2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQnNZVzFpWkdFeU9pQnVkVzFpWlhJN1hHNGdJSEJ5YjNSbFkzUmxaQ0JrYkdGdFltUmhNam9nYm5WdFltVnlPMXh1SUNCd2NtOTBaV04wWldRZ1pYQnphV3h2YmpvZ2JuVnRZbVZ5TzF4dUlDQndjbTkwWldOMFpXUWdaR2x6ZEdGdVkyVkdkVzVqZEdsdmJqb2dSR2x6ZEdGdVkyVk5aWFJ5YVdNN1hHNGdJR1JwYzNSaGJtTmxPaUJEYjI5eVpHbHVZWFJsY3p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQlRVRVZDWVhObExseHVJQ0FnS2lCQWNHRnlZVzBnZTA5d2RHbHZibk45SUZ0dmNIUnBiMjV6WFNCUGNIUnBiMjV6SUhSdklIQmhjM01nZEc4Z2RHaGxJR052Ym5OMGNuVmpkRzl5TGx4dUlDQWdLaUJBYldWdFltVnliMllnVTFCRlFtRnpaVnh1SUNBZ0tpOWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3o4NklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCMGFHbHpMbk4wWlhCeklEMGdiM0IwYVc5dWN6OHVjM1JsY0hNZ1B6OGdNRHRjYmlBZ0lDQjBhR2x6TG1ONVkyeGxjeUE5SUc5d2RHbHZibk0vTG1ONVkyeGxjeUEvUHlBeFpUWTdYRzRnSUNBZ0x5OGdVMlZzWldOMElHRWdZM1YwYjJabUlHUnBjM1JoYm1ObElIdGpkWFJ2Wm1aOUlHRnVaQ0F1TGk1Y2JpQWdJQ0IwYUdsekxtTjFkRzltWmlBOUlHOXdkR2x2Ym5NL0xtTjFkRzltWmlBL1B5QXdPMXh1SUNBZ0lDOHZJQzR1TGlCaGJpQnBibWwwYVdGc0lHeGxZWEp1YVc1bklISmhkR1VnZTJ4aGJXSmtZWDBnUGlBd1hHNGdJQ0FnZEdocGN5NXNZVzFpWkdFZ1BTQnZjSFJwYjI1elB5NXNZVzFpWkdFZ1B6OGdNaTR3TzF4dUlDQWdJSFJvYVhNdVpHeGhiV0prWVNBOUlHOXdkR2x2Ym5NL0xtUnNZVzFpWkdFZ1B6OGdNQzR3TVR0Y2JpQWdJQ0IwYUdsekxteGhiV0prWVRJZ1BTQjBhR2x6TG14aGJXSmtZUzh5TGp0Y2JpQWdJQ0IwYUdsekxtUnNZVzFpWkdFeUlEMGdkR2hwY3k1a2JHRnRZbVJoTHpJdU8xeHVJQ0FnSUhSb2FYTXVaWEJ6YVd4dmJpQTlJRzl3ZEdsdmJuTS9MbVZ3YzJsc2IyNGdQejhnTVdVdE1UQTdYRzRnSUNBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElHSnlZV05sTFhOMGVXeGxYRzRnSUNBZ2RHaHBjeTVrYVhOMFlXNWpaVVoxYm1OMGFXOXVJRDBnYjNCMGFXOXVjejh1WkdsemRHRnVZMlVnUHo4Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVN1hHNGdJQ0FnZEdocGN5NWthWE4wWVc1alpTQTlJRnRkTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVhWFJwWVd4cGVtVnpJR1JwYzNSaGJtTmxJRzFoZEhKcGVDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRXWldOMGIzSnpmU0IyWldOMGIzSnpJRWx1Y0hWMElIWmxZM1J2Y25NZ2RHOGdZMkZzWTNWc1lYUmxJR1JwYzNSaGJtTmxJR0psZEhkbFpXNHVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQlRVRVZDWVhObFhHNGdJQ0FxTDF4dUlDQndjbTkwWldOMFpXUWdhVzVwZEVScGMzUmhibU5sS0habFkzUnZjbk02SUZabFkzUnZjbk1wSUh0Y2JpQWdJQ0IwYUdsekxtUnBjM1JoYm1ObElEMGdZMkZzWTBScGMzUmhibU5sVFdGMGNtbDRLSFpsWTNSdmNuTXNJSFJvYVhNdVpHbHpkR0Z1WTJWR2RXNWpkR2x2YmlrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMkZzWTNWc1lYUmxjeUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCMGQyOGdkbVZqZEc5eWN5Qm5hWFpsYmk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFdaV04wYjNKemZTQjJaV04wYjNKeklGTmxkQ0J2WmlCMlpXTjBiM0p6SUhSdklHTmhiR04xYkdGMFpTQmthWE4wWVc1alpYTWdZbVYwZDJWbGJpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdsdVpHVjRNU0JKYm1SbGVDQnZaaUIwYUdVZ1ptbHljM1FnZG1WamRHOXlJRzltSUhSb1pTQndZV2x5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdhVzVrWlhneUlFbHVaR1Y0SUc5bUlIUm9aU0J6WldOdmJtUWdkbVZqZEc5eUlHOW1JSFJvWlNCd1lXbHlMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKOUlFUnBjM1JoYm1ObElHSmxkSGRsWlc0Z2RHaGxjMlVnZEhkdklIWmxZM1J2Y25NdVhHNGdJQ0FxTDF4dUlDQndjbTkwWldOMFpXUWdZMkZzWTBScGMzUmhibU5sS0habFkzUnZjbk02SUZabFkzUnZjbk1zSUdsdVpHVjRNVG9nYm5WdFltVnlMQ0JwYm1SbGVESTZJRzUxYldKbGNpazZJRzUxYldKbGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaR2x6ZEdGdVkyVmJhVzVrWlhneFhWdHBibVJsZURKZE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ0WW1Wa2N5QjBhR1VnZG1WamRHOXljeUJuYVhabGJpQnBiblJ2SUdFZ2RIZHZMV1JwYldWdWMybHZibUZzSUhOd1lXTmxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFabFkzUnZjbk45SUhabFkzUnZjbk1nUkMxa2FXMWxibk5wYjI1aGJDQmpiMjl5WkdsdVlYUmxjeTVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdRMjl2Y21ScGJtRjBaWE45SUZOUVJTQmpiMjl5WkdsdVlYUmxjeUJwYmlCRUlITndZV05sTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdWdFltVmtLSFpsWTNSdmNuTTZJRlpsWTNSdmNuTXBPaUJEYjI5eVpHbHVZWFJsY3lCN1hHNGdJQ0FnWTI5dWMzUWdia2wwWlcxeklEMGdkbVZqZEc5eWN5NXNaVzVuZEdnN1hHNGdJQ0FnWTI5dWMzUWdZWEpsWVZkcFpIUm9JRDBnTkRBN1hHNGdJQ0FnTHk4Z1NXNXBkR2xoYkdsNlpTQjBhR1VnUkMxa2FXMWxibk5wYjI1aGJDQmpiMjl5WkdsdVlYUmxjeUJ2WmlCMGFHVWdUaUJ3YjJsdWRITXVYRzRnSUNBZ1kyOXVjM1FnWTI5dmNtUnBibUYwWlhNZ1BTQm1hV3hzVW1GdVpHOXRUV0YwY21sNEtHNUpkR1Z0Y3l3Z1UxQkZRbUZ6WlM1a2FXMWxibk5wYjI0c0lHRnlaV0ZYYVdSMGFDazdYRzVjYmlBZ0lDQnNaWFFnYkdGdFltUmhNaUE5SUhSb2FYTXViR0Z0WW1SaE1qdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxuTjBaWEJ6SUQwOUlEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWMzUmxjSE1nUFNCMlpXTjBiM0p6TG14bGJtZDBhQzB4TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWFXNXBkRVJwYzNSaGJtTmxLSFpsWTNSdmNuTXBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdZM2xqYkdVZ1BTQXdPeUJqZVdOc1pTQThJSFJvYVhNdVkzbGpiR1Z6T3lBcksyTjVZMnhsS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCemRHVndJRDBnTURzZ2MzUmxjQ0E4SUhSb2FYTXVjM1JsY0hNN0lDc3JjM1JsY0NrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJUWld4bFkzUWdkSGR2SUhCdmFXNTBjeXdnYVNCaGJtUWdhaXdnWVhRZ2NtRnVaRzl0TENBdUxpNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FTQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2FpQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0IzYUdsc1pTQW9hU0E5UFNCcUtTQnFJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY205M2FTQTlJR052YjNKa2FXNWhkR1Z6VzJsZE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeWIzZHFJRDBnWTI5dmNtUnBibUYwWlhOYmFsMDdYRzVjYmlBZ0lDQWdJQ0FnTHk4Z0xpNHVJSEpsZEhKcFpYWmxJQ2h2Y2lCbGRtRnNkV0YwWlNrZ2RHaGxhWElnY0hKdmVHbHRhWFI1SUdsdUlIUm9aU0JwYm5CMWRDQnpjR0ZqWlN3Z2NtbHFJR0Z1WkNBdUxpNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NpQTlJSFJvYVhNdVkyRnNZMFJwYzNSaGJtTmxLSFpsWTNSdmNuTXNJR2tzSUdvcE8xeHVJQ0FnSUNBZ0lDQXZMeUF1TGk0Z1kyOXRjSFYwWlNCMGFHVnBjaUJGZFdOc2FXUmxZVzRnWkdsemRHRnVZMlVnYjI0Z2RHaGxJRVF0WkdsdFpXNXphVzl1WVd3Z2JXRndMQ0JrYVdvdVhHNGdJQ0FnSUNBZ0lHTnZibk4wSUdRZ1BTQmpZV3hqZFd4aGRHVkZkV05zYVdSbFlXNUVhWE4wWVc1alpTaHliM2RwTENCeWIzZHFLVHRjYmx4dUlDQWdJQ0FnSUNBdkx5QkpaaUJ5YVdvZ1BEMGdjbU1zSUc5eUlHbG1JSEpwYWlBK0lISmpJR0Z1WkNCa2FXb2dQQ0J5YVdvZ0xpNHVYRzRnSUNBZ0lDQWdJR2xtSUNnb2RHaHBjeTVqZFhSdlptWWdQVDBnTUNrZ2ZId2dLSElnUEQwZ2RHaHBjeTVqZFhSdlptWXBJSHg4SUNoa0lEd2djaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdGRXeDBhWEJzYVdWeUlEMGdiR0Z0WW1SaE1pb29jaUF0SUdRcElDOGdLR1FnS3lCMGFHbHpMbVZ3YzJsc2IyNHBPMXh1SUNBZ0lDQWdJQ0FnSUM4dklDNHVMaUIxY0dSaGRHVWdkR2hsSUdOdmIzSmthVzVoZEdWeklIaHBJR0Z1WkNCNGFpNWNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQmthV1ptU1VvZ1BTQjJaV04wYjNKQlpHUW9jbTkzYVN3Z2NtOTNhaXdnTFRFcE8xeHVJQ0FnSUNBZ0lDQWdJR052YjNKa2FXNWhkR1Z6VzJsZElEMGdkbVZqZEc5eVFXUmtLSEp2ZDJrc0lHUnBabVpKU2l3Z2JYVnNkR2x3YkdsbGNpazdYRzRnSUNBZ0lDQWdJQ0FnWTI5dmNtUnBibUYwWlhOYmFsMGdQU0IyWldOMGIzSkJaR1FvY205M2Fpd2daR2xtWmtsS0xDQXRiWFZzZEdsd2JHbGxjaWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUM4dklFUmxZM0psWVhObElIUm9aU0JzWldGeWJtbHVaeUJ5WVhSbElIdHNZVzFpWkdGOUlHSjVJR0VnY0hKbGMyTnlhV0psWkNCN1pHeGhiV0prWVgwdVhHNGdJQ0FnSUNCc1lXMWlaR0V5SUMwOUlIUm9hWE11Wkd4aGJXSmtZVEk3WEc0Z0lDQWdJQ0JwWmlBb2JHRnRZbVJoTWlBOFBTQXdMaWtnZTF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdOdmIzSmthVzVoZEdWek8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dTVzF3YkdWdFpXNTBjeUJ0YjJScFptbGxaQ0J6ZEc5amFHRnpkR2xqSUhCeWIzaHBiV2wwZVNCbGJXSmxaR1JwYm1jdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklGQlRVRVZDWVhObFhHNGdLaUJBYkdsdWF5QmtiMms2TVRBdU1UQXhOaTlUTVRBNU15MHpNall6S0RBektUQXdNVFUxTFRSY2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklGQlRVRVZDWVhObElHVjRkR1Z1WkhNZ1UxQkZRbUZ6WlNCN1hHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUhabFkzUnZjbk1nWjJsMlpXNGdhVzUwYnlCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCemNHRmpaU0IxYzJsdVp5QmhJRzF2WkdsbWFXVmtJSFZ3WkdGMFpTQnlkV3hsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlIWmxZM1J2Y25NZ1JDMWthVzFsYm5OcGIyNWhiQ0JqYjI5eVpHbHVZWFJsY3k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UTI5dmNtUnBibUYwWlhOOUlGTlFSU0JqYjI5eVpHbHVZWFJsY3lCcGJpQkVJSE53WVdObExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHVnRZbVZrS0habFkzUnZjbk02SUZabFkzUnZjbk1wT2lCRGIyOXlaR2x1WVhSbGN5QjdYRzRnSUNBZ1kyOXVjM1FnYmtsMFpXMXpJRDBnZG1WamRHOXljeTVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnWVhKbFlWZHBaSFJvSUQwZ05EQTdYRzRnSUNBZ0x5OGdJRWx1YVhScFlXeHBlbVVnZEdobElFUXRaR2x0Wlc1emFXOXVZV3dnWTI5dmNtUnBibUYwWlhNZ2IyWWdkR2hsSUU0Z2NHOXBiblJ6TGx4dUlDQWdJR052Ym5OMElHTnZiM0prYVc1aGRHVnpJRDBnWm1sc2JGSmhibVJ2YlUxaGRISnBlQ2h1U1hSbGJYTXNJRkJUVUVWQ1lYTmxMbVJwYldWdWMybHZiaXdnWVhKbFlWZHBaSFJvS1R0Y2JpQWdJQ0JzWlhRZ2JHRnRZbVJoSUQwZ2RHaHBjeTVzWVcxaVpHRTdYRzVjYmlBZ0lDQjBhR2x6TG1sdWFYUkVhWE4wWVc1alpTaDJaV04wYjNKektUdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHTjVZMnhsSUQwZ01Ec2dZM2xqYkdVZ1BDQjBhR2x6TG1ONVkyeGxjenNnS3l0amVXTnNaU2tnZTF4dUlDQWdJQ0FnTHk4Z1UyVnNaV04wSUdFZ2NHOXBiblFzSUdrc0lHRjBJSEpoYm1SdmJTQW9jR2wyYjNRcExseHVJQ0FnSUNBZ1kyOXVjM1FnYVRvZ2JuVnRZbVZ5SUQwZ2NtRnVaRzl0U1c1MEtHNUpkR1Z0Y3lrN1hHNGdJQ0FnSUNCamIyNXpkQ0J5YjNkcElEMGdZMjl2Y21ScGJtRjBaWE5iYVYwN1hHNWNiaUFnSUNBZ0lDOHZJRVp2Y2lCbGRtVnllU0J3YjJsdWRDQnFJQ0U5SUdrZ0xpNHVYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnFJRDBnTURzZ2FpQThJRzVKZEdWdGN6c2dLeXRxS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwSUQwOUlHb3BJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnliM2RxSUQwZ1kyOXZjbVJwYm1GMFpYTmJhbDA3WEc0Z0lDQWdJQ0FnSUM4dklDNHVMaUJ5WlhSeWFXVjJaU0FvYjNJZ1pYWmhiSFZoZEdVcElHbDBjeUJ3Y205NGFXMXBkSGtnZEc4Z2FTQnBiaUIwYUdVZ2FXNXdkWFFnYzNCaFkyVXNJSEpwYWlBdUxpNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NpQTlJSFJvYVhNdVkyRnNZMFJwYzNSaGJtTmxLSFpsWTNSdmNuTXNJR2tzSUdvcE8xeHVJQ0FnSUNBZ0lDQXZMeUF1TGk0Z1lXNWtJR052YlhCMWRHVWdkR2hsYVhJZ1JYVmpiR2xrWldGdUlHUnBjM1JoYm1ObElHOXVJSFJvWlNCRUxXUnBiV1Z1YzJsdmJtRnNJRzFoY0N3Z1pHbHFMbHh1SUNBZ0lDQWdJQ0JqYjI1emRDQmtJRDBnWTJGc1kzVnNZWFJsUlhWamJHbGtaV0Z1UkdsemRHRnVZMlVvY205M2FTd2djbTkzYWlrN1hHNGdJQ0FnSUNBZ0lDOHZJRWxtSUhKcGFpQThQU0J5WXl3Z2IzSWdhV1lnY21scUlENGdjbU1nWVc1a0lHUnBhaUE4SUhKcGFpQXVMaTVjYmlBZ0lDQWdJQ0FnYVdZZ0tDaDBhR2x6TG1OMWRHOW1aaUE5UFNBd0tTQjhmQ0FvY2lBOFBTQjBhR2x6TG1OMWRHOW1aaWtnZkh3Z0tHUWdQQ0J5S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHMTFiSFJwY0d4cFpYSWdQU0JzWVcxaVpHRWdLaUFvY2lBdElHUXBJQzhnS0dRZ0t5QjBhR2x6TG1Wd2MybHNiMjRwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdScFptWkpTaUE5SUhabFkzUnZja0ZrWkNoeWIzZHBMQ0J5YjNkcUxDQXRNU2s3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdMaTR1SUhWd1pHRjBaU0IwYUdVZ1kyOXZjbVJwYm1GMFpYTWdlR291WEc0Z0lDQWdJQ0FnSUNBZ1kyOXZjbVJwYm1GMFpYTmJhbDBnUFNCMlpXTjBiM0pCWkdRb2NtOTNhaXdnWkdsbVprbEtMQ0F0YlhWc2RHbHdiR2xsY2lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lDOHZJRVJsWTNKbFlYTmxJSFJvWlNCc1pXRnlibWx1WnlCeVlYUmxJSHRzWVcxaVpHRjlJR0o1SUdFZ2NISmxjMk55YVdKbFpDQjdaR3hoYldKa1lYMHVYRzRnSUNBZ0lDQnNZVzFpWkdFZ0xUMGdkR2hwY3k1a2JHRnRZbVJoTzF4dUlDQWdJQ0FnYVdZZ0tHeGhiV0prWVNBOFBTQXdMaWtnZTF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdOdmIzSmthVzVoZEdWek8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dTVzF3YkdWdFpXNTBjeUJ0YjJScFptbGxaQ0J6ZEc5amFHRnpkR2xqSUhCeWIzaHBiV2wwZVNCbGJXSmxaR1JwYm1jdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFOXlhV2RwYm1Gc1UxQkZYRzRnS2lCQWJHbHVheUJrYjJrNk1UQXVNVEF3TWk5cVkyTXVNVEF5TXpSY2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklFOXlhV2RwYm1Gc1UxQkZJR1Y0ZEdWdVpITWdVMUJGUW1GelpTQjdYRzRnSUM4cUtseHVJQ0FnS2lCRmJXSmxaSE1nZEdobElIWmxZM1J2Y25NZ1oybDJaVzRnYVc1MGJ5QmhJSFIzYnkxa2FXMWxibk5wYjI1aGJDQnpjR0ZqWlNCMWMybHVaeUJoSUcxdlpHbG1hV1ZrSUhWd1pHRjBaU0J5ZFd4bExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuTjlJSFpsWTNSdmNuTWdSQzFrYVcxbGJuTnBiMjVoYkNCamIyOXlaR2x1WVhSbGN5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1EyOXZjbVJwYm1GMFpYTjlJRk5RUlNCamIyOXlaR2x1WVhSbGN5QnBiaUJFSUhOd1lXTmxMbHh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUhKaFpHbDFjMUJsY21ObGJuUTZJRzUxYldKbGNqdGNiaUFnY0hKdmRHVmpkR1ZrSUcxaGVFUnBjM1JoYm1ObE9pQnVkVzFpWlhJN1hHNGdJSEJ5YjNSbFkzUmxaQ0J0WVhoRWFYTjBZVzVqWlZOMFpYQnpPaUJ1ZFcxaVpYSTdYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9iM0IwYVc5dWN6ODZJRTl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnpkWEJsY2lodmNIUnBiMjV6S1R0Y2JpQWdJQ0IwYUdsekxtTjVZMnhsY3lBOUlHOXdkR2x2Ym5NL0xtTjVZMnhsY3lBL1B5QXhaVE03WEc0Z0lDQWdkR2hwY3k1emRHVndjeUE5SUc5d2RHbHZibk0vTG5OMFpYQnpJRDgvSURFd01EQXdNRHRjYmlBZ0lDQjBhR2x6TG5KaFpHbDFjMUJsY21ObGJuUWdQU0J2Y0hScGIyNXpQeTV5WVdScGRYTlFaWEpqWlc1MElEOC9JREV1TUR0Y2JpQWdJQ0IwYUdsekxtMWhlRVJwYzNSaGJtTmxJRDBnYjNCMGFXOXVjejh1YldGNFJHbHpkR0Z1WTJVZ1B6OGdiblZzYkR0Y2JpQWdJQ0IwYUdsekxtMWhlRVJwYzNSaGJtTmxVM1JsY0hNZ1BTQnZjSFJwYjI1elB5NXRZWGhFYVhOMFlXNWpaVk4wWlhCeklEOC9JRzUxYkd3N1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1pXMWlaV1FvZG1WamRHOXljem9nVm1WamRHOXljeWs2SUVOdmIzSmthVzVoZEdWeklIdGNiaUFnSUNCamIyNXpkQ0J1U1hSbGJYTWdQU0IyWldOMGIzSnpMbXhsYm1kMGFEdGNiaUFnSUNCamIyNXpkQ0JoY21WaFYybGtkR2dnUFNBME1EdGNiaUFnSUNBdkx5QkpibWwwYVdGc2FYcGxJSFJvWlNCRUxXUnBiV1Z1YzJsdmJtRnNJR052YjNKa2FXNWhkR1Z6SUc5bUlIUm9aU0JPSUhCdmFXNTBjeTVjYmlBZ0lDQmpiMjV6ZENCamIyOXlaR2x1WVhSbGN5QTlJR1pwYkd4U1lXNWtiMjFOWVhSeWFYZ29ia2wwWlcxekxDQlBjbWxuYVc1aGJGTlFSUzVrYVcxbGJuTnBiMjRzSUdGeVpXRlhhV1IwYUNrN1hHNWNiaUFnSUNCMGFHbHpMbWx1YVhSRWFYTjBZVzVqWlNoMlpXTjBiM0p6S1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG0xaGVFUnBjM1JoYm1ObFUzUmxjSE1nUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXRZWGhFYVhOMFlXNWpaVk4wWlhCeklEMGdia2wwWlcxeklDb2dUV0YwYUM1bWJHOXZjaWdvYmtsMFpXMXpJQzBnTVNrZ0x5QXlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJvYVhNdWJXRjRSR2x6ZEdGdVkyVWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1dFlYaEVhWE4wWVc1alpTQTlJQzB4WlRNM08xeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2JpQTlJREE3SUc0Z1BDQjBhR2x6TG0xaGVFUnBjM1JoYm1ObFUzUmxjSE03SUc0ckt5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3SUd4bGRDQnFJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2hwSUQwOUlHb3BJR29nUFNCeVlXNWtiMjFKYm5Rb2JrbDBaVzF6S1R0Y2JseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa0lEMGdkR2hwY3k1allXeGpSR2x6ZEdGdVkyVW9kbVZqZEc5eWN5d2dhU3dnYWlrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hrSUQ0Z2RHaHBjeTV0WVhoRWFYTjBZVzVqWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdWJXRjRSR2x6ZEdGdVkyVWdQU0JrTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElHeGhiV0prWVNBOUlIUm9hWE11YkdGdFltUmhPMXh1SUNBZ0lHTnZibk4wSUhKaFpHbDFjeUE5SUNoMGFHbHpMbkpoWkdsMWMxQmxjbU5sYm5RZ1BUMGdNQzR3S1NBL0lIUm9hWE11YldGNFJHbHpkR0Z1WTJVZ09pQjBhR2x6TG0xaGVFUnBjM1JoYm1ObElDb2dkR2hwY3k1eVlXUnBkWE5RWlhKalpXNTBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdZM2xqYkdVZ1BTQXdPeUJqZVdOc1pTQThJSFJvYVhNdVkzbGpiR1Z6T3lBcksyTjVZMnhsS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCemRHVndJRDBnTURzZ2MzUmxjQ0E4SUhSb2FYTXVjM1JsY0hNN0lDc3JjM1JsY0NrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJUWld4bFkzUWdkSGR2SUhCdmFXNTBjeXdnYVNCaGJtUWdhaXdnWVhRZ2NtRnVaRzl0TENBdUxpNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FTQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2FpQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0IzYUdsc1pTQW9hU0E5UFNCcUtTQnFJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY205M2FTQTlJR052YjNKa2FXNWhkR1Z6VzJsZE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeWIzZHFJRDBnWTI5dmNtUnBibUYwWlhOYmFsMDdYRzVjYmlBZ0lDQWdJQ0FnTHk4Z2NtVjBjbWxsZG1VZ0tHOXlJR1YyWVd4MVlYUmxLU0IwYUdWcGNpQndjbTk0YVcxcGRIa2dhVzRnZEdobElHbHVjSFYwSUhOd1lXTmxMQ0J5YVdvZ1lXNWtJQzR1TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J5SUQwZ2RHaHBjeTVqWVd4alJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3l3Z2FTd2dhaWs3WEc0Z0lDQWdJQ0FnSUM4dklHTnZiWEIxZEdVZ2RHaGxhWElnUlhWamJHbGtaV0Z1SUdScGMzUmhibU5sSUc5dUlIUm9aU0JFTFdScGJXVnVjMmx2Ym1Gc0lHMWhjQ3dnWkdscUxseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa0lEMGdZMkZzWTNWc1lYUmxSWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9jbTkzYVN3Z2NtOTNhaWs3WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLQ2h5SUR3OUlISmhaR2wxY3lrZ2ZId2dLR1FnUENCeUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzExYkhScGNHeHBaWElnUFNCc1lXMWlaR0VnS2lBd0xqVWdLaUFvY2lBdElHUXBJQzhnS0dRZ0t5QjBhR2x6TG1Wd2MybHNiMjRwTzF4dUlDQWdJQ0FnSUNBZ0lDOHZJQzR1TGlCMWNHUmhkR1VnZEdobElHTnZiM0prYVc1aGRHVnpJSGhwSUdGdVpDQjRhaTVjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JrYVdabVNVb2dQU0IyWldOMGIzSkJaR1FvY205M2FTd2djbTkzYWl3Z0xURXBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmIzSmthVzVoZEdWelcybGRJRDBnZG1WamRHOXlRV1JrS0hKdmQya3NJR1JwWm1aSlNpd2diWFZzZEdsd2JHbGxjaWs3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXZjbVJwYm1GMFpYTmJhbDBnUFNCMlpXTjBiM0pCWkdRb2NtOTNhaXdnWkdsbVprbEtMQ0F0YlhWc2RHbHdiR2xsY2lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHeGhiV0prWVNBdFBTQW9LSFJvYVhNdWJHRnRZbVJoSUMwZ2RHaHBjeTVrYkdGdFltUmhLU0F2SUNoMGFHbHpMbU41WTJ4bGN5QXRJREV1TUNrcE95QTdYRzRnSUNBZ0lDQnBaaUFvYkdGdFltUmhJRHdnZEdocGN5NWtiR0Z0WW1SaEtTQjdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdZMjl2Y21ScGJtRjBaWE03WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7IGphcm9XaW5rbGVyIH0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgYXN5bW1ldHJpY0Rpc3RhbmNlLCBicmF1bkJsYW5xdWV0RGlzdGFuY2UsIGNvc2luZURpc3RhbmNlLCBkaWNlRGlzdGFuY2UsIGV1Y2xpZGVhbkRpc3RhbmNlLCBoYW1taW5nRGlzdGFuY2UsIGt1bGN6eW5za2lEaXN0YW5jZSwgbWNDb25uYXVnaGV5RGlzdGFuY2UsIHJvZ290R29sZGJlcmdEaXN0YW5jZSwgcnVzc2VsRGlzdGFuY2UsIHNva2FsRGlzdGFuY2UsIHRhbmltb3RvRGlzdGFuY2UsIH0gZnJvbSAnLi9kaXN0YW5jZS1tZXRyaWNzLW1ldGhvZHMnO1xuaW1wb3J0IHsgY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5leHBvcnQgdmFyIFN0cmluZ01ldHJpY3NOYW1lcztcbihmdW5jdGlvbiAoU3RyaW5nTWV0cmljc05hbWVzKSB7XG4gICAgU3RyaW5nTWV0cmljc05hbWVzW1wiTGV2ZW5zaHRlaW5cIl0gPSBcIkxldmVuc2h0ZWluXCI7XG4gICAgU3RyaW5nTWV0cmljc05hbWVzW1wiSmFyb1dpbmtsZXJcIl0gPSBcIkphcm8tV2lua2xlclwiO1xuICAgIFN0cmluZ01ldHJpY3NOYW1lc1tcIk1hbmhhdHRhblwiXSA9IFwiTWFuaGF0dGFuXCI7XG59KShTdHJpbmdNZXRyaWNzTmFtZXMgfHwgKFN0cmluZ01ldHJpY3NOYW1lcyA9IHt9KSk7XG5leHBvcnQgdmFyIFZlY3Rvck1ldHJpY3NOYW1lcztcbihmdW5jdGlvbiAoVmVjdG9yTWV0cmljc05hbWVzKSB7XG4gICAgVmVjdG9yTWV0cmljc05hbWVzW1wiRXVjbGlkZWFuXCJdID0gXCJFdWNsaWRlYW5cIjtcbn0pKFZlY3Rvck1ldHJpY3NOYW1lcyB8fCAoVmVjdG9yTWV0cmljc05hbWVzID0ge30pKTtcbmV4cG9ydCB2YXIgQml0QXJyYXlNZXRyaWNzTmFtZXM7XG4oZnVuY3Rpb24gKEJpdEFycmF5TWV0cmljc05hbWVzKSB7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJUYW5pbW90b1wiXSA9IFwiVGFuaW1vdG9cIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkRpY2VcIl0gPSBcIkRpY2VcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkFzeW1tZXRyaWNcIl0gPSBcIkFzeW1tZXRyaWNcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkJyYXVuQmxhbnF1ZXRcIl0gPSBcIkJyYXVuLUJsYW5xdWV0XCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJDb3NpbmVcIl0gPSBcIkNvc2luZVwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiS3VsY3p5bnNraVwiXSA9IFwiS3VsY3p5bnNraVwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiTWNDb25uYXVnaGV5XCJdID0gXCJNYy1Db25uYXVnaGV5XCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJSb2dvdEdvbGRiZXJnXCJdID0gXCJSb2dvdC1Hb2xkYmVyZ1wiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiUnVzc2VsXCJdID0gXCJSdXNzZWxcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIlNva2FsXCJdID0gXCJTb2thbFwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiSGFtbWluZ1wiXSA9IFwiSGFtbWluZ1wiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiRXVjbGlkZWFuXCJdID0gXCJFdWNsaWRlYW5cIjtcbn0pKEJpdEFycmF5TWV0cmljc05hbWVzIHx8IChCaXRBcnJheU1ldHJpY3NOYW1lcyA9IHt9KSk7XG5leHBvcnQgY29uc3QgdmVjdG9yRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dOiBmbC5kaXN0YW5jZSxcbiAgICBbU3RyaW5nTWV0cmljc05hbWVzLkphcm9XaW5rbGVyXTogamFyb1dpbmtsZXIsXG4gICAgW1N0cmluZ01ldHJpY3NOYW1lcy5NYW5oYXR0YW5dOiBtYW5oYXR0YW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b106IHRhbmltb3RvRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdOiBkaWNlRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkFzeW1tZXRyaWNdOiBhc3ltbWV0cmljRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdOiBicmF1bkJsYW5xdWV0RGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZV06IGNvc2luZURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5LdWxjenluc2tpXToga3VsY3p5bnNraURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldOiBtY0Nvbm5hdWdoZXlEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ106IHJvZ290R29sZGJlcmdEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXTogcnVzc2VsRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXTogc29rYWxEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuSGFtbWluZ106IGhhbW1pbmdEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogZXVjbGlkZWFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IHZhciBBdmFpbGFibGVNZXRyaWNzVHlwZXM7XG4oZnVuY3Rpb24gKEF2YWlsYWJsZU1ldHJpY3NUeXBlcykge1xuICAgIEF2YWlsYWJsZU1ldHJpY3NUeXBlc1tcIlZlY3RvclwiXSA9IFwiVmVjdG9yXCI7XG4gICAgQXZhaWxhYmxlTWV0cmljc1R5cGVzW1wiU3RyaW5nXCJdID0gXCJTdHJpbmdcIjtcbiAgICBBdmFpbGFibGVNZXRyaWNzVHlwZXNbXCJCaXRBcnJheVwiXSA9IFwiQml0QXJyYXlcIjtcbn0pKEF2YWlsYWJsZU1ldHJpY3NUeXBlcyB8fCAoQXZhaWxhYmxlTWV0cmljc1R5cGVzID0ge30pKTtcbmV4cG9ydCBjb25zdCBBdmFpbGFibGVNZXRyaWNzID0ge1xuICAgIFtBdmFpbGFibGVNZXRyaWNzVHlwZXMuVmVjdG9yXToge1xuICAgICAgICBbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IHZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHNbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl0sXG4gICAgfSxcbiAgICBbQXZhaWxhYmxlTWV0cmljc1R5cGVzLlN0cmluZ106IHtcbiAgICAgICAgW1N0cmluZ01ldHJpY3NOYW1lcy5MZXZlbnNodGVpbl06IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHNbU3RyaW5nTWV0cmljc05hbWVzLkxldmVuc2h0ZWluXSxcbiAgICAgICAgW1N0cmluZ01ldHJpY3NOYW1lcy5KYXJvV2lua2xlcl06IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHNbU3RyaW5nTWV0cmljc05hbWVzLkphcm9XaW5rbGVyXSxcbiAgICAgICAgW1N0cmluZ01ldHJpY3NOYW1lcy5NYW5oYXR0YW5dOiBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzW1N0cmluZ01ldHJpY3NOYW1lcy5NYW5oYXR0YW5dLFxuICAgIH0sXG4gICAgW0F2YWlsYWJsZU1ldHJpY3NUeXBlcy5CaXRBcnJheV06IHtcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuRGljZV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkFzeW1tZXRyaWNdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQnJhdW5CbGFucXVldF06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5CcmF1bkJsYW5xdWV0XSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZV06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5LdWxjenluc2tpXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLk1jQ29ubmF1Z2hleV06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Sb2dvdEdvbGRiZXJnXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJ1c3NlbF06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuU29rYWxdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuU29rYWxdLFxuICAgIH0sXG59O1xuZXhwb3J0IGNvbnN0IE1ldHJpY1RvRGF0YVR5cGUgPSBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzKVxuICAgIC5yZWR1Y2UoKHJldCwga2V5KSA9PiB7XG4gICAgZm9yIChjb25zdCB2YWwgb2YgT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1trZXldKSkge1xuICAgICAgICByZXRbdmFsXSA9IGtleTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbn0sIHt9KTtcbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ01ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ1N0cmluZyc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaXRBcnJheU1ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ0JpdEFycmF5Jztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlY3Rvck1ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ1ZlY3Rvcic7XG59XG4vKiogTWFuaGF0dGFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHNlcXVlbmNlcyAobWF0Y2ggLSAwLCBtaXNtYXRjaCAtIDEpIG5vcm1hbGl6ZWQgZm9yIGxlbmd0aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYW5oYXR0YW5EaXN0YW5jZShzMSwgczIpIHtcbiAgICBpZiAoczEubGVuZ3RoICE9PSBzMi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBsZXQgZGlzdCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgczEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGRpc3QgKz0gczFbaV0gPT0gczJbaV0gPyAwIDogMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlzdCAvIHMxLmxlbmd0aDtcbiAgICB9XG59XG4vKiogVW5pZmllZCBjbGFzcyBpbXBsZW1lbnRpbmcgZGlmZmVyZW50IHN0cmluZyBtZWFzdXJlcy4gKi9cbmV4cG9ydCBjbGFzcyBNZWFzdXJlIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIE1lYXN1cmUgd2l0aCAuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZCBNZXRob2QgdG8gY2FsY3VsYXRlIGRpc3RhbmNlIGJldHdlZW4gc3RyaW5ncy5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXRob2QpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBtZXRob2Q7XG4gICAgICAgIHRoaXMuZGF0YVR5cGUgPSBNZXRyaWNUb0RhdGFUeXBlW21ldGhvZF07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgY3VzdG9tIHN0cmluZyBkaXN0YW5jZSBmdW5jdGlvbiBzcGVjaWZpZWQuXG4gICAgICogQHJldHVybiB7RGlzdGFuY2VNZXRyaWN9IENhbGxiYWNrIG9mIHRoZSBtZWFzdXJlIGNob3Nlbi5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBnZXRNZWFzdXJlKCkge1xuICAgICAgICBjb25zdCBkaWN0ID0gQXZhaWxhYmxlTWV0cmljcztcbiAgICAgICAgcmV0dXJuIGRpY3RbdGhpcy5kYXRhVHlwZV1bdGhpcy5tZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgYnkgdGhlIGdpdmVuIGRhdGEgdHlwZS5cbiAgICAgKiBAcGFyYW0ge0F2YWlsYWJsZURhdGFUeXBlc30gZGF0YVR5cGUgTWV0cmljJ3MgZGF0YSB0eXBlXG4gICAgICogQHJldHVybiB7c3RyaW5nW119IE1ldHJpYyBuYW1lcyB3aGljaCBleHBlY3RzIHRoZSBnaXZlbiBkYXRhIHR5cGVcbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0TWV0cmljQnlEYXRhVHlwZShkYXRhVHlwZSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1tkYXRhVHlwZV0pO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBtZXRyaWMgbmFtZXMgYXZhaWxhYmxlLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWVhc3VyZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WldRdGJXVjBjbWxqY3k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJblI1Y0dWa0xXMWxkSEpwWTNNdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4eFFrRkJjVUlzUTBGQlF6dEJRVU14UXl4UFFVRlBMRVZCUVVNc1YwRkJWeXhGUVVGRExFMUJRVTBzZVVKQlFYbENMRU5CUVVNN1FVRkZjRVFzVDBGQlR5eEZRVU5NTEd0Q1FVRnJRaXhGUVVOc1FpeHhRa0ZCY1VJc1JVRkRja0lzWTBGQll5eEZRVU5rTEZsQlFWa3NSVUZEV2l4cFFrRkJhVUlzUlVGRGFrSXNaVUZCWlN4RlFVTm1MR3RDUVVGclFpeEZRVU5zUWl4dlFrRkJiMElzUlVGRGNFSXNjVUpCUVhGQ0xFVkJRM0pDTEdOQlFXTXNSVUZEWkN4aFFVRmhMRVZCUTJJc1owSkJRV2RDTEVkQlEycENMRTFCUVUwc05FSkJRVFJDTEVOQlFVTTdRVUZGY0VNc1QwRkJUeXhGUVVGRExEQkNRVUV3UWl4RlFVRkRMRTFCUVUwc2FVUkJRV2xFTEVOQlFVTTdRVUZKTTBZc1RVRkJUU3hEUVVGT0xFbEJRVmtzYTBKQlNWZzdRVUZLUkN4WFFVRlpMR3RDUVVGclFqdEpRVU0xUWl4cFJFRkJNa0lzUTBGQlFUdEpRVU16UWl4clJFRkJORUlzUTBGQlFUdEpRVU0xUWl3MlEwRkJkVUlzUTBGQlFUdEJRVU42UWl4RFFVRkRMRVZCU2xjc2EwSkJRV3RDTEV0QlFXeENMR3RDUVVGclFpeFJRVWszUWp0QlFVVkVMRTFCUVUwc1EwRkJUaXhKUVVGWkxHdENRVVZZTzBGQlJrUXNWMEZCV1N4clFrRkJhMEk3U1VGRE5VSXNOa05CUVhWQ0xFTkJRVUU3UVVGRGVrSXNRMEZCUXl4RlFVWlhMR3RDUVVGclFpeExRVUZzUWl4clFrRkJhMElzVVVGRk4wSTdRVUZGUkN4TlFVRk5MRU5CUVU0c1NVRkJXU3h2UWtGaFdEdEJRV0pFTEZkQlFWa3NiMEpCUVc5Q08wbEJRemxDTERaRFFVRnhRaXhEUVVGQk8wbEJRM0pDTEhGRFFVRmhMRU5CUVVFN1NVRkRZaXhwUkVGQmVVSXNRMEZCUVR0SlFVTjZRaXgzUkVGQlowTXNRMEZCUVR0SlFVTm9ReXg1UTBGQmFVSXNRMEZCUVR0SlFVTnFRaXhwUkVGQmVVSXNRMEZCUVR0SlFVTjZRaXh6UkVGQk9FSXNRMEZCUVR0SlFVTTVRaXgzUkVGQlowTXNRMEZCUVR0SlFVTm9ReXg1UTBGQmFVSXNRMEZCUVR0SlFVTnFRaXgxUTBGQlpTeERRVUZCTzBsQlEyWXNNa05CUVcxQ0xFTkJRVUU3U1VGRGJrSXNLME5CUVhWQ0xFTkJRVUU3UVVGRGVrSXNRMEZCUXl4RlFXSlhMRzlDUVVGdlFpeExRVUZ3UWl4dlFrRkJiMElzVVVGaEwwSTdRVUZGUkN4TlFVRk5MRU5CUVVNc1RVRkJUU3cwUWtGQk5FSXNSMEZCZVVRN1NVRkRhRWNzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhUUVVGVExFTkJRVU1zUlVGQlJTd3dRa0ZCTUVJN1EwRkRNMFFzUTBGQlF6dEJRVVZHTEUxQlFVMHNRMEZCUXl4TlFVRk5MRFJDUVVFMFFpeEhRVUY1UkR0SlFVTm9SeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRmRCUVZjc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eFJRVUZSTzBsQlF6ZERMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc1YwRkJWenRKUVVNM1F5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTEdsQ1FVRnBRanREUVVOc1JDeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc09FSkJRVGhDTEVkQlFUWkVPMGxCUTNSSExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1VVRkJVU3hEUVVGRExFVkJRVVVzWjBKQlFXZENPMGxCUTJwRUxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzV1VGQldUdEpRVU42UXl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMR3RDUVVGclFqdEpRVU55UkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEdGQlFXRXNRMEZCUXl4RlFVRkZMSEZDUVVGeFFqdEpRVU16UkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMR05CUVdNN1NVRkROME1zUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeHJRa0ZCYTBJN1NVRkRja1FzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhaUVVGWkxFTkJRVU1zUlVGQlJTeHZRa0ZCYjBJN1NVRkRla1FzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhoUVVGaExFTkJRVU1zUlVGQlJTeHhRa0ZCY1VJN1NVRkRNMFFzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeGpRVUZqTzBsQlF6ZERMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1lVRkJZVHRKUVVNelF5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEdWQlFXVTdTVUZETDBNc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1JVRkJSU3hwUWtGQmFVSTdRMEZEY0VRc1EwRkJRenRCUVVWR0xFMUJRVTBzUTBGQlRpeEpRVUZaTEhGQ1FVbFlPMEZCU2tRc1YwRkJXU3h4UWtGQmNVSTdTVUZETDBJc01FTkJRV2xDTEVOQlFVRTdTVUZEYWtJc01FTkJRV2xDTEVOQlFVRTdTVUZEYWtJc09FTkJRWEZDTEVOQlFVRTdRVUZEZGtJc1EwRkJReXhGUVVwWExIRkNRVUZ4UWl4TFFVRnlRaXh4UWtGQmNVSXNVVUZKYUVNN1FVRkZSQ3hOUVVGTkxFTkJRVU1zVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSenRKUVVNNVFpeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTzFGQlF6bENMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVTBGQlV5eERRVUZETzB0QlF6TkdPMGxCUTBRc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSVHRSUVVNNVFpeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTERSQ1FVRTBRaXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRmRCUVZjc1EwRkJRenRSUVVNNVJpeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTERSQ1FVRTBRaXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRmRCUVZjc1EwRkJRenRSUVVNNVJpeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTERSQ1FVRTBRaXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRk5CUVZNc1EwRkJRenRMUVVNelJqdEpRVU5FTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFVVTdVVUZEYUVNc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkJSU3c0UWtGQk9FSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFJRVUZSTEVOQlFVTTdVVUZET1VZc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3c0UWtGQk9FSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eEpRVUZKTEVOQlFVTTdVVUZEZEVZc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSU3c0UWtGQk9FSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFZRVUZWTEVOQlFVTTdVVUZEYkVjc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4aFFVRmhMRU5CUVVNc1JVRkJSU3c0UWtGQk9FSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eGhRVUZoTEVOQlFVTTdVVUZEZUVjc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3c0UWtGQk9FSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZETVVZc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSU3c0UWtGQk9FSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFZRVUZWTEVOQlFVTTdVVUZEYkVjc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4WlFVRlpMRU5CUVVNc1JVRkJSU3c0UWtGQk9FSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZEZEVjc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4aFFVRmhMRU5CUVVNc1JVRkJSU3c0UWtGQk9FSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eGhRVUZoTEVOQlFVTTdVVUZEZUVjc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3c0UWtGQk9FSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZETVVZc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3c0UWtGQk9FSXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZEZWtZN1EwRkRSaXhEUVVGRE8wRkJSVVlzVFVGQlRTeERRVUZETEUxQlFVMHNaMEpCUVdkQ0xFZEJRWEZDTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTTdTMEZETlVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQmNVSXNSVUZCUlN4SFFVRkhMRVZCUVVVc1JVRkJSVHRKUVVOeVF5eExRVUZMTEUxQlFVMHNSMEZCUnl4SlFVRkpMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1IwRkJlVUlzUTBGQlF5eERRVUZETEVWQlFVVTdVVUZETVVVc1IwRkJSeXhEUVVGRExFZEJRWGxDTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNN1MwRkRkRU03U1VGRFJDeFBRVUZQTEVkQlFVY3NRMEZCUXp0QlFVTmlMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVmRVTEUxQlFVMHNWVUZCVlN4alFVRmpMRU5CUVVNc1NVRkJhMEk3U1VGREwwTXNUMEZCVHl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4UlFVRlJMRU5CUVVNN1FVRkROVU1zUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4blFrRkJaMElzUTBGQlF5eEpRVUZyUWp0SlFVTnFSQ3hQUVVGUExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxGVkJRVlVzUTBGQlF6dEJRVU01UXl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHTkJRV01zUTBGQlF5eEpRVUZyUWp0SlFVTXZReXhQUVVGUExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxGRkJRVkVzUTBGQlF6dEJRVU0xUXl4RFFVRkRPMEZCUlVRc1owZEJRV2RITzBGQlEyaEhMRTFCUVUwc1ZVRkJWU3hwUWtGQmFVSXNRMEZCUXl4RlFVRlZMRVZCUVVVc1JVRkJWVHRKUVVOMFJDeEpRVUZKTEVWQlFVVXNRMEZCUXl4TlFVRk5MRXRCUVVzc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJUdFJRVU16UWl4UFFVRlBMRU5CUVVNc1EwRkJRenRMUVVOV08xTkJRVTA3VVVGRFRDeEpRVUZKTEVsQlFVa3NSMEZCVnl4RFFVRkRMRU5CUVVNN1VVRkRja0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRiRU1zU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEyaERPMUZCUTBRc1QwRkJUeXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXp0TFFVTjZRanRCUVVOSUxFTkJRVU03UVVGRlJDdzBSRUZCTkVRN1FVRkROVVFzVFVGQlRTeFBRVUZQTEU5QlFVODdTVUZKYkVJN096czdUMEZKUnp0SlFVTklMRmxCUVZrc1RVRkJiMEk3VVVGRE9VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU03VVVGRGNrSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVhWQ0xFTkJRVU03U1VGRGFrVXNRMEZCUXp0SlFVVkVPenM3TzA5QlNVYzdTVUZEU1N4VlFVRlZPMUZCUTJZc1RVRkJUU3hKUVVGSkxFZEJRVEJFTEdkQ1FVRm5RaXhEUVVGRE8xRkJRM0pHTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkRNVU1zUTBGQlF6dEpRVVZFT3pzN096dFBRVXRITzBsQlEwa3NUVUZCVFN4RFFVRkRMRzFDUVVGdFFpeERRVUZETEZGQlFUUkNPMUZCUXpWRUxFOUJRVThzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJwRUxFTkJRVU03U1VGRlJEczdUMEZGUnp0SlFVTklMRTFCUVUwc1MwRkJTeXhwUWtGQmFVSTdVVUZETVVJc1QwRkJUeXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU03U1VGRGRrTXNRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ptd2dabkp2YlNBblptRnpkR1Z6ZEMxc1pYWmxibk5vZEdWcGJpYzdYRzVwYlhCdmNuUWdlMnBoY205WGFXNXJiR1Z5ZlNCbWNtOXRJQ2RxWVhKdkxYZHBibXRzWlhJdGRIbHdaWE5qY21sd2RDYzdYRzVwYlhCdmNuUWdlMFJwYzNSaGJtTmxUV1YwY21samZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdlMXh1SUNCaGMzbHRiV1YwY21salJHbHpkR0Z1WTJVc1hHNGdJR0p5WVhWdVFteGhibkYxWlhSRWFYTjBZVzVqWlN4Y2JpQWdZMjl6YVc1bFJHbHpkR0Z1WTJVc1hHNGdJR1JwWTJWRWFYTjBZVzVqWlN4Y2JpQWdaWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVXNYRzRnSUdoaGJXMXBibWRFYVhOMFlXNWpaU3hjYmlBZ2EzVnNZM3A1Ym5OcmFVUnBjM1JoYm1ObExGeHVJQ0J0WTBOdmJtNWhkV2RvWlhsRWFYTjBZVzVqWlN4Y2JpQWdjbTluYjNSSGIyeGtZbVZ5WjBScGMzUmhibU5sTEZ4dUlDQnlkWE56Wld4RWFYTjBZVzVqWlN4Y2JpQWdjMjlyWVd4RWFYTjBZVzVqWlN4Y2JpQWdkR0Z1YVcxdmRHOUVhWE4wWVc1alpTeGNibjBnWm5KdmJTQW5MaTlrYVhOMFlXNWpaUzF0WlhSeWFXTnpMVzFsZEdodlpITW5PMXh1WEc1cGJYQnZjblFnZTJOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ1FtbDBRWEp5WVhrZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdlltbDBMV0Z5Y21GNUp6dGNibWx0Y0c5eWRDQjdWbVZqZEc5eUxDQlRkSEpwYm1kRWFXTjBhVzl1WVhKNWZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5YzdYRzVjYm1WNGNHOXlkQ0JsYm5WdElGTjBjbWx1WjAxbGRISnBZM05PWVcxbGN5QjdYRzRnSUV4bGRtVnVjMmgwWldsdUlEMGdKMHhsZG1WdWMyaDBaV2x1Snl4Y2JpQWdTbUZ5YjFkcGJtdHNaWElnUFNBblNtRnlieTFYYVc1cmJHVnlKeXhjYmlBZ1RXRnVhR0YwZEdGdUlEMGdKMDFoYm1oaGRIUmhiaWNzWEc1OVhHNWNibVY0Y0c5eWRDQmxiblZ0SUZabFkzUnZjazFsZEhKcFkzTk9ZVzFsY3lCN1hHNGdJRVYxWTJ4cFpHVmhiaUE5SUNkRmRXTnNhV1JsWVc0bkxGeHVmVnh1WEc1bGVIQnZjblFnWlc1MWJTQkNhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeUI3WEc0Z0lGUmhibWx0YjNSdklEMGdKMVJoYm1sdGIzUnZKeXhjYmlBZ1JHbGpaU0E5SUNkRWFXTmxKeXhjYmlBZ1FYTjViVzFsZEhKcFl5QTlJQ2RCYzNsdGJXVjBjbWxqSnl4Y2JpQWdRbkpoZFc1Q2JHRnVjWFZsZENBOUlDZENjbUYxYmkxQ2JHRnVjWFZsZENjc1hHNGdJRU52YzJsdVpTQTlJQ2REYjNOcGJtVW5MRnh1SUNCTGRXeGplbmx1YzJ0cElEMGdKMHQxYkdONmVXNXphMmtuTEZ4dUlDQk5ZME52Ym01aGRXZG9aWGtnUFNBblRXTXRRMjl1Ym1GMVoyaGxlU2NzWEc0Z0lGSnZaMjkwUjI5c1pHSmxjbWNnUFNBblVtOW5iM1F0UjI5c1pHSmxjbWNuTEZ4dUlDQlNkWE56Wld3Z1BTQW5VblZ6YzJWc0p5eGNiaUFnVTI5cllXd2dQU0FuVTI5cllXd25MRnh1SUNCSVlXMXRhVzVuSUQwZ0owaGhiVzFwYm1jbkxGeHVJQ0JGZFdOc2FXUmxZVzRnUFNBblJYVmpiR2xrWldGdUp5eGNibjFjYmx4dVpYaHdiM0owSUdOdmJuTjBJSFpsWTNSdmNrUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE02SUhzZ1cyNWhiV1U2SUhOMGNtbHVaMTA2SUNoNE9pQldaV04wYjNJc0lIazZJRlpsWTNSdmNpa2dQVDRnYm5WdFltVnlJSDBnUFNCN1hHNGdJRnRXWldOMGIzSk5aWFJ5YVdOelRtRnRaWE11UlhWamJHbGtaV0Z1WFRvZ1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVc1hHNTlPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdjM1J5YVc1blJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjem9nZXlCYmJtRnRaVG9nYzNSeWFXNW5YVG9nS0hnNklITjBjbWx1Wnl3Z2VUb2djM1J5YVc1bktTQTlQaUJ1ZFcxaVpYSWdmU0E5SUh0Y2JpQWdXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVNWlhabGJuTm9kR1ZwYmwwNklHWnNMbVJwYzNSaGJtTmxMRnh1SUNCYlUzUnlhVzVuVFdWMGNtbGpjMDVoYldWekxrcGhjbTlYYVc1cmJHVnlYVG9nYW1GeWIxZHBibXRzWlhJc1hHNGdJRnRUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE11VFdGdWFHRjBkR0Z1WFRvZ2JXRnVhR0YwZEdGdVJHbHpkR0Z1WTJVc1hHNTlPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdZbWwwUVhKeVlYbEVhWE4wWVc1alpVMWxkSEpwWTNOTlpYUm9iMlJ6T2lCN0lGdHVZVzFsT2lCemRISnBibWRkT2lBb2VEb2dRbWwwUVhKeVlYa3NJSGs2SUVKcGRFRnljbUY1S1NBOVBpQnVkVzFpWlhJZ2ZTQTlJSHRjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbFJoYm1sdGIzUnZYVG9nZEdGdWFXMXZkRzlFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa1JwWTJWZE9pQmthV05sUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVCYzNsdGJXVjBjbWxqWFRvZ1lYTjViVzFsZEhKcFkwUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVFuSmhkVzVDYkdGdWNYVmxkRjA2SUdKeVlYVnVRbXhoYm5GMVpYUkVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrTnZjMmx1WlYwNklHTnZjMmx1WlVScGMzUmhibU5sTEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UzNWc1kzcDVibk5yYVYwNklHdDFiR042ZVc1emEybEVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrMWpRMjl1Ym1GMVoyaGxlVjA2SUcxalEyOXVibUYxWjJobGVVUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVVtOW5iM1JIYjJ4a1ltVnlaMTA2SUhKdloyOTBSMjlzWkdKbGNtZEVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsSjFjM05sYkYwNklISjFjM05sYkVScGMzUmhibU5sTEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VTI5cllXeGRPaUJ6YjJ0aGJFUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVNHRnRiV2x1WjEwNklHaGhiVzFwYm1kRWFYTjBZVzVqWlN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtWMVkyeHBaR1ZoYmwwNklHVjFZMnhwWkdWaGJrUnBjM1JoYm1ObExGeHVmVHRjYmx4dVpYaHdiM0owSUdWdWRXMGdRWFpoYVd4aFlteGxUV1YwY21samMxUjVjR1Z6SUh0Y2JpQWdWbVZqZEc5eUlEMGdKMVpsWTNSdmNpY3NYRzRnSUZOMGNtbHVaeUE5SUNkVGRISnBibWNuTEZ4dUlDQkNhWFJCY25KaGVTQTlJQ2RDYVhSQmNuSmhlU2RjYm4xY2JseHVaWGh3YjNKMElHTnZibk4wSUVGMllXbHNZV0pzWlUxbGRISnBZM01nUFNCN1hHNGdJRnRCZG1GcGJHRmliR1ZOWlhSeWFXTnpWSGx3WlhNdVZtVmpkRzl5WFRvZ2UxeHVJQ0FnSUZ0V1pXTjBiM0pOWlhSeWFXTnpUbUZ0WlhNdVJYVmpiR2xrWldGdVhUb2dkbVZqZEc5eVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRXWldOMGIzSk5aWFJ5YVdOelRtRnRaWE11UlhWamJHbGtaV0Z1WFN4Y2JpQWdmU3hjYmlBZ1cwRjJZV2xzWVdKc1pVMWxkSEpwWTNOVWVYQmxjeTVUZEhKcGJtZGRPaUI3WEc0Z0lDQWdXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVNWlhabGJuTm9kR1ZwYmwwNklITjBjbWx1WjBScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMa3hsZG1WdWMyaDBaV2x1WFN4Y2JpQWdJQ0JiVTNSeWFXNW5UV1YwY21samMwNWhiV1Z6TGtwaGNtOVhhVzVyYkdWeVhUb2djM1J5YVc1blJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE11U21GeWIxZHBibXRzWlhKZExGeHVJQ0FnSUZ0VGRISnBibWROWlhSeWFXTnpUbUZ0WlhNdVRXRnVhR0YwZEdGdVhUb2djM1J5YVc1blJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE11VFdGdWFHRjBkR0Z1WFN4Y2JpQWdmU3hjYmlBZ1cwRjJZV2xzWVdKc1pVMWxkSEpwWTNOVWVYQmxjeTVDYVhSQmNuSmhlVjA2SUh0Y2JpQWdJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVZHRnVhVzF2ZEc5ZE9pQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVZHRnVhVzF2ZEc5ZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUVhV05sWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtScFkyVmRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVCYzNsdGJXVjBjbWxqWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtGemVXMXRaWFJ5YVdOZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUNjbUYxYmtKc1lXNXhkV1YwWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtKeVlYVnVRbXhoYm5GMVpYUmRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVEYjNOcGJtVmRPaUJpYVhSQmNuSmhlVVJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRMjl6YVc1bFhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVTM1ZzWTNwNWJuTnJhVjA2SUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVMZFd4amVubHVjMnRwWFN4Y2JpQWdJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVRXTkRiMjV1WVhWbmFHVjVYVG9nWW1sMFFYSnlZWGxFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMazFqUTI5dWJtRjFaMmhsZVYwc1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsSnZaMjkwUjI5c1pHSmxjbWRkT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VW05bmIzUkhiMnhrWW1WeVoxMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEoxYzNObGJGMDZJR0pwZEVGeWNtRjVSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVNkWE56Wld4ZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVRiMnRoYkYwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VGIydGhiRjBzWEc0Z0lIMHNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnVFdWMGNtbGpWRzlFWVhSaFZIbHdaVG9nVTNSeWFXNW5SR2xqZEdsdmJtRnllU0E5SUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pVMWxkSEpwWTNNcFhHNGdJQzV5WldSMVkyVW9LSEpsZERvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVN3Z2EyVjVLU0E5UGlCN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCMllXd2diMllnVDJKcVpXTjBMbXRsZVhNb1FYWmhhV3hoWW14bFRXVjBjbWxqYzF0clpYa2dZWE1nUVhaaGFXeGhZbXhsUkdGMFlWUjVjR1Z6WFNrcElIdGNiaUFnSUNBZ0lISmxkRnQyWVd3Z1lYTWdRWFpoYVd4aFlteGxSR0YwWVZSNWNHVnpYU0E5SUd0bGVUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsZER0Y2JpQWdmU3dnZTMwcE8xeHVYRzVsZUhCdmNuUWdkSGx3WlNCQmRtRnBiR0ZpYkdWRVlYUmhWSGx3WlhNZ1BTQnJaWGx2WmlCMGVYQmxiMllnUVhaaGFXeGhZbXhsVFdWMGNtbGpjenRjYm1WNGNHOXlkQ0IwZVhCbElGWmxZM1J2Y2sxbGRISnBZM01nUFNCclpYbHZaaUIwZVhCbGIyWWdRWFpoYVd4aFlteGxUV1YwY21samMxdEJkbUZwYkdGaWJHVk5aWFJ5YVdOelZIbHdaWE11Vm1WamRHOXlYVHRjYm1WNGNHOXlkQ0IwZVhCbElGTjBjbWx1WjAxbGRISnBZM01nUFNCclpYbHZaaUIwZVhCbGIyWWdRWFpoYVd4aFlteGxUV1YwY21samMxdEJkbUZwYkdGaWJHVk5aWFJ5YVdOelZIbHdaWE11VTNSeWFXNW5YVHRjYm1WNGNHOXlkQ0IwZVhCbElFSnBkRUZ5Y21GNVRXVjBjbWxqY3lBOUlHdGxlVzltSUhSNWNHVnZaaUJCZG1GcGJHRmliR1ZOWlhSeWFXTnpXMEYyWVdsc1lXSnNaVTFsZEhKcFkzTlVlWEJsY3k1Q2FYUkJjbkpoZVYwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JMYm05M2JrMWxkSEpwWTNNZ1BTQlRkSEpwYm1kTlpYUnlhV056SUh3Z1FtbDBRWEp5WVhsTlpYUnlhV056SUh3Z1ZtVmpkRzl5VFdWMGNtbGpjenRjYmx4dVpYaHdiM0owSUhSNWNHVWdWbUZzYVdSVWVYQmxjeUE5SUhzZ1pHRjBZVG9nYzNSeWFXNW5XMTBzSUcxbGRISnBZem9nVTNSeWFXNW5UV1YwY21samN5QjlJSHdnZXlCa1lYUmhPaUJXWldOMGIzSmJYU3dnYldWMGNtbGpPaUJXWldOMGIzSk5aWFJ5YVdOeklIMGdmRnh1SUNCN0lHUmhkR0U2SUVKcGRFRnljbUY1VzEwc0lHMWxkSEpwWXpvZ1FtbDBRWEp5WVhsTlpYUnlhV056SUgwN1hHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnBjMU4wY21sdVowMWxkSEpwWXlodVlXMWxPaUJMYm05M2JrMWxkSEpwWTNNcElIdGNiaUFnY21WMGRYSnVJRTFsZEhKcFkxUnZSR0YwWVZSNWNHVmJibUZ0WlYwZ1BUMGdKMU4wY21sdVp5YzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMwSnBkRUZ5Y21GNVRXVjBjbWxqS0c1aGJXVTZJRXR1YjNkdVRXVjBjbWxqY3lrZ2UxeHVJQ0J5WlhSMWNtNGdUV1YwY21salZHOUVZWFJoVkhsd1pWdHVZVzFsWFNBOVBTQW5RbWwwUVhKeVlYa25PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FYTldaV04wYjNKTlpYUnlhV01vYm1GdFpUb2dTMjV2ZDI1TlpYUnlhV056S1NCN1hHNGdJSEpsZEhWeWJpQk5aWFJ5YVdOVWIwUmhkR0ZVZVhCbFcyNWhiV1ZkSUQwOUlDZFdaV04wYjNJbk8xeHVmVnh1WEc0dktpb2dUV0Z1YUdGMGRHRnVJR1JwYzNSaGJtTmxJR0psZEhkbFpXNGdkSGR2SUhObGNYVmxibU5sY3lBb2JXRjBZMmdnTFNBd0xDQnRhWE50WVhSamFDQXRJREVwSUc1dmNtMWhiR2w2WldRZ1ptOXlJR3hsYm1kMGFDNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0WVc1b1lYUjBZVzVFYVhOMFlXNWpaU2h6TVRvZ2MzUnlhVzVuTENCek1qb2djM1J5YVc1bktUb2diblZ0WW1WeUlIdGNiaUFnYVdZZ0tITXhMbXhsYm1kMGFDQWhQVDBnY3pJdWJHVnVaM1JvS1NCN1hHNGdJQ0FnY21WMGRYSnVJREU3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnYkdWMElHUnBjM1E2SUc1MWJXSmxjaUE5SURBN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlERTdJR2tnUENCek1TNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnWkdsemRDQXJQU0J6TVZ0cFhTQTlQU0J6TWx0cFhTQS9JREFnT2lBeE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdaR2x6ZENBdklITXhMbXhsYm1kMGFEdGNiaUFnZlZ4dWZWeHVYRzR2S2lvZ1ZXNXBabWxsWkNCamJHRnpjeUJwYlhCc1pXMWxiblJwYm1jZ1pHbG1abVZ5Wlc1MElITjBjbWx1WnlCdFpXRnpkWEpsY3k0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTlpXRnpkWEpsSUh0Y2JpQWdjSEp2ZEdWamRHVmtJRzFsZEdodlpEb2dTMjV2ZDI1TlpYUnlhV056TzF4dUlDQndjbTkwWldOMFpXUWdaR0YwWVZSNWNHVTZJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCTlpXRnpkWEpsSUhkcGRHZ2dMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXVjBhRzlrSUUxbGRHaHZaQ0IwYnlCallXeGpkV3hoZEdVZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCemRISnBibWR6TGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lDQWdkR2hwY3k1dFpYUm9iMlFnUFNCdFpYUm9iMlE3WEc0Z0lDQWdkR2hwY3k1a1lYUmhWSGx3WlNBOUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJXVjBhRzlrWFNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJqZFhOMGIyMGdjM1J5YVc1bklHUnBjM1JoYm1ObElHWjFibU4wYVc5dUlITndaV05wWm1sbFpDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JHbHpkR0Z1WTJWTlpYUnlhV045SUVOaGJHeGlZV05ySUc5bUlIUm9aU0J0WldGemRYSmxJR05vYjNObGJpNWNiaUFnSUNvZ1FHMWxiV0psY205bUlFMWxZWE4xY21WeVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBUV1ZoYzNWeVpTZ3BPaUJFYVhOMFlXNWpaVTFsZEhKcFl5QjdYRzRnSUNBZ1kyOXVjM1FnWkdsamREb2dleUJiYTJWNU9pQnpkSEpwYm1kZE9pQjdJRnRyWlhreU9pQnpkSEpwYm1kZE9pQkVhWE4wWVc1alpVMWxkSEpwWXlCOUlIMGdQU0JCZG1GcGJHRmliR1ZOWlhSeWFXTnpPMXh1SUNBZ0lISmxkSFZ5YmlCa2FXTjBXM1JvYVhNdVpHRjBZVlI1Y0dWZFczUm9hWE11YldWMGFHOWtYVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCU1pYUjFjbTV6SUdOMWMzUnZiU0J6ZEhKcGJtY2daR2x6ZEdGdVkyVWdZbmtnZEdobElHZHBkbVZ1SUdSaGRHRWdkSGx3WlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHRCZG1GcGJHRmliR1ZFWVhSaFZIbHdaWE45SUdSaGRHRlVlWEJsSUUxbGRISnBZeWR6SUdSaGRHRWdkSGx3WlZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDBnVFdWMGNtbGpJRzVoYldWeklIZG9hV05vSUdWNGNHVmpkSE1nZEdobElHZHBkbVZ1SUdSaGRHRWdkSGx3WlZ4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwVFdWMGNtbGpRbmxFWVhSaFZIbHdaU2hrWVhSaFZIbHdaVG9nUVhaaGFXeGhZbXhsUkdGMFlWUjVjR1Z6S1RvZ2MzUnlhVzVuVzEwZ2UxeHVJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVhMlY1Y3loQmRtRnBiR0ZpYkdWTlpYUnlhV056VzJSaGRHRlVlWEJsWFNrN1hHNGdJSDFjYmx4dUlDQXZLaW9nVW1WMGRYSnVjeUJ0WlhSeWFXTWdibUZ0WlhNZ1lYWmhhV3hoWW14bExseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1RXVmhjM1Z5WlhKY2JpQWdJQ292WEc0Z0lITjBZWFJwWXlCblpYUWdZWFpoYVd4aFlteGxUV1ZoYzNWeVpYTW9LVG9nYzNSeWFXNW5XMTBnZTF4dUlDQWdJSEpsZEhWeWJpQlBZbXBsWTNRdWEyVjVjeWhCZG1GcGJHRmliR1ZOWlhSeWFXTnpLVHRjYmlBZ2ZWeHVmVnh1SWwxOSIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdEFycmF5IHtcbiAgICBjb25zdHJ1Y3RvcihhcmcsIGRlZmF1bHRWYWx1ZSA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuX2xlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuX3ZlcnNpb24gPSAwO1xuICAgICAgICB0aGlzLl91cGRhdGVMZXZlbCA9IDA7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQ291bnQgPSAwO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZENvdW50VmVyc2lvbiA9IC0xO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ZXNWZXJzaW9uID0gLTE7XG4gICAgICAgIHRoaXMuX3ZlcnNpb25lZE5hbWUgPSAnJztcbiAgICAgICAgdGhpcy5fdmVyc2lvbmVkTmFtZVZlcnNpb24gPSAtMTtcbiAgICAgICAgdGhpcy5TSFJJTktfVEhSRVNIT0xEID0gMHgxMDA7XG4gICAgICAgIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0gYXJnO1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IEJpdEFycmF5Ll9jcmVhdGVCdWZmZXIobGVuZ3RoKTtcbiAgICAgICAgICAgIGlmIChkZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1ZmYubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZbaV0gPSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBidWZmO1xuICAgICAgICAgICAgdGhpcy5fbGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFyZyBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhID0gYXJnO1xuICAgICAgICAgICAgdGhpcy5fbGVuZ3RoID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbnN0cnVjdG9yJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0UmF3RGF0YSgpIHsgcmV0dXJuIHRoaXMuX2RhdGE7IH1cbiAgICBhc3N1cmVHb2V6KG51bSwgYXJnTmFtZSkge1xuICAgICAgICBpZiAobnVtIDwgMClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHthcmdOYW1lfSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHplcm9gKTtcbiAgICB9XG4gICAgYXNzdXJlSW5SYW5nZSh2YWx1ZSwgbWluLCBtYXgsIGFyZ05hbWUpIHtcbiAgICAgICAgaWYgKCh2YWx1ZSA8IG1pbikgfHwgKHZhbHVlID4gbWF4KSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJndW1lbnQgJHthcmdOYW1lfSAoJHt2YWx1ZX0pIG91dCBvZiByYW5nZSAoJHttaW59LCAke21heH0pYCk7XG4gICAgfVxuICAgIGNvcHkoc3JjLCBkc3QsIGNvdW50KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKylcbiAgICAgICAgICAgIGRzdFtpXSA9IHNyY1tpXTtcbiAgICB9XG4gICAgY29weUZyb20ob3RoZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAhPSBvdGhlci5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMZW5ndGhzIGRpZmZlciAoJHt0aGlzLl9sZW5ndGh9ICE9ICR7b3RoZXIuX2xlbmd0aH0pYCk7XG4gICAgICAgIHRoaXMuY29weShvdGhlci5fZGF0YSwgdGhpcy5fZGF0YSwgdGhpcy5sZW5ndGhJbkludHMpO1xuICAgICAgICB0aGlzLl92ZXJzaW9uKys7XG4gICAgfVxuICAgIGdldCBsZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sZW5ndGg7XG4gICAgfVxuICAgIGdldCBidWZmZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICAgIH1cbiAgICBzZXQgYnVmZmVyKGRhdGEpIHtcbiAgICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMuX3ZlcnNpb24rKztcbiAgICB9XG4gICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92ZXJzaW9uO1xuICAgIH1cbiAgICBzZXQgdmVyc2lvbih2YWx1ZSkge1xuICAgICAgICB0aGlzLl92ZXJzaW9uID0gdmFsdWU7XG4gICAgfVxuICAgIGluY3JlbWVudFZlcnNpb24obm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICB0aGlzLl92ZXJzaW9uKys7XG4gICAgfVxuICAgIGdldCBsZW5ndGhJbkludHMoKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKCh0aGlzLl9sZW5ndGggKyAweDFmKSAvIDB4MjApO1xuICAgIH1cbiAgICBnZXQgdmVyc2lvbmVkTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb24gPT0gdGhpcy5fdmVyc2lvbmVkTmFtZVZlcnNpb24gPyB0aGlzLl92ZXJzaW9uZWROYW1lIDogJyc7XG4gICAgfVxuICAgIHNldCB2ZXJzaW9uZWROYW1lKG5hbWUpIHtcbiAgICAgICAgdGhpcy5fdmVyc2lvbmVkTmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuX3ZlcnNpb25lZE5hbWVWZXJzaW9uID0gdGhpcy5fdmVyc2lvbjtcbiAgICB9XG4gICAgZ2V0IHNlbGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZXRMZW5ndGgodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlIDwgMClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc2hvdWxkIGJlID49IDAnKTtcbiAgICAgICAgaWYgKHZhbHVlID09IHRoaXMuX2xlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbkludHNOZWVkZWQgPSBNYXRoLmZsb29yKCh2YWx1ZSArIDB4MWYpIC8gMHgyMCk7XG4gICAgICAgIGlmICgobkludHNOZWVkZWQgPiB0aGlzLl9kYXRhLmxlbmd0aCkgfHwgKChuSW50c05lZWRlZCArIHRoaXMuU0hSSU5LX1RIUkVTSE9MRCkgPCB0aGlzLl9kYXRhLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBuZXcgVWludDMyQXJyYXkobkludHNOZWVkZWQpO1xuICAgICAgICAgICAgdGhpcy5jb3B5KHRoaXMuX2RhdGEsIG5ld0RhdGEsIChuSW50c05lZWRlZCA+IHRoaXMuX2RhdGEubGVuZ3RoKSA/IHRoaXMuX2RhdGEubGVuZ3RoIDogbkludHNOZWVkZWQpO1xuICAgICAgICAgICAgdGhpcy5fZGF0YSA9IG5ld0RhdGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID4gdGhpcy5fbGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICUgMHgyMCA+IDApXG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVt0aGlzLmxlbmd0aEluSW50cyAtIDFdICY9ICgxIDw8ICgodGhpcy5fbGVuZ3RoICUgMHgyMCkgJiAweDFmKSkgLSAxO1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5maWxsKDAsIHRoaXMubGVuZ3RoSW5JbnRzLCBuSW50c05lZWRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbGVuZ3RoID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3ZlcnNpb24rKztcbiAgICB9XG4gICAgc3RhdGljIGZyb21BbmQoc2V0MSwgc2V0Mikge1xuICAgICAgICBpZiAoc2V0MS5fbGVuZ3RoICE9IHNldDIuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTGVuZ3RocyBkaWZmZXIgKCR7c2V0MS5fbGVuZ3RofSAhPSAke3NldDIuX2xlbmd0aH0pYCk7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBuZXcgQml0QXJyYXkoc2V0MS5fbGVuZ3RoKTtcbiAgICAgICAgdGVtcC5fbGVuZ3RoID0gc2V0MS5fbGVuZ3RoO1xuICAgICAgICB0ZW1wLl9kYXRhID0gQml0QXJyYXkuX2NyZWF0ZUJ1ZmZlcih0ZW1wLl9sZW5ndGgpO1xuICAgICAgICB0ZW1wLl92ZXJzaW9uID0gMDtcbiAgICAgICAgY29uc3QgbGVuID0gc2V0MS5sZW5ndGhJbkludHM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgICB0ZW1wLl9kYXRhW2ldID0gc2V0MS5fZGF0YVtpXSAmIHNldDIuX2RhdGFbaV07XG4gICAgICAgIHJldHVybiB0ZW1wO1xuICAgIH1cbiAgICBzdGF0aWMgX2NyZWF0ZUJ1ZmZlcihsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50MzJBcnJheShNYXRoLmZsb29yKChsZW5ndGggKyAweDFmKSAvIDB4MjApKTtcbiAgICB9XG4gICAgc3RhdGljIGZyb21WYWx1ZXModmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBuZXcgQml0QXJyYXkodmFsdWVzLmxlbmd0aCk7XG4gICAgICAgIHRlbXAuX3ZlcnNpb24gPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRlbXAuX2xlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodmFsdWVzW2ldKVxuICAgICAgICAgICAgICAgIHRlbXAuX2RhdGFbTWF0aC5mbG9vcihpIC8gMHgyMCldIHw9IDEgPDwgKChpICUgMHgyMCkgJiAweDFmKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGVtcDtcbiAgICB9XG4gICAgLy8vIENvbnN0cnVjdHMgYSBbQml0U2V0XSBvZiBsZW5ndGggW2NvdW50XSwgd2hlcmUgaWR4LXRoIGJpdCBpcyBkZXRlcm1pbmVkIGJ5IGEgY2FsbCB0byBbZmxhZ10gKGlkeCkuXG4gICAgc3RhdGljIGZyb21TZXEoY291bnQsIGZsYWcpIHtcbiAgICAgICAgY29uc3QgdGVtcCA9IG5ldyBCaXRBcnJheShjb3VudCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7ICsraSlcbiAgICAgICAgICAgIHRlbXAuc2V0Qml0KGksIGZsYWcoaSkpO1xuICAgICAgICB0ZW1wLl92ZXJzaW9uID0gMDtcbiAgICAgICAgcmV0dXJuIHRlbXA7XG4gICAgfVxuICAgIC8vLyBDb25zdHJ1Y3RzIGEgW0JpdFNldF0gZnJvbSBhIHN0cmluZyBbc10gY29udGFpbmluZyAnMCcgb3IgJzEnLlxuICAgIHN0YXRpYyBmcm9tU3RyaW5nKHMpIHtcbiAgICAgICAgcmV0dXJuIEJpdEFycmF5LmZyb21TZXEocy5sZW5ndGgsIChpKSA9PiBzLmNoYXJBdChpKSA9PSAnMScpO1xuICAgIH1cbiAgICAvLy8gQ29uc3RydWN0cyBhIFtCaXRTZXRdLCBiYXNlZCBvbiBsZW5ndGggW19sZW5ndGhdIGFuZCBieXRlIGFycmF5IFtfZGF0YV0uXG4gICAgc3RhdGljIGZyb21VaW50MzJBcnJheShfbGVuZ3RoLCBfZGF0YSkge1xuICAgICAgICBjb25zdCB0ZW1wID0gbmV3IEJpdEFycmF5KF9sZW5ndGgpO1xuICAgICAgICB0ZW1wLl9kYXRhID0gX2RhdGE7XG4gICAgICAgIHJldHVybiB0ZW1wO1xuICAgIH1cbiAgICAvLy8gRGVzZXJpYWxpemVzIGEgW0JpdFNldF0gZnJvbSBbYnl0ZXNdLlxuICAgIHN0YXRpYyBmcm9tQnl0ZXMoYnl0ZXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gYnl0ZXMubGVuZ3RoO1xuICAgICAgICBjb25zdCB0ZW1wID0gbmV3IEJpdEFycmF5KGxlbiAqIDgpO1xuICAgICAgICB0ZW1wLl9kYXRhID0gbmV3IFVpbnQzMkFycmF5KE1hdGguZmxvb3IoKGxlbiArIDMpIC8gNCkpO1xuICAgICAgICB0ZW1wLl9sZW5ndGggPSBsZW4gKiA4O1xuICAgICAgICBsZXQgbnVtMSA9IDA7XG4gICAgICAgIGxldCBudW0yID0gMDtcbiAgICAgICAgd2hpbGUgKChsZW4gLSBudW0yKSA+PSA0KSB7XG4gICAgICAgICAgICB0ZW1wLl9kYXRhW251bTErK10gPSAoKChieXRlc1tudW0yXSAmIDB4ZmYpIHwgKChieXRlc1tudW0yICsgMV0gJiAweGZmKSA8PCA4KSkgfFxuICAgICAgICAgICAgICAgICgoYnl0ZXNbbnVtMiArIDJdICYgMHhmZikgPDwgMHgxMCkpIHwgKChieXRlc1tudW0yICsgM10gJiAweGZmKSA8PCAweDE4KTtcbiAgICAgICAgICAgIG51bTIgKz0gNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGVuIC0gbnVtMiA9PSAzKVxuICAgICAgICAgICAgdGVtcC5fZGF0YVtudW0xXSA9IChieXRlc1tudW0yICsgMl0gJiAweGZmKSA8PCAweDEwO1xuICAgICAgICBpZiAobGVuIC0gbnVtMiA9PSAyKVxuICAgICAgICAgICAgdGVtcC5fZGF0YVtudW0xXSB8PSAoYnl0ZXNbbnVtMiArIDFdICYgMHhmZikgPDwgODtcbiAgICAgICAgaWYgKGxlbiAtIG51bTIgPT0gMSlcbiAgICAgICAgICAgIHRlbXAuX2RhdGFbbnVtMV0gfD0gYnl0ZXNbbnVtMl0gJiAweGZmO1xuICAgICAgICB0ZW1wLl92ZXJzaW9uID0gMDtcbiAgICAgICAgcmV0dXJuIHRlbXA7XG4gICAgfVxuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5fbGVuZ3RofSBiaXRzLCAke3RoaXMuY291bnRCaXRzKHRydWUpfSBzZXRgO1xuICAgIH1cbiAgICAvLy8gUGVyZm9ybXMgZGVlcCBjb21wYXJpc29uIG9mIHR3byBiaXRzZXRzLlxuICAgIGVxdWFscyhvdGhlcikge1xuICAgICAgICBpZiAodGhpcyA9PSBvdGhlcilcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAob3RoZXIgPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAhPSBvdGhlci5fbGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoID09IDApXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9kYXRhLmxlbmd0aCAtIDE7IGkrKylcbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhW2ldICE9IG90aGVyLl9kYXRhW2ldKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9ICh0aGlzLl9kYXRhLmxlbmd0aCAtIDEpICogODsgaSA8IHRoaXMuX2xlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRCaXQoaSkgIT0gb3RoZXIuZ2V0Qml0KGkpKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLyoqIENsb25lcyBhIGJpdHNldC4gKi9cbiAgICBjbG9uZSgpIHtcbiAgICAgICAgY29uc3QgYml0QXJyYXkgPSBuZXcgQml0QXJyYXkoMCwgZmFsc2UpO1xuICAgICAgICBiaXRBcnJheS5fZGF0YSA9IFVpbnQzMkFycmF5LmZyb20odGhpcy5fZGF0YSk7IC8vIGVmZmVjdGl2ZSBsZW5ndGg6IChsZW5ndGhJbkludHMpXG4gICAgICAgIGJpdEFycmF5Ll9sZW5ndGggPSB0aGlzLl9sZW5ndGg7XG4gICAgICAgIGJpdEFycmF5Ll92ZXJzaW9uID0gdGhpcy5fdmVyc2lvbjtcbiAgICAgICAgcmV0dXJuIGJpdEFycmF5O1xuICAgIH1cbiAgICAvKiogSW5pdGlhbGl6ZXMgYSBiaXRzZXQuICovXG4gICAgaW5pdChmbGFnLCBub3RpZnkpIHtcbiAgICAgICAgdGhpcy5zZXRBbGwoZmFsc2UsIGZhbHNlKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGZsYWcoaSkpXG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVtNYXRoLmZsb29yKGkgLyAweDIwKV0gfD0gMSA8PCAoKGkgJSAweDIwKSAmIDB4MWYpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIEludmVydHMgYSBiaXRzZXQuXG4gICAgaW52ZXJ0KG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9kYXRhLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSBePSAtMTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgfVxuICAgIC8vLyBTZXRzIGFsbCBiaXRzIHRvIFt2YWx1ZV0sIG9wdGlvbmFsbHkgc3VwcHJlc3Npbmcgbm90aWZpY2F0aW9ucy5cbiAgICBzZXRBbGwodmFsdWUsIG5vdGlmeSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGZsYWdzID0gdmFsdWUgPyAtMSA6IDA7XG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSAvL3RvZG86IG9wdGltaXplXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldID0gZmxhZ3M7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgIH1cbiAgICAvLy8gU2V0cyBiaXRzIGF0IFtpbmRleGVzXSBwb3NpdGlvbiB0byBbdmFsdWVdLlxuICAgIC8vLyBDbGVhcnMgdGhlIGJpdHNldCBpZiBbY2xlYXJdIGZsYWcgaXMgdHJ1ZS5cbiAgICAvLy8gQ2hhbmdlIG5vdGlmaWNhdGlvbiBpcyByYWlzZWQgd2hlbiBbbm90aWZ5XSBpcyB0cnVlLlxuICAgIHNldEluZGV4ZXMoaW5kZXhlcywgdmFsdWUgPSB0cnVlLCBjbGVhciA9IHRydWUsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgaWYgKGNsZWFyKVxuICAgICAgICAgICAgdGhpcy5zZXRBbGwoIXZhbHVlLCBmYWxzZSk7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiBpbmRleGVzKVxuICAgICAgICAgICAgdGhpcy5zZXRGYXN0KGksIHZhbHVlKTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgfVxuICAgIGV2ZXJ5SW5kZXgoaW5kZXhlcywgdmFsdWUgPSB0cnVlKSB7XG4gICAgICAgIGZvciAoY29uc3QgaW5kZXggb2YgaW5kZXhlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0Qml0KGluZGV4KSAhPSB2YWx1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGFueUluZGV4KGluZGV4ZXMsIHZhbHVlID0gdHJ1ZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGluZGV4IG9mIGluZGV4ZXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldEJpdChpbmRleCkgPT0gdmFsdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBzZXRXaGVyZShjaGVjaywgdmFsdWUgPSB0cnVlLCBjbGVhciA9IHRydWUsIG5vdGlmeSA9IHRydWUsIGFsbG93Q2xlYXIgPSB0cnVlKSB7XG4gICAgICAgIGlmIChjbGVhciAmJiBhbGxvd0NsZWFyKVxuICAgICAgICAgICAgdGhpcy5zZXRBbGwoIXZhbHVlLCBmYWxzZSk7XG4gICAgICAgIGlmIChhbGxvd0NsZWFyKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2xlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrKGkpKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZhc3QoaSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZhc3QoaSwgY2hlY2soaSkgPyB2YWx1ZSA6ICF2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgfVxuICAgIGdldFJhbmdlKGZyb20sIHRvKSB7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZShmcm9tLCAwLCB0aGlzLl9sZW5ndGggLSAxLCAnZnJvbScpO1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UodG8sIDAsIHRoaXMuX2xlbmd0aCwgJ3RvJyk7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gZnJvbTsgaSA8IHRvOyArK2kpXG4gICAgICAgICAgICBhcnIucHVzaCh0aGlzLmdldEJpdChpKSk7XG4gICAgICAgIHJldHVybiBCaXRBcnJheS5mcm9tVmFsdWVzKGFycik7XG4gICAgfVxuICAgIGdldFJhbmdlQXNMaXN0KGZyb20sIHRvKSB7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZShmcm9tLCAwLCB0aGlzLl9sZW5ndGggLSAxLCAnZnJvbScpO1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UodG8sIDAsIHRoaXMuX2xlbmd0aCwgJ3RvJyk7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gZnJvbTsgaSA8IHRvOyArK2kpXG4gICAgICAgICAgICBhcnIucHVzaCh0aGlzLmdldEJpdChpKSk7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIHNldFJhbmdlKGZyb20sIHRvLCB2YWx1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UoZnJvbSwgMCwgdGhpcy5fbGVuZ3RoIC0gMSwgJ2Zyb20nKTtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKHRvLCAwLCB0aGlzLl9sZW5ndGggLSAxLCAndG8nKTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihmcm9tLCB0byk7XG4gICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KGZyb20sIHRvKTtcbiAgICAgICAgLy90b2RvOiBvcHRpbWl6ZVxuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKylcbiAgICAgICAgICAgICAgICB0aGlzLnNldFRydWUoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGYWxzZShpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBTZXRzIG4gcmFuZG9tbHkgY2hvc2VuIGJpdHMgdG8gdmFsdWUsIHJlbWFpbmluZyBiaXRzIHRvICF2YWx1ZS5cbiAgICBzZXRSYW5kb20obiwgdmFsdWUsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgaWYgKG4gPCAwIHx8IG4gPiB0aGlzLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ24gbXVzdCBiZSA+PSAwICYmIDw9IENvdW50Jyk7XG4gICAgICAgIGlmIChuID4gdGhpcy5fbGVuZ3RoIC8gMilcbiAgICAgICAgICAgIHRoaXMuc2V0UmFuZG9tKHRoaXMuX2xlbmd0aCAtIG4sICF2YWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0QWxsKCF2YWx1ZSk7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjspIHtcbiAgICAgICAgICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0aGlzLl9sZW5ndGgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0Qml0KGkpID09IHZhbHVlKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgdGhpcy5zZXRGYXN0KGksIHZhbHVlKTtcbiAgICAgICAgICAgIGsrKztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICB9XG4gICAgLy8vIE1vZGlmaWVzIGN1cnJlbnQgYml0c2V0IGJ5IHBlcmZvcm1pbmcgdGhlIGJpdHdpc2UgQU5EIG9wZXJhdGlvbiBhZ2FpbnN0IHRoZVxuICAgIC8vLyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzcGVjaWZpZWQgYml0c2V0LlxuICAgIGFuZCh2YWx1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IHZhbHVlLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5IGxlbmd0aHMgZGlmZmVyLicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gJj0gdmFsdWUuX2RhdGFbaV07XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIFBlcmZvcm1zIHRoZSBiaXR3aXNlIEFORCBOT1Qgb3BlcmF0aW9uIG9uIHRoZSBlbGVtZW50cyBpbiB0aGUgY3VycmVudCBiaXRzZXRcbiAgICAvLy8gYWdhaW5zdCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgc3BlY2lmaWVkIGJpdHNldC5cbiAgICBhbmROb3QodmFsdWUsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAhPSB2YWx1ZS5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBsZW5ndGhzIGRpZmZlci4nKTtcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7XG4gICAgICAgIGZvciAobGV0IG51bTIgPSAwOyBudW0yIDwgbGVuOyBudW0yKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW251bTJdICY9IH52YWx1ZS5fZGF0YVtudW0yXTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gUGVyZm9ybXMgdGhlIGJpdHdpc2UgTk9UIEFORCBvcGVyYXRpb24gb24gdGhlIGVsZW1lbnRzIGluIHRoZSBjdXJyZW50IGJpdHNldFxuICAgIC8vLyBhZ2FpbnN0IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzcGVjaWZpZWQgYml0c2V0LlxuICAgIG5vdEFuZCh2YWx1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IHZhbHVlLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5IGxlbmd0aHMgZGlmZmVyLicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSAofnRoaXMuX2RhdGFbaV0pICYgdmFsdWUuX2RhdGFbaV07XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIEludmVydHMgYWxsIGJpdCB2YWx1ZXMgaW4gdGhlIGN1cnJlbnQgYml0c2V0XG4gICAgbm90KG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldID0gfnRoaXMuX2RhdGFbaV07XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIFBlcmZvcm1zIHRoZSBiaXR3aXNlIE9SIG9wZXJhdGlvbiBvbiB0aGUgZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQgYml0c2V0XG4gICAgLy8vIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBiaXRzZXQuXG4gICAgb3IodmFsdWUsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAhPSB2YWx1ZS5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBsZW5ndGhzIGRpZmZlci4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldIHw9IHZhbHVlLl9kYXRhW2ldO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBQZXJmb3JtcyB0aGUgYml0d2lzZSBleGNsdXNpdmUgT1Igb3BlcmF0aW9uIG9uIHRoZSBlbGVtZW50cyBpbiB0aGUgY3VycmVudCBiaXRzZXRcbiAgICAvLy8gYWdhaW5zdCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgc3BlY2lmaWVkIGJpdHNldC5cbiAgICB4b3IodmFsdWUsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAhPSB2YWx1ZS5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBsZW5ndGhzIGRpZmZlci4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldIF49IHZhbHVlLl9kYXRhW2ldO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBJbnNlcnRzIG4gMC1iaXRzIGF0IHBvc2l0aW9uIHBvcywgcmVzaXppbmcgc2VsZiBhbmQgc2hpZnRpbmcgYml0cyBhcHByb3ByaWF0ZWx5LlxuICAgIGluc2VydEF0KHBvcywgbiwgZmxhZyA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZShwb3MsIDAsIHRoaXMuX2xlbmd0aCwgJ3BvcycpO1xuICAgICAgICBpZiAobiA9PSAwKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvL1RPRE86IG9wdGltaXplXG4gICAgICAgIC8vdGhlIG1vc3QgcHJpbWl0aXZlIGltcGxlbWVudGF0aW9uLCBvcHRpbWl6ZSBpdCBsYXRlciFcbiAgICAgICAgLy8gYmVnaW5VcGRhdGUoKTtcbiAgICAgICAgY29uc3Qgb2xkbGVuZ3RoID0gdGhpcy5fbGVuZ3RoO1xuICAgICAgICB0aGlzLnNldExlbmd0aCh0aGlzLl9sZW5ndGggKyBuKTtcbiAgICAgICAgLy9pZiAoIWNvbnRhaW5zKCFmbGFnKSkgcmV0dXJuOyAvLyBub3RoaW5nIHRvIGRvXG4gICAgICAgIGZvciAobGV0IGkgPSBvbGRsZW5ndGggLSAxOyBpID49IHBvczsgaS0tKVxuICAgICAgICAgICAgdGhpcy5zZXRCaXQoaSArIG4sIHRoaXMuZ2V0Qml0KGkpKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHBvczsgaSA8IHBvcyArIG47IGkrKylcbiAgICAgICAgICAgIHRoaXMuc2V0Qml0KGksIGZsYWcpO1xuICAgICAgICAvLyBlbmRVcGRhdGUoKTtcbiAgICB9XG4gICAgLy8vIERlbGV0ZXMgbiBiaXRzIGJlZ2lubmluZyBhdCBwb3NpdGlvbiBwb3MsIHJlc2l6aW5nIHNlbGYgYW5kIHNoaWZ0aW5nIHJlbWFpbmluZ1xuICAgIC8vLyBiaXRzIGFwcHJvcHJpYXRlbHkuXG4gICAgcmVtb3ZlQXQocG9zLCBuID0gMSkge1xuICAgICAgICAvLyB0aGUgbW9zdCBwcmltaXRpdmUgaW1wbGVtZW50YXRpb24sIG9wdGltaXplIGl0IGxhdGVyIVxuICAgICAgICBpZiAobiA8IDApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ24gY2Fubm90IGJlIG5lZ2F0aXZlJyk7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZShwb3MsIDAsIHRoaXMuX2xlbmd0aCAtIG4sICdwb3MnKTtcbiAgICAgICAgaWYgKHRoaXMuY29udGFpbnModHJ1ZSkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBwb3M7IGkgPCB0aGlzLl9sZW5ndGggLSBuOyBpKyspXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRCaXQoaSwgdGhpcy5nZXRCaXQoaSArIG4pKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldExlbmd0aCh0aGlzLl9sZW5ndGggLSBuKTtcbiAgICB9XG4gICAgcmVtb3ZlQnlNYXNrKG1hc2ssIGZsYWcgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gbWFzay5sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2xlbmd0aCAhPSBtYXNrLmxlbmd0aCcpO1xuICAgICAgICBpZiAobWFzayA9PSB0aGlzKSB7IC8vIG5vIG5lZWQgdG8gaXRlcmF0ZVxuICAgICAgICAgICAgdGhpcy5zZXRMZW5ndGgobWFzay5jb3VudEJpdHMoIWZsYWcpKTtcbiAgICAgICAgICAgIHRoaXMuc2V0QWxsKCFmbGFnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBkc3RJZHggPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgc3JjSWR4ID0gLTE7IChzcmNJZHggPSBtYXNrLmZpbmROZXh0KHNyY0lkeCwgIWZsYWcpKSAhPSAtMTspXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGYXN0KGRzdElkeCsrLCB0aGlzLmdldEJpdChzcmNJZHgpKTtcbiAgICAgICAgICAgIHRoaXMuX2xlbmd0aCA9IGRzdElkeDtcbiAgICAgICAgICAgIHRoaXMuX3ZlcnNpb24rKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIFNpbWlsYXIgdG8gdGhlIFtdIG9wZXJhdG9yLlxuICAgIGdldEJpdChwb3MpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9kYXRhW01hdGguZmxvb3IocG9zIC8gMHgyMCldICYgKDEgPDwgKHBvcyAmIDB4MWYpKSkgIT0gMDtcbiAgICB9XG4gICAgLy8vIFNpbWlsYXIgdG8gdGhlIFtdIG9wZXJhdG9yLlxuICAgIHNldEJpdChwb3MsIGJpdCwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnNldEZhc3QocG9zLCBiaXQpO1xuICAgICAgICBpZiAobm90aWZ5KVxuICAgICAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLl92ZXJzaW9uKys7XG4gICAgfVxuICAgIC8vLyBTZXRzIFtpXS10aCBiaXQgdG8gW3ZhbHVlXSwgZG9lcyBub3QgY2hlY2sgYm91bmRzLCBkb2VzIG5vdCBpbmNyZW1lbnQgdmVyc2lvblxuICAgIHNldEZhc3QoaSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtNYXRoLmZsb29yKGkgLyAweDIwKV0gfD0gMSA8PCAoaSAmIDB4MWYpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aGlzLl9kYXRhW01hdGguZmxvb3IoaSAvIDB4MjApXSAmPSB+KDEgPDwgKGkgJiAweDFmKSk7XG4gICAgfVxuICAgIHNldFRydWUocG9zKSB7XG4gICAgICAgIHRoaXMuX2RhdGFbTWF0aC5mbG9vcihwb3MgLyAweDIwKV0gfD0gMSA8PCAocG9zICYgMHgxZik7XG4gICAgfVxuICAgIHNldEZhbHNlKHBvcykge1xuICAgICAgICB0aGlzLl9kYXRhW01hdGguZmxvb3IocG9zIC8gMHgyMCldICY9IH4oMSA8PCAocG9zICYgMHgxZikpO1xuICAgIH1cbiAgICB0cnVlQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50Qml0cyh0cnVlKTtcbiAgICB9XG4gICAgZmFsc2VDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRCaXRzKGZhbHNlKTtcbiAgICB9XG4gICAgLy8vIENvdW50cyBiaXRzIG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUuXG4gICAgY291bnRCaXRzKHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggPT0gMClcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRDb3VudFZlcnNpb24gIT0gdGhpcy5fdmVyc2lvbikge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb3VudCA9IDA7XG4gICAgICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aEluSW50cztcbiAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgIGZvciAoOyBpIDwgbGVuIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgayA9IHRoaXMuX2RhdGFbaV07IGsgIT0gMDsgayA+Pj49IDgpIHsgLy90b2RvOiBjYXN0IGRhdGFbaV0gdG8gdWludFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZENvdW50ICs9IEJpdEFycmF5Ll9vbkJpdENvdW50W2sgJiAweGZmXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUaGUgbGFzdCBpbnQuXG4gICAgICAgICAgICBsZXQgayA9IHRoaXMuX2RhdGFbaV07XG4gICAgICAgICAgICBjb25zdCByZW1haW5pbmdCaXRzID0gdGhpcy5fbGVuZ3RoICYgMHgxZjtcbiAgICAgICAgICAgIGlmIChyZW1haW5pbmdCaXRzICE9IDApIC8qIGlmIHJlbWFpbmluZ0JpdHMgPT0gMCwgdGhlIGxhc3QgaW50IGlzIGZ1bGx5IHVzZWQgYW5kIEFMTCBiaXRzIHNob3VsZCBiZSBsZWZ0IGFzIGlzICovXG4gICAgICAgICAgICAgICAgayAmPSB+KCg0Mjk0OTY3Mjk1KSA8PCByZW1haW5pbmdCaXRzKTtcbiAgICAgICAgICAgIGZvciAoOyBrICE9IDA7IGsgPj4+PSA4KVxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQ291bnQgKz0gQml0QXJyYXkuX29uQml0Q291bnRbayAmIDB4ZmZdO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb3VudFZlcnNpb24gPSB0aGlzLl92ZXJzaW9uO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodmFsdWUgPyB0aGlzLl9zZWxlY3RlZENvdW50IDogdGhpcy5fbGVuZ3RoIC0gdGhpcy5fc2VsZWN0ZWRDb3VudCk7XG4gICAgfVxuICAgIC8vLyBSZXR1cm5zIGEgbnVtYmVyIG9mIHNldCBiaXRzIHdoZXJlIGFsc28gW2NoZWNrXSBpcyB0cnVlXG4gICAgY291bnRXaGVyZShjaGVjaykge1xuICAgICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgICAgaWYgKHRoaXMudHJ1ZUNvdW50KCkgPT0gdGhpcy5fbGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2xlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBjaGVjayhpKSA/IDEgOiAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IC0xOyAoaSA9IHRoaXMuZmluZE5leHQoaSwgdHJ1ZSkpICE9IC0xOylcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gY2hlY2soaSkgPyAxIDogMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAvLy8gUGVyZm9ybXMgYml0IFwiYW5kXCIgYW5kIGNvdW50cyBiaXRzIG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUsIHdpdGhvdXQgYml0c2V0IG1vZGlmaWNhdGlvbi5cbiAgICBhbmRXaXRoQ291bnRCaXRzKHNlY29uZCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCA9PSAwKVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzO1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZvciAoOyBpIDwgbGVuIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBrID0gdGhpcy5fZGF0YVtpXSAmIHNlY29uZC5fZGF0YVtpXTsgayAhPSAwOyBrID4+Pj0gOClcbiAgICAgICAgICAgICAgICBjb3VudCArPSBCaXRBcnJheS5fb25CaXRDb3VudFtrICYgMHhmZl07XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIGxhc3QgaW50LlxuICAgICAgICBsZXQgayA9IHRoaXMuX2RhdGFbaV0gJiBzZWNvbmQuX2RhdGFbaV07XG4gICAgICAgIGNvbnN0IHJlbWFpbmluZ0JpdHMgPSB0aGlzLl9sZW5ndGggJiAweDFmO1xuICAgICAgICBpZiAocmVtYWluaW5nQml0cyAhPSAwKVxuICAgICAgICAgICAgayAmPSB+KCg0Mjk0OTY3Mjk1KSA8PCByZW1haW5pbmdCaXRzKTtcbiAgICAgICAgZm9yICg7IGsgIT0gMDsgayA+Pj49IDgpXG4gICAgICAgICAgICBjb3VudCArPSBCaXRBcnJheS5fb25CaXRDb3VudFtrICYgMHhmZl07XG4gICAgICAgIHJldHVybiAodmFsdWUgPyBjb3VudCA6IHRoaXMuX2xlbmd0aCAtIGNvdW50KTtcbiAgICB9XG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuc2V0TGVuZ3RoKDApO1xuICAgIH1cbiAgICBjb250YWlucyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kTmV4dCgtMSwgdmFsdWUpID49IDA7XG4gICAgfVxuICAgIGdldCBhbGxUcnVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudEJpdHModHJ1ZSkgPT0gdGhpcy5fbGVuZ3RoO1xuICAgIH1cbiAgICBnZXQgYWxsRmFsc2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50Qml0cyhmYWxzZSkgPT0gdGhpcy5fbGVuZ3RoO1xuICAgIH1cbiAgICBnZXQgYW55VHJ1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRCaXRzKHRydWUpID4gMDtcbiAgICB9XG4gICAgZ2V0IGFueUZhbHNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudEJpdHMoZmFsc2UpID4gMDtcbiAgICB9XG4gICAgLy8vIFJldHVybnMgdGhlIHBvc2l0aW9uIG9mIHRoZSBuZXh0IGJpdCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlLCBzdGFydGluZyBmcm9tIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uXG4gICAgLy8vIFJldHVybnMgLTEsIGlmIHRoZXJlIGFyZSBubyBzdWNoIGJpdHMuXG4gICAgZmluZE5leHQoaW5kZXgsIHZhbHVlID0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UoaW5kZXgsIC0xLCB0aGlzLl9sZW5ndGgsICdpbmRleCcpO1xuICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5fbGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgaW5kZXggPSBpbmRleCA8IDAgPyAwIDogaW5kZXggKyAxOyAvLyBza2lwIHN0YXJ0XG4gICAgICAgIGxldCB1bnVzZWRCaXRzID0gaW5kZXggJiAweDFmO1xuICAgICAgICBjb25zdCBudW1JbnRzID0gdGhpcy5sZW5ndGhJbkludHM7XG4gICAgICAgIGZvciAobGV0IGkgPSBNYXRoLmZsb29yKGluZGV4IC8gMzIpOyBpIDwgbnVtSW50czsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgayA9ICh2YWx1ZSA/IHRoaXMuX2RhdGFbaV0gOiB+dGhpcy5fZGF0YVtpXSk7IC8vIHVpbnQgY2FzdFxuICAgICAgICAgICAgaWYgKHVudXNlZEJpdHMgIT0gMCkge1xuICAgICAgICAgICAgICAgIGsgJj0gKCgweGZmZmZmZmZmIDw8IHVudXNlZEJpdHMpICYgMHhmZmZmZmZmZik7XG4gICAgICAgICAgICAgICAgdW51c2VkQml0cyA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghdmFsdWUgJiYgayA9PSAtNDI5NDk2NzI5NikgLyogbG9va2luZyBmb3IgZmFsc2UsIGFsbCBiaXRzIGFyZSBzZXQgKi8ge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGsgIT0gMDsgaiArPSA4LCBrID4+Pj0gOCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBCaXRBcnJheS5fZmlyc3RPbkJpdFtrICYgMHhmZl07XG4gICAgICAgICAgICAgICAgaWYgKHAgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHAgKyAoaSAqIDMyKSArIGo7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSB0aGlzLl9sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICAvLy8gRmluZHMgcHJldmlvdXMgYml0IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUgaW4gdGhlIGJpdHNldC5cbiAgICBmaW5kUHJldihpbmRleCwgdmFsdWUgPSB0cnVlKSB7XG4gICAgICAgIGlmIChpbmRleCA9PSAwKVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UoaW5kZXgsIC0xLCB0aGlzLl9sZW5ndGgsICdpbmRleCcpO1xuICAgICAgICBpbmRleCA9IGluZGV4IDwgMCA/IHRoaXMuX2xlbmd0aCAtIDEgOiBpbmRleCAtIDE7IC8vIHNraXAgc3RhcnRcbiAgICAgICAgY29uc3QgbGFzdEludElkeCA9IE1hdGguZmxvb3IoaW5kZXggLyAweDIwKTtcbiAgICAgICAgbGV0IHJlbWFpbmluZ0JpdHMgPSAoaW5kZXggKyAxKSAmIDB4MWY7XG4gICAgICAgIGZvciAobGV0IGkgPSBsYXN0SW50SWR4OyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IGsgPSAodmFsdWUgPyB0aGlzLl9kYXRhW2ldIDogfnRoaXMuX2RhdGFbaV0pOyAvLyBjYXN0XG4gICAgICAgICAgICBpZiAocmVtYWluaW5nQml0cyAhPSAwKSB7XG4gICAgICAgICAgICAgICAgayAmPSB+KCg0Mjk0OTY3Mjk1KSA8PCByZW1haW5pbmdCaXRzKTtcbiAgICAgICAgICAgICAgICByZW1haW5pbmdCaXRzID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAyNDsgayAhPSAwOyBqIC09IDgsIGsgPDw9IDgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwID0gQml0QXJyYXkuX2xhc3RPbkJpdFtrID4+PiAweDE4XTtcbiAgICAgICAgICAgICAgICBpZiAocCA+PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCArIChpICogMzIpICsgajtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxufVxuQml0QXJyYXkuX29uQml0Q291bnQgPSBJbnQ4QXJyYXkuZnJvbShbXG4gICAgMCwgMSwgMSwgMiwgMSwgMiwgMiwgMywgMSwgMiwgMiwgMywgMiwgMywgMywgNCxcbiAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LFxuICAgIDEsIDIsIDIsIDMsIDIsIDMsIDMsIDQsIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsXG4gICAgMiwgMywgMywgNCwgMywgNCwgNCwgNSwgMywgNCwgNCwgNSwgNCwgNSwgNSwgNixcbiAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LFxuICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsXG4gICAgMiwgMywgMywgNCwgMywgNCwgNCwgNSwgMywgNCwgNCwgNSwgNCwgNSwgNSwgNixcbiAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LFxuICAgIDEsIDIsIDIsIDMsIDIsIDMsIDMsIDQsIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsXG4gICAgMiwgMywgMywgNCwgMywgNCwgNCwgNSwgMywgNCwgNCwgNSwgNCwgNSwgNSwgNixcbiAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LFxuICAgIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsIDQsIDUsIDUsIDYsIDUsIDYsIDYsIDcsXG4gICAgMiwgMywgMywgNCwgMywgNCwgNCwgNSwgMywgNCwgNCwgNSwgNCwgNSwgNSwgNixcbiAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LFxuICAgIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsIDQsIDUsIDUsIDYsIDUsIDYsIDYsIDcsXG4gICAgNCwgNSwgNSwgNiwgNSwgNiwgNiwgNywgNSwgNiwgNiwgNywgNiwgNywgNywgOFxuXSk7XG5CaXRBcnJheS5fZmlyc3RPbkJpdCA9IEludDhBcnJheS5mcm9tKFtcbiAgICAtMSwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDUsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA2LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNSwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDcsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA1LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNiwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDUsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMFxuXSk7XG5CaXRBcnJheS5fbGFzdE9uQml0ID0gSW50OEFycmF5LmZyb20oW1xuICAgIC0xLCAwLCAxLCAxLCAyLCAyLCAyLCAyLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLFxuICAgIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNyxcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNyxcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNyxcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3XG5dKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVltbDBMV0Z5Y21GNUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWW1sMExXRnljbUY1TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRTFCUVUwc1EwRkJReXhQUVVGUExFOUJRVThzVVVGQlVUdEpRVzlGTTBJc1dVRkJXU3hIUVVGNVFpeEZRVUZGTEdWQlFXbERMRXRCUVVzN1VVRmFja1VzV1VGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTmFMR0ZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRFlpeHBRa0ZCV1N4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOcVFpeHRRa0ZCWXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOdVFpd3dRa0ZCY1VJc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU16UWl3MFFrRkJkVUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTNRaXh0UWtGQll5eEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTndRaXd3UWtGQmNVSXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOdVF5eHhRa0ZCWjBJc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGTGRrSXNTVUZCU1N4UFFVRlBMRWRCUVVjc1MwRkJTeXhSUVVGUkxFVkJRVVU3V1VGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRE8xbEJRMjVDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRkZCUVZFc1EwRkJReXhoUVVGaExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdXVUZETlVNc1NVRkJTU3haUVVGWkxFVkJRVVU3WjBKQlEyaENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJUdHZRa0ZEYkVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTJoQ08xbEJRMFFzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNN1dVRkRiRUlzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4TlFVRk5MRU5CUVVNN1UwRkRka0k3WVVGQlRTeEpRVUZKTEVkQlFVY3NXVUZCV1N4WFFVRlhMRVZCUVVVN1dVRkRja01zU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SFFVRnJRaXhEUVVGRE8xbEJRMmhETEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1dVRkJjMElzUTBGQlF6dFRRVU4yUXp0aFFVRk5PMWxCUTB3c1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhEUVVGRE8xTkJRM2hETzBsQlEwZ3NRMEZCUXp0SlFVZEVMRlZCUVZVc1MwRkJTeXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlc1RExGVkJRVlVzUTBGQlF5eEhRVUZYTEVWQlFVVXNUMEZCWlR0UlFVTnlReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETzFsQlFVVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXhIUVVGSExFOUJRVThzT0VKQlFUaENMRU5CUVVNc1EwRkJRenRKUVVONlJTeERRVUZETzBsQlJVUXNZVUZCWVN4RFFVRkRMRXRCUVdFc1JVRkJSU3hIUVVGWExFVkJRVVVzUjBGQlZ5eEZRVUZGTEU5QlFXVTdVVUZEY0VVc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU03V1VGRGFFTXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXhaUVVGWkxFOUJRVThzUzBGQlN5eExRVUZMTEcxQ1FVRnRRaXhIUVVGSExFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTndSaXhEUVVGRE8wbEJSVVFzU1VGQlNTeERRVUZETEVkQlFXZENMRVZCUVVVc1IwRkJaMElzUlVGQlJTeExRVUZoTzFGQlEzQkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRelZDTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEY0VJc1EwRkJRenRKUVVWRUxGRkJRVkVzUTBGQlF5eExRVUZsTzFGQlEzUkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHp0WlFVTXZRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEcxQ1FVRnRRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eFBRVUZQTEV0QlFVc3NRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRekZGTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dFJRVU4wUkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03U1VGRGJFSXNRMEZCUXp0SlFVVkVMRWxCUVVrc1RVRkJUVHRSUVVOU0xFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0SlFVTjBRaXhEUVVGRE8wbEJSVVFzU1VGQlNTeE5RVUZOTzFGQlExSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8wbEJRM0JDTEVOQlFVTTdTVUZGUkN4SlFVRkpMRTFCUVUwc1EwRkJReXhKUVVGcFFqdFJRVU14UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03U1VGRGJFSXNRMEZCUXp0SlFVVkVMRWxCUVVrc1QwRkJUenRSUVVOVUxFOUJRVThzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0SlFVTjJRaXhEUVVGRE8wbEJSVVFzU1VGQlNTeFBRVUZQTEVOQlFVTXNTMEZCWVR0UlFVTjJRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXp0SlFVTjRRaXhEUVVGRE8wbEJSVVFzWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWs3VVVGRE5VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN4SlFVRkpMRmxCUVZrN1VVRkRaQ3hQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUTJ4RUxFTkJRVU03U1VGRlJDeEpRVUZKTEdGQlFXRTdVVUZEWml4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRGFFWXNRMEZCUXp0SlFVVkVMRWxCUVVrc1lVRkJZU3hEUVVGRExFbEJRVms3VVVGRE5VSXNTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRE0wSXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1NVRkROME1zUTBGQlF6dEpRVVZFTEVsQlFVa3NTVUZCU1R0UlFVTk9MRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFTEZOQlFWTXNRMEZCUXl4TFFVRmhPMUZCUTNKQ0xFbEJRVWtzUzBGQlN5eEhRVUZITEVOQlFVTTdXVUZEV0N4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHZENRVUZuUWl4RFFVRkRMRU5CUVVNN1VVRkZjRU1zU1VGQlNTeExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4N1dVRkJSU3hQUVVGUE8xRkJRMnhETEUxQlFVMHNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGRFUXNTVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSVHRaUVVOd1J5eE5RVUZOTEU5QlFVOHNSMEZCUnl4SlFVRkpMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFpRVU0zUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZMRU5CUVVNc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFpRVU53Unl4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFOUJRVThzUTBGQlF6dFRRVU4wUWp0UlFVVkVMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVTdXVUZEZUVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NSMEZCUnl4RFFVRkRPMmRDUVVONlFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZGYWtZc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzVjBGQlZ5eERRVUZETEVOQlFVTTdVMEZEY0VRN1VVRkRSQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVTnlRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdTVUZEYkVJc1EwRkJRenRKUVVWRUxFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCWXl4RlFVRkZMRWxCUVdNN1VVRkRNME1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUE8xbEJRemxDTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc2JVSkJRVzFDTEVsQlFVa3NRMEZCUXl4UFFVRlBMRTlCUVU4c1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGZWtVc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRM2hETEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF6dFJRVU0xUWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExGRkJRVkVzUTBGQlF5eGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRMnhFTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJSV3hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03VVVGRE9VSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRNVUlzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGYUVRc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVOHNUVUZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhOUVVGak8xRkJRM3BETEU5QlFVOHNTVUZCU1N4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6ZEVMRU5CUVVNN1NVRkZSQ3hOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFYTkNPMUZCUTNSRExFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU42UXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVZzUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU55UXl4SlFVRkpMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlExZ3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzFOQlEyaEZPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNjMGRCUVhOSE8wbEJRM1JITEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJZU3hGUVVGRkxFbEJRV003VVVGRE1VTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEYWtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRE5VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZNVUlzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRiRUlzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc2EwVkJRV3RGTzBsQlEyeEZMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlV6dFJRVU42UWl4UFFVRlBMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRU5CUVZNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU4yUlN4RFFVRkRPMGxCUlVRc05FVkJRVFJGTzBsQlF6VkZMRTFCUVUwc1EwRkJReXhsUVVGbExFTkJRVU1zVDBGQlpTeEZRVUZGTEV0QlFXdENPMUZCUTNoRUxFMUJRVTBzU1VGQlNTeEhRVUZITEVsQlFVa3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRMjVETEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRE8xRkJRMjVDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxIbERRVUY1UXp0SlFVTjZReXhOUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFXbENPMUZCUTJoRExFMUJRVTBzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRla0lzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4UlFVRlJMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyNURMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM2hFTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU4yUWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRFlpeEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkZZaXhQUVVGUExFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHRaUVVONFFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGRGJrSXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEZUVRc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlEyNURMRWRCUVVjc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZGZGtNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFRRVU5ZTzFGQlJVUXNTVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hKUVVGSkxFTkJRVU03V1VGRGFrSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRPMUZCUlhSRUxFbEJRVWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NTVUZCU1N4RFFVRkRPMWxCUTJwQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVVZ3UkN4SlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF6dFpRVU5xUWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRmVrTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGJFSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVFzVVVGQlVUdFJRVU5PTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhWUVVGVkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVNM1JDeERRVUZETzBsQlJVUXNORU5CUVRSRE8wbEJRelZETEUxQlFVMHNRMEZCUXl4TFFVRmxPMUZCUTNCQ0xFbEJRVWtzU1VGQlNTeEpRVUZKTEV0QlFVczdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenRSUVVNdlFpeEpRVUZKTEV0QlFVc3NTVUZCU1N4SlFVRkpPMWxCUVVVc1QwRkJUeXhMUVVGTExFTkJRVU03VVVGRGFFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTzFsQlFVVXNUMEZCVHl4TFFVRkxMRU5CUVVNN1VVRkRhRVFzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SlFVRkpMRU5CUVVNN1dVRkJSU3hQUVVGUExFbEJRVWtzUTBGQlF6dFJRVVZ1UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTTFReXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUVVVc1QwRkJUeXhMUVVGTExFTkJRVU03VVVGRmNFUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU12UkN4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEyNURMRTlCUVU4c1MwRkJTeXhEUVVGRE8xTkJRMmhDTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVFzZFVKQlFYVkNPMGxCUTNaQ0xFdEJRVXM3VVVGRFNDeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRkZCUVZFc1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVVUZEZUVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUjBGQlJ5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEcxRFFVRnRRenRSUVVOc1JpeFJRVUZSTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03VVVGRGFFTXNVVUZCVVN4RFFVRkRMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETzFGQlEyeERMRTlCUVU4c1VVRkJVU3hEUVVGRE8wbEJRMnhDTEVOQlFVTTdTVUZGUkN3MFFrRkJORUk3U1VGRE5VSXNTVUZCU1N4RFFVRkRMRWxCUVdNc1JVRkJSU3hOUVVGbE8xRkJRMnhETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlJURkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlEzSkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEVkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdVMEZEYUVVN1VVRkZSQ3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRE9VSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVFzY1VKQlFYRkNPMGxCUTNKQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1R0UlFVTnNRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNoRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmRFSXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUTJoRExFTkJRVU03U1VGRlJDeHRSVUZCYlVVN1NVRkRia1VzVFVGQlRTeERRVUZETEV0QlFXTXNSVUZCUlN4TlFVRk5MRWRCUVVjc1MwRkJTenRSUVVOdVF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkROMElzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVVNVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZMR2RDUVVGblFqdFpRVU0xUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXp0UlFVVjRRaXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGFFTXNRMEZCUXp0SlFVVkVMQ3REUVVFclF6dEpRVU12UXl3NFEwRkJPRU03U1VGRE9VTXNkMFJCUVhkRU8wbEJRM2hFTEZWQlFWVXNRMEZCUXl4UFFVRnpRaXhGUVVGRkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVWQlFVVXNTMEZCU3l4SFFVRkhMRWxCUVVrc1JVRkJSU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU14UlN4SlFVRkpMRXRCUVVzN1dVRkRVQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJSVGRDTEV0QlFVc3NUVUZCVFN4RFFVRkRMRWxCUVVrc1QwRkJUenRaUVVOeVFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFJRVVY2UWl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkRhRU1zUTBGQlF6dEpRVVZFTEZWQlFWVXNRMEZCUXl4UFFVRnpRaXhGUVVGRkxFdEJRVXNzUjBGQlJ5eEpRVUZKTzFGQlF6ZERMRXRCUVVzc1RVRkJUU3hMUVVGTExFbEJRVWtzVDBGQlR5eEZRVUZGTzFsQlF6TkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4TFFVRkxPMmRDUVVNM1FpeFBRVUZQTEV0QlFVc3NRMEZCUXp0VFFVTm9RanRSUVVORUxFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMRkZCUVZFc1EwRkJReXhQUVVGelFpeEZRVUZGTEV0QlFVc3NSMEZCUnl4SlFVRkpPMUZCUXpORExFdEJRVXNzVFVGQlRTeExRVUZMTEVsQlFVa3NUMEZCVHl4RlFVRkZPMWxCUXpOQ0xFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTE8yZENRVU0zUWl4UFFVRlBMRWxCUVVrc1EwRkJRenRUUVVObU8xRkJRMFFzVDBGQlR5eExRVUZMTEVOQlFVTTdTVUZEWml4RFFVRkRPMGxCUlVRc1VVRkJVU3hEUVVGRExFdEJRV1VzUlVGQlJTeExRVUZMTEVkQlFVY3NTVUZCU1N4RlFVRkZMRXRCUVVzc1IwRkJSeXhKUVVGSkxFVkJRVVVzVFVGQlRTeEhRVUZITEVsQlFVa3NSVUZCUlN4VlFVRlZMRWRCUVVjc1NVRkJTVHRSUVVOd1JpeEpRVUZKTEV0QlFVc3NTVUZCU1N4VlFVRlZPMWxCUTNKQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRk4wSXNTVUZCU1N4VlFVRlZMRVZCUVVVN1dVRkRaQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkRja01zU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVOV0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8yRkJRekZDTzFOQlEwWTdZVUZCVFR0WlFVTk1MRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zUlVGQlJUdG5Ra0ZEYmtNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VTBGRE9VTTdVVUZGUkN4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkRhRU1zUTBGQlF6dEpRVVZFTEZGQlFWRXNRMEZCUXl4SlFVRlpMRVZCUVVVc1JVRkJWVHRSUVVNdlFpeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGRFUXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRE9VTXNUVUZCVFN4SFFVRkhMRWRCUVcxQ0xFVkJRVVVzUTBGQlF6dFJRVU12UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUlVGQlJTeERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkJRenRaUVVNMVFpeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXpRaXhQUVVGUExGRkJRVkVzUTBGQlF5eFZRVUZWTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRiRU1zUTBGQlF6dEpRVVZFTEdOQlFXTXNRMEZCUXl4SlFVRlpMRVZCUVVVc1JVRkJWVHRSUVVOeVF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGRFUXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRE9VTXNUVUZCVFN4SFFVRkhMRWRCUVdNc1JVRkJSU3hEUVVGRE8xRkJRekZDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVWQlFVVXNSVUZCUlN4RFFVRkRPMWxCUXpWQ0xFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6TkNMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzUTBGQlF6dEpRVWRFTEZGQlFWRXNRMEZCUXl4SlFVRlpMRVZCUVVVc1JVRkJWU3hGUVVGRkxFdEJRV01zUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1R0UlFVTTVSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRkRVFzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJSV3hFTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTJwRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlJTOUNMR2RDUVVGblFqdFJRVU5vUWl4SlFVRkpMRXRCUVVzc1JVRkJSVHRaUVVOVUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NTMEZCU3l4RlFVRkZMRU5CUVVNc1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTzJkQ1FVTXZRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTI1Q08yRkJRVTA3V1VGRFRDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRXRCUVVzc1JVRkJSU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlR0blFrRkRMMElzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOd1FqdFJRVVZFTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTTVRaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5rTEVOQlFVTTdTVUZGUkN4dFJVRkJiVVU3U1VGRGJrVXNVMEZCVXl4RFFVRkRMRU5CUVZNc1JVRkJSU3hMUVVGakxFVkJRVVVzVFVGQlRTeEhRVUZITEVsQlFVazdVVUZEYUVRc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUenRaUVVNelFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRFJDUVVFMFFpeERRVUZETEVOQlFVTTdVVUZGYUVRc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVVXpReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkZjRUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ6dFpRVU4wUWl4TlFVRk5MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdXVUZEYmtRc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVzN1owSkJRVVVzVTBGQlV6dFpRVU4wUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0WlFVTjJRaXhEUVVGRExFVkJRVVVzUTBGQlF6dFRRVU5NTzFGQlJVUXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUTJoRExFTkJRVU03U1VGRlJDd3JSVUZCSzBVN1NVRkRMMFVzYlVSQlFXMUVPMGxCUTI1RUxFZEJRVWNzUTBGQlF5eExRVUZsTEVWQlFVVXNUVUZCVFN4SFFVRkhMRWxCUVVrN1VVRkRhRU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUE8xbEJReTlDTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNRMEZCUXp0UlFVVXpReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVOdVJDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZiRU1zU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlF6bENMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFTEdkR1FVRm5SanRKUVVOb1Jpd3JSRUZCSzBRN1NVRkRMMFFzVFVGQlRTeERRVUZETEV0QlFXVXNSVUZCUlN4TlFVRk5MRWRCUVVjc1NVRkJTVHRSUVVOdVF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVTg3V1VGREwwSXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4RFFVRkRPMUZCUlRORExFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1VVRkRPVUlzUzBGQlN5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFZEJRVWNzUlVGQlJTeEpRVUZKTEVWQlFVVTdXVUZEYmtNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZGZWtNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRemxDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxHZEdRVUZuUmp0SlFVTm9SaXdyUkVGQkswUTdTVUZETDBRc1RVRkJUU3hEUVVGRExFdEJRV1VzUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1R0UlFVTnVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4N1dVRkRMMElzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eERRVUZETzFGQlJUTkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTI1RUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhCRUxFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU01UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJDeG5SRUZCWjBRN1NVRkRhRVFzUjBGQlJ5eERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpPMUZCUTJZc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRia1FzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZha01zU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlF6bENMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFTERKRlFVRXlSVHRKUVVNelJTd3JSRUZCSzBRN1NVRkRMMFFzUlVGQlJTeERRVUZETEV0QlFXVXNSVUZCUlN4TlFVRk5MRWRCUVVjc1NVRkJTVHRSUVVNdlFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVTg3V1VGREwwSXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4RFFVRkRPMUZCUlRORExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRMjVFTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVWc1F5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZET1VJc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNjVVpCUVhGR08wbEJRM0pHTEN0RVFVRXJSRHRKUVVNdlJDeEhRVUZITEVOQlFVTXNTMEZCWlN4RlFVRkZMRTFCUVUwc1IwRkJSeXhKUVVGSk8xRkJRMmhETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR6dFpRVU12UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNN1VVRkZNME1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGJrUXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSV3hETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTTVRaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5rTEVOQlFVTTdTVUZGUkN4dlJrRkJiMFk3U1VGRGNFWXNVVUZCVVN4RFFVRkRMRWRCUVZjc1JVRkJSU3hEUVVGVExFVkJRVVVzU1VGQlNTeEhRVUZITEV0QlFVczdVVUZETTBNc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVVUZGYUVRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dFpRVUZGTEU5QlFVODdVVUZGYmtJc1owSkJRV2RDTzFGQlEyaENMSFZFUVVGMVJEdFJRVVYyUkN4cFFrRkJhVUk3VVVGRGFrSXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF6dFJRVU12UWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZha01zWjBSQlFXZEVPMUZCUldoRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NVMEZCVXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTjJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUlhKRExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTm9ReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVWMlFpeGxRVUZsTzBsQlEycENMRU5CUVVNN1NVRkZSQ3hyUmtGQmEwWTdTVUZEYkVZc2RVSkJRWFZDTzBsQlEzWkNMRkZCUVZFc1EwRkJReXhIUVVGWExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTTdVVUZEZWtJc2QwUkJRWGRFTzFGQlEzaEVMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU03V1VGRFVDeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMSE5DUVVGelFpeERRVUZETEVOQlFVTTdVVUZGTVVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUlhCRUxFbEJRVWtzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHRaUVVOMlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU42UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzUkRPMUZCUlVRc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMjVETEVOQlFVTTdTVUZGUkN4WlFVRlpMRU5CUVVNc1NVRkJZeXhGUVVGRkxFbEJRVWtzUjBGQlJ5eEpRVUZKTzFGQlEzUkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFR0WlFVTTNRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRk0wTXNTVUZCU1N4SlFVRkpMRWxCUVVrc1NVRkJTU3hGUVVGRkxFVkJRVVVzY1VKQlFYRkNPMWxCUTNaRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZEVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUTNCQ08yRkJRVTA3V1VGRFRDeEpRVUZKTEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkZaaXhMUVVGTExFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTJwRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUlRsRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NUVUZCVFN4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0VFFVTnFRanRSUVVWRUxFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMQ3RDUVVFclFqdEpRVU12UWl4TlFVRk5MRU5CUVVNc1IwRkJWenRSUVVOb1FpeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTVUZEZWtVc1EwRkJRenRKUVVWRUxDdENRVUVyUWp0SlFVTXZRaXhOUVVGTkxFTkJRVU1zUjBGQlZ5eEZRVUZGTEVkQlFWa3NSVUZCUlN4TlFVRk5MRWRCUVVjc1NVRkJTVHRSUVVNM1F5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU4yUWl4SlFVRkpMRTFCUVUwN1dVRkRVaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdPMWxCUldoQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0SlFVTndRaXhEUVVGRE8wbEJSVVFzYVVaQlFXbEdPMGxCUTJwR0xFOUJRVThzUTBGQlF5eERRVUZUTEVWQlFVVXNTMEZCWXp0UlFVTXZRaXhKUVVGSkxFdEJRVXM3V1VGRFVDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPenRaUVVWd1JDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRek5FTEVOQlFVTTdTVUZGUkN4UFFVRlBMRU5CUVVNc1IwRkJWenRSUVVOcVFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpGRUxFTkJRVU03U1VGRlJDeFJRVUZSTEVOQlFVTXNSMEZCVnp0UlFVTnNRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpkRUxFTkJRVU03U1VGRlJDeFRRVUZUTzFGQlExQXNUMEZCVHl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6bENMRU5CUVVNN1NVRkZSQ3hWUVVGVk8xRkJRMUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJReTlDTEVOQlFVTTdTVUZGUkN4MVEwRkJkVU03U1VGRGRrTXNVMEZCVXl4RFFVRkRMRXRCUVdNN1VVRkRkRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SlFVRkpMRU5CUVVNN1dVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVZvUXl4SlFVRkpMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRk8xbEJReTlETEVsQlFVa3NRMEZCUXl4alFVRmpMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM2hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03V1VGRE9VSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRMVlzVDBGQlR5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxEUkNRVUUwUWp0dlFrRkRNVVVzU1VGQlNTeERRVUZETEdOQlFXTXNTVUZCU1N4UlFVRlJMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0cFFrRkRka1E3WVVGRFJqdFpRVVZFTEdkQ1FVRm5RanRaUVVOb1FpeEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzUkNMRTFCUVUwc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRPMWxCUXpGRExFbEJRVWtzWVVGQllTeEpRVUZKTEVOQlFVTXNSVUZCUlN4NVJrRkJlVVk3WjBKQlF5OUhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4aFFVRmhMRU5CUVVNc1EwRkJRenRaUVVWNFF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU03WjBKQlEzSkNMRWxCUVVrc1EwRkJReXhqUVVGakxFbEJRVWtzVVVGQlVTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRmVFUXNTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1UwRkROVU03VVVGRlJDeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0SlFVTTFSU3hEUVVGRE8wbEJSVVFzTWtSQlFUSkVPMGxCUXpORUxGVkJRVlVzUTBGQlF5eExRVUZsTzFGQlEzaENMRWxCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5tTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVTdXVUZEY0VNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eEZRVUZGTzJkQ1FVTnVReXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTTVRanRoUVVGTk8xbEJRMHdzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRha1FzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRPVUk3VVVGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0SlFVTm9RaXhEUVVGRE8wbEJSVVFzTWtaQlFUSkdPMGxCUXpOR0xHZENRVUZuUWl4RFFVRkRMRTFCUVdkQ0xFVkJRVVVzUzBGQll6dFJRVU12UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzUTBGQlF6dFpRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUldoRExFbEJRVWtzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTmtMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZET1VJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlExWXNUMEZCVHl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTjJRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRPMmRDUVVNMVJDeExRVUZMTEVsQlFVa3NVVUZCVVN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdVMEZETTBNN1VVRkZSQ3huUWtGQlowSTdVVUZEYUVJc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNoRExFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRekZETEVsQlFVa3NZVUZCWVN4SlFVRkpMRU5CUVVNN1dVRkRjRUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxHRkJRV0VzUTBGQlF5eERRVUZETzFGQlEzaERMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXp0WlFVTnlRaXhMUVVGTExFbEJRVWtzVVVGQlVTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRk1VTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFdEJRVXNzUTBGQlF5eERRVUZETzBsQlEyaEVMRU5CUVVNN1NVRkZSQ3hMUVVGTE8xRkJRMGdzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOd1FpeERRVUZETzBsQlJVUXNVVUZCVVN4RFFVRkRMRXRCUVdNN1VVRkRja0lzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0SlFVTjJReXhEUVVGRE8wbEJSVVFzU1VGQlNTeFBRVUZQTzFGQlExUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1NVRkRPVU1zUTBGQlF6dEpRVVZFTEVsQlFVa3NVVUZCVVR0UlFVTldMRTlCUVU4c1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRE8wbEJReTlETEVOQlFVTTdTVUZGUkN4SlFVRkpMRTlCUVU4N1VVRkRWQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRMnhETEVOQlFVTTdTVUZGUkN4SlFVRkpMRkZCUVZFN1VVRkRWaXhQUVVGUExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRMjVETEVOQlFVTTdTVUZGUkN4elIwRkJjMGM3U1VGRGRFY3NNRU5CUVRCRE8wbEJRekZETEZGQlFWRXNRMEZCUXl4TFFVRmhMRVZCUVVVc1MwRkJTeXhIUVVGSExFbEJRVWs3VVVGRGJFTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVZ5UkN4SlFVRkpMRXRCUVVzc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTTdXVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM3BETEV0QlFVc3NSMEZCUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eGhRVUZoTzFGQlEyaEVMRWxCUVVrc1ZVRkJWU3hIUVVGSExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZET1VJc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXp0UlFVVnNReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4UFFVRlBMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGNrUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNXVUZCV1R0WlFVTTVSQ3hKUVVGSkxGVkJRVlVzU1VGQlNTeERRVUZETEVWQlFVVTdaMEpCUTI1Q0xFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNWVUZCVlN4SlFVRkpMRlZCUVZVc1EwRkJReXhIUVVGSExGVkJRVlVzUTBGQlF5eERRVUZETzJkQ1FVTXZReXhWUVVGVkxFZEJRVWNzUTBGQlF5eERRVUZETzJGQlEyaENPMmxDUVVGTkxFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxIbERRVUY1UXl4RFFVRkJPMmRDUVVNNVJTeFRRVUZUTzJGQlExWTdXVUZGUkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlR0blFrRkRlRU1zVFVGQlRTeERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUTNwRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0dlFrRkRWaXhMUVVGTExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dHZRa0ZEZWtJc1NVRkJTU3hMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVODdkMEpCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZEY2tNc1QwRkJUeXhMUVVGTExFTkJRVU03YVVKQlEyUTdZVUZEUmp0VFFVTkdPMUZCUTBRc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5hTEVOQlFVTTdTVUZGUkN3MFJFRkJORVE3U1VGRE5VUXNVVUZCVVN4RFFVRkRMRXRCUVdFc1JVRkJSU3hMUVVGTExFZEJRVWNzU1VGQlNUdFJRVU5zUXl4SlFVRkpMRXRCUVVzc1NVRkJTU3hEUVVGRE8xbEJRVVVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXhRaXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUlhKRUxFdEJRVXNzUjBGQlJ5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEdGQlFXRTdVVUZGTDBRc1RVRkJUU3hWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRE5VTXNTVUZCU1N4aFFVRmhMRWRCUVVjc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUlhaRExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NWVUZCVlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEY0VNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUenRaUVVONlJDeEpRVUZKTEdGQlFXRXNTVUZCU1N4RFFVRkRMRVZCUVVVN1owSkJRM1JDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeGhRVUZoTEVOQlFVTXNRMEZCUXp0blFrRkRkRU1zWVVGQllTeEhRVUZITEVOQlFVTXNRMEZCUXp0aFFVTnVRanRaUVVORUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8yZENRVU40UXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRE1VTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenR2UWtGRFVpeFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdZVUZETTBJN1UwRkRSanRSUVVORUxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEV2l4RFFVRkRPenRCUVhKMVFrMHNiMEpCUVZjc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETzBsQlEyeERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1EwRkJReXhEUVVGRExFTkJRVU03UVVGRk5VTXNiMEpCUVZjc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETzBsQlEyeERMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU12UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenREUVVGRExFTkJRVU1zUTBGQlF6dEJRVVUxUXl4dFFrRkJWU3hIUVVGSExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTTdTVUZEYWtNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF5OURMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wTkJRVU1zUTBGQlF5eERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpYaHdiM0owSUdSbFptRjFiSFFnWTJ4aGMzTWdRbWwwUVhKeVlYa2dlMXh1SUNCemRHRjBhV01nWDI5dVFtbDBRMjkxYm5RZ1BTQkpiblE0UVhKeVlYa3Vabkp2YlNoYlhHNGdJQ0FnTUN3Z01Td2dNU3dnTWl3Z01Td2dNaXdnTWl3Z015d2dNU3dnTWl3Z01pd2dNeXdnTWl3Z015d2dNeXdnTkN4Y2JpQWdJQ0F4TENBeUxDQXlMQ0F6TENBeUxDQXpMQ0F6TENBMExDQXlMQ0F6TENBekxDQTBMQ0F6TENBMExDQTBMQ0ExTEZ4dUlDQWdJREVzSURJc0lESXNJRE1zSURJc0lETXNJRE1zSURRc0lESXNJRE1zSURNc0lEUXNJRE1zSURRc0lEUXNJRFVzWEc0Z0lDQWdNaXdnTXl3Z015d2dOQ3dnTXl3Z05Dd2dOQ3dnTlN3Z015d2dOQ3dnTkN3Z05Td2dOQ3dnTlN3Z05Td2dOaXhjYmlBZ0lDQXhMQ0F5TENBeUxDQXpMQ0F5TENBekxDQXpMQ0EwTENBeUxDQXpMQ0F6TENBMExDQXpMQ0EwTENBMExDQTFMRnh1SUNBZ0lESXNJRE1zSURNc0lEUXNJRE1zSURRc0lEUXNJRFVzSURNc0lEUXNJRFFzSURVc0lEUXNJRFVzSURVc0lEWXNYRzRnSUNBZ01pd2dNeXdnTXl3Z05Dd2dNeXdnTkN3Z05Dd2dOU3dnTXl3Z05Dd2dOQ3dnTlN3Z05Dd2dOU3dnTlN3Z05peGNiaUFnSUNBekxDQTBMQ0EwTENBMUxDQTBMQ0ExTENBMUxDQTJMQ0EwTENBMUxDQTFMQ0EyTENBMUxDQTJMQ0EyTENBM0xGeHVJQ0FnSURFc0lESXNJRElzSURNc0lESXNJRE1zSURNc0lEUXNJRElzSURNc0lETXNJRFFzSURNc0lEUXNJRFFzSURVc1hHNGdJQ0FnTWl3Z015d2dNeXdnTkN3Z015d2dOQ3dnTkN3Z05Td2dNeXdnTkN3Z05Dd2dOU3dnTkN3Z05Td2dOU3dnTml4Y2JpQWdJQ0F5TENBekxDQXpMQ0EwTENBekxDQTBMQ0EwTENBMUxDQXpMQ0EwTENBMExDQTFMQ0EwTENBMUxDQTFMQ0EyTEZ4dUlDQWdJRE1zSURRc0lEUXNJRFVzSURRc0lEVXNJRFVzSURZc0lEUXNJRFVzSURVc0lEWXNJRFVzSURZc0lEWXNJRGNzWEc0Z0lDQWdNaXdnTXl3Z015d2dOQ3dnTXl3Z05Dd2dOQ3dnTlN3Z015d2dOQ3dnTkN3Z05Td2dOQ3dnTlN3Z05Td2dOaXhjYmlBZ0lDQXpMQ0EwTENBMExDQTFMQ0EwTENBMUxDQTFMQ0EyTENBMExDQTFMQ0ExTENBMkxDQTFMQ0EyTENBMkxDQTNMRnh1SUNBZ0lETXNJRFFzSURRc0lEVXNJRFFzSURVc0lEVXNJRFlzSURRc0lEVXNJRFVzSURZc0lEVXNJRFlzSURZc0lEY3NYRzRnSUNBZ05Dd2dOU3dnTlN3Z05pd2dOU3dnTml3Z05pd2dOeXdnTlN3Z05pd2dOaXdnTnl3Z05pd2dOeXdnTnl3Z09GMHBPMXh1WEc0Z0lITjBZWFJwWXlCZlptbHljM1JQYmtKcGRDQTlJRWx1ZERoQmNuSmhlUzVtY205dEtGdGNiaUFnSUNBdE1Td2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3dnTXl3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01DeGNiaUFnSUNBMExDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMQ0F6TENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xGeHVJQ0FnSURVc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNJRE1zSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc1hHNGdJQ0FnTkN3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01Dd2dNeXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN4Y2JpQWdJQ0EyTENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xDQXpMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TEZ4dUlDQWdJRFFzSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc0lETXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzWEc0Z0lDQWdOU3dnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN3Z015d2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3hjYmlBZ0lDQTBMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TENBekxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMRnh1SUNBZ0lEY3NJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzSURNc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNYRzRnSUNBZ05Dd2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3dnTXl3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01DeGNiaUFnSUNBMUxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMQ0F6TENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xGeHVJQ0FnSURRc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNJRE1zSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc1hHNGdJQ0FnTml3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01Dd2dNeXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN4Y2JpQWdJQ0EwTENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xDQXpMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TEZ4dUlDQWdJRFVzSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc0lETXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzWEc0Z0lDQWdOQ3dnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN3Z015d2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNRjBwTzF4dVhHNGdJSE4wWVhScFl5QmZiR0Z6ZEU5dVFtbDBJRDBnU1c1ME9FRnljbUY1TG1aeWIyMG9XMXh1SUNBZ0lDMHhMQ0F3TENBeExDQXhMQ0F5TENBeUxDQXlMQ0F5TENBekxDQXpMQ0F6TENBekxDQXpMQ0F6TENBekxDQXpMRnh1SUNBZ0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNYRzRnSUNBZ05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05TeGNiaUFnSUNBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxGeHVJQ0FnSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc1hHNGdJQ0FnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml4Y2JpQWdJQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTEZ4dUlDQWdJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzWEc0Z0lDQWdOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXhjYmlBZ0lDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMRnh1SUNBZ0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NYRzRnSUNBZ055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055eGNiaUFnSUNBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xGeHVJQ0FnSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc1hHNGdJQ0FnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl4Y2JpQWdJQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzWFNrN1hHNWNiaUFnY0hKcGRtRjBaU0JmWkdGMFlUb2dWV2x1ZERNeVFYSnlZWGs3WEc0Z0lIQnlhWFpoZEdVZ1gyeGxibWQwYUNBOUlEQTdYRzRnSUhCeWFYWmhkR1VnWDNabGNuTnBiMjRnUFNBd08xeHVJQ0J3Y21sMllYUmxJRjkxY0dSaGRHVk1aWFpsYkNBOUlEQTdYRzRnSUhCeWFYWmhkR1VnWDNObGJHVmpkR1ZrUTI5MWJuUWdQU0F3TzF4dUlDQndjbWwyWVhSbElGOXpaV3hsWTNSbFpFTnZkVzUwVm1WeWMybHZiaUE5SUMweE8xeHVJQ0J3Y21sMllYUmxJRjl6Wld4bFkzUmxaRWx1WkdWNFpYTldaWEp6YVc5dUlEMGdMVEU3WEc0Z0lIQnlhWFpoZEdVZ1gzWmxjbk5wYjI1bFpFNWhiV1VnUFNBbkp6dGNiaUFnY0hKcGRtRjBaU0JmZG1WeWMybHZibVZrVG1GdFpWWmxjbk5wYjI0Z1BTQXRNVHRjYmlBZ1UwaFNTVTVMWDFSSVVrVlRTRTlNUkNBOUlEQjRNVEF3TzF4dVhHNGdJR052Ym5OMGNuVmpkRzl5S0dSaGRHRTZJRlZwYm5Rek1rRnljbUY1TENCc1pXNW5kR2c2SUc1MWJXSmxjaWxjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9iR1Z1WjNSb09pQnVkVzFpWlhJc0lHUmxabUYxYkhSV1lXeDFaVDg2SUdKdmIyeGxZVzRwWEc0Z0lHTnZibk4wY25WamRHOXlLR0Z5WnpvZ2JuVnRZbVZ5SUh3Z1ZXbHVkRE15UVhKeVlYa3NJR1JsWm1GMWJIUldZV3gxWlRvZ1ltOXZiR1ZoYmlCOElHNTFiV0psY2lBOUlHWmhiSE5sS1NCN1hHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCaGNtY2dQVDA5SUNkdWRXMWlaWEluS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JzWlc1bmRHZ2dQU0JoY21jN1hHNGdJQ0FnSUNCamIyNXpkQ0JpZFdabUlEMGdRbWwwUVhKeVlYa3VYMk55WldGMFpVSjFabVpsY2loc1pXNW5kR2dwTzF4dUlDQWdJQ0FnYVdZZ0tHUmxabUYxYkhSV1lXeDFaU2tnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHSjFabVl1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNBZ0lDQWdZblZtWmx0cFhTQTlJQzB4TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVNBOUlHSjFabVk3WEc0Z0lDQWdJQ0IwYUdsekxsOXNaVzVuZEdnZ1BTQnNaVzVuZEdnN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNoaGNtY2dhVzV6ZEdGdVkyVnZaaUJWYVc1ME16SkJjbkpoZVNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlTQTlJR0Z5WnlCaGN5QlZhVzUwTXpKQmNuSmhlVHRjYmlBZ0lDQWdJSFJvYVhNdVgyeGxibWQwYUNBOUlHUmxabUYxYkhSV1lXeDFaU0JoY3lCdWRXMWlaWEk3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblNXNTJZV3hwWkNCamIyNXpkSEoxWTNSdmNpY3BPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNWNiaUFnWjJWMFVtRjNSR0YwWVNncElIc2djbVYwZFhKdUlIUm9hWE11WDJSaGRHRTdJSDFjYmx4dUlDQmhjM04xY21WSGIyVjZLRzUxYlRvZ2JuVnRZbVZ5TENCaGNtZE9ZVzFsT2lCVGRISnBibWNwT2lCMmIybGtJSHRjYmlBZ0lDQnBaaUFvYm5WdElEd2dNQ2tnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0FrZTJGeVowNWhiV1Y5SUhOb2IzVnNaQ0JpWlNCbmNtVmhkR1Z5SUhSb1lXNGdlbVZ5YjJBcE8xeHVJQ0I5WEc1Y2JpQWdZWE56ZFhKbFNXNVNZVzVuWlNoMllXeDFaVG9nYm5WdFltVnlMQ0J0YVc0NklHNTFiV0psY2l3Z2JXRjRPaUJ1ZFcxaVpYSXNJR0Z5WjA1aGJXVTZJRk4wY21sdVp5azZJSFp2YVdRZ2UxeHVJQ0FnSUdsbUlDZ29kbUZzZFdVZ1BDQnRhVzRwSUh4OElDaDJZV3gxWlNBK0lHMWhlQ2twWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRUZ5WjNWdFpXNTBJQ1I3WVhKblRtRnRaWDBnS0NSN2RtRnNkV1Y5S1NCdmRYUWdiMllnY21GdVoyVWdLQ1I3YldsdWZTd2dKSHR0WVhoOUtXQXBPMXh1SUNCOVhHNWNiaUFnWTI5d2VTaHpjbU02SUZWcGJuUXpNa0Z5Y21GNUxDQmtjM1E2SUZWcGJuUXpNa0Z5Y21GNUxDQmpiM1Z1ZERvZ2JuVnRZbVZ5S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JqYjNWdWREc2dhU3NyS1Z4dUlDQWdJQ0FnWkhOMFcybGRJRDBnYzNKalcybGRPMXh1SUNCOVhHNWNiaUFnWTI5d2VVWnliMjBvYjNSb1pYSTZJRUpwZEVGeWNtRjVLVG9nZG05cFpDQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyeGxibWQwYUNBaFBTQnZkR2hsY2k1ZmJHVnVaM1JvS1Z4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLR0JNWlc1bmRHaHpJR1JwWm1abGNpQW9KSHQwYUdsekxsOXNaVzVuZEdoOUlDRTlJQ1I3YjNSb1pYSXVYMnhsYm1kMGFIMHBZQ2s3WEc0Z0lDQWdkR2hwY3k1amIzQjVLRzkwYUdWeUxsOWtZWFJoTENCMGFHbHpMbDlrWVhSaExDQjBhR2x6TG14bGJtZDBhRWx1U1c1MGN5azdYRzRnSUNBZ2RHaHBjeTVmZG1WeWMybHZiaXNyTzF4dUlDQjlYRzVjYmlBZ1oyVjBJR3hsYm1kMGFDZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmYkdWdVozUm9PMXh1SUNCOVhHNWNiaUFnWjJWMElHSjFabVpsY2lncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZaR0YwWVR0Y2JpQWdmVnh1WEc0Z0lITmxkQ0JpZFdabVpYSW9aR0YwWVRvZ1ZXbHVkRE15UVhKeVlYa3BJSHRjYmlBZ0lDQjBhR2x6TGw5a1lYUmhJRDBnWkdGMFlUdGNiaUFnSUNCMGFHbHpMbDkyWlhKemFXOXVLeXM3WEc0Z0lIMWNibHh1SUNCblpYUWdkbVZ5YzJsdmJpZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmZG1WeWMybHZianRjYmlBZ2ZWeHVYRzRnSUhObGRDQjJaWEp6YVc5dUtIWmhiSFZsT2lCdWRXMWlaWElwSUh0Y2JpQWdJQ0IwYUdsekxsOTJaWEp6YVc5dUlEMGdkbUZzZFdVN1hHNGdJSDFjYmx4dUlDQnBibU55WlcxbGJuUldaWEp6YVc5dUtHNXZkR2xtZVNBOUlIUnlkV1VwT2lCMmIybGtJSHRjYmlBZ0lDQjBhR2x6TGw5MlpYSnphVzl1S3lzN1hHNGdJSDFjYmx4dUlDQm5aWFFnYkdWdVozUm9TVzVKYm5SektDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCTllYUm9MbVpzYjI5eUtDaDBhR2x6TGw5c1pXNW5kR2dnS3lBd2VERm1LU0F2SURCNE1qQXBPMXh1SUNCOVhHNWNiaUFnWjJWMElIWmxjbk5wYjI1bFpFNWhiV1VvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzWmxjbk5wYjI0Z1BUMGdkR2hwY3k1ZmRtVnljMmx2Ym1Wa1RtRnRaVlpsY25OcGIyNGdQeUIwYUdsekxsOTJaWEp6YVc5dVpXUk9ZVzFsSURvZ0p5YzdYRzRnSUgxY2JseHVJQ0J6WlhRZ2RtVnljMmx2Ym1Wa1RtRnRaU2h1WVcxbE9pQnpkSEpwYm1jcElIdGNiaUFnSUNCMGFHbHpMbDkyWlhKemFXOXVaV1JPWVcxbElEMGdibUZ0WlR0Y2JpQWdJQ0IwYUdsekxsOTJaWEp6YVc5dVpXUk9ZVzFsVm1WeWMybHZiaUE5SUhSb2FYTXVYM1psY25OcGIyNDdYRzRnSUgxY2JseHVJQ0JuWlhRZ2MyVnNaaWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lITmxkRXhsYm1kMGFDaDJZV3gxWlRvZ2JuVnRZbVZ5S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdhV1lnS0haaGJIVmxJRHdnTUNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduYzJodmRXeGtJR0psSUQ0OUlEQW5LVHRjYmx4dUlDQWdJR2xtSUNoMllXeDFaU0E5UFNCMGFHbHpMbDlzWlc1bmRHZ3BJSEpsZEhWeWJqdGNiaUFnSUNCamIyNXpkQ0J1U1c1MGMwNWxaV1JsWkNBOUlFMWhkR2d1Wm14dmIzSW9LSFpoYkhWbElDc2dNSGd4WmlrZ0x5QXdlREl3S1R0Y2JpQWdJQ0JwWmlBb0tHNUpiblJ6VG1WbFpHVmtJRDRnZEdocGN5NWZaR0YwWVM1c1pXNW5kR2dwSUh4OElDZ29ia2x1ZEhOT1pXVmtaV1FnS3lCMGFHbHpMbE5JVWtsT1MxOVVTRkpGVTBoUFRFUXBJRHdnZEdocGN5NWZaR0YwWVM1c1pXNW5kR2dwS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0J1WlhkRVlYUmhJRDBnYm1WM0lGVnBiblF6TWtGeWNtRjVLRzVKYm5SelRtVmxaR1ZrS1R0Y2JpQWdJQ0FnSUhSb2FYTXVZMjl3ZVNoMGFHbHpMbDlrWVhSaExDQnVaWGRFWVhSaExDQW9ia2x1ZEhOT1pXVmtaV1FnUGlCMGFHbHpMbDlrWVhSaExteGxibWQwYUNrZ1B5QjBhR2x6TGw5a1lYUmhMbXhsYm1kMGFDQTZJRzVKYm5SelRtVmxaR1ZrS1R0Y2JpQWdJQ0FnSUhSb2FYTXVYMlJoZEdFZ1BTQnVaWGRFWVhSaE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaDJZV3gxWlNBK0lIUm9hWE11WDJ4bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11WDJ4bGJtZDBhQ0FsSURCNE1qQWdQaUF3S1Z4dUlDQWdJQ0FnSUNCMGFHbHpMbDlrWVhSaFczUm9hWE11YkdWdVozUm9TVzVKYm5SeklDMGdNVjBnSmowZ0tERWdQRHdnS0NoMGFHbHpMbDlzWlc1bmRHZ2dKU0F3ZURJd0tTQW1JREI0TVdZcEtTQXRJREU3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYMlJoZEdFdVptbHNiQ2d3TENCMGFHbHpMbXhsYm1kMGFFbHVTVzUwY3l3Z2JrbHVkSE5PWldWa1pXUXBPMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbDlzWlc1bmRHZ2dQU0IyWVd4MVpUdGNiaUFnSUNCMGFHbHpMbDkyWlhKemFXOXVLeXM3WEc0Z0lIMWNibHh1SUNCemRHRjBhV01nWm5KdmJVRnVaQ2h6WlhReE9pQkNhWFJCY25KaGVTd2djMlYwTWpvZ1FtbDBRWEp5WVhrcE9pQkNhWFJCY25KaGVTQjdYRzRnSUNBZ2FXWWdLSE5sZERFdVgyeGxibWQwYUNBaFBTQnpaWFF5TGw5c1pXNW5kR2dwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRXhsYm1kMGFITWdaR2xtWm1WeUlDZ2tlM05sZERFdVgyeGxibWQwYUgwZ0lUMGdKSHR6WlhReUxsOXNaVzVuZEdoOUtXQXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2RHVnRjQ0E5SUc1bGR5QkNhWFJCY25KaGVTaHpaWFF4TGw5c1pXNW5kR2dwTzF4dUlDQWdJSFJsYlhBdVgyeGxibWQwYUNBOUlITmxkREV1WDJ4bGJtZDBhRHRjYmlBZ0lDQjBaVzF3TGw5a1lYUmhJRDBnUW1sMFFYSnlZWGt1WDJOeVpXRjBaVUoxWm1abGNpaDBaVzF3TGw5c1pXNW5kR2dwTzF4dUlDQWdJSFJsYlhBdVgzWmxjbk5wYjI0Z1BTQXdPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JHVnVJRDBnYzJWME1TNXNaVzVuZEdoSmJrbHVkSE03WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzWlc0N0lHa3JLeWxjYmlBZ0lDQWdJSFJsYlhBdVgyUmhkR0ZiYVYwZ1BTQnpaWFF4TGw5a1lYUmhXMmxkSUNZZ2MyVjBNaTVmWkdGMFlWdHBYVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjBaVzF3TzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nWDJOeVpXRjBaVUoxWm1abGNpaHNaVzVuZEdnNklHNTFiV0psY2lrNklGVnBiblF6TWtGeWNtRjVJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRlZwYm5Rek1rRnljbUY1S0UxaGRHZ3VabXh2YjNJb0tHeGxibWQwYUNBcklEQjRNV1lwSUM4Z01IZ3lNQ2twTzF4dUlDQjlYRzVjYmlBZ2MzUmhkR2xqSUdaeWIyMVdZV3gxWlhNb2RtRnNkV1Z6T2lCQmNuSmhlVHhpYjI5c1pXRnVQaWs2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0JqYjI1emRDQjBaVzF3SUQwZ2JtVjNJRUpwZEVGeWNtRjVLSFpoYkhWbGN5NXNaVzVuZEdncE8xeHVJQ0FnSUhSbGJYQXVYM1psY25OcGIyNGdQU0F3TzF4dVhHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMFpXMXdMbDlzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFpoYkhWbGMxdHBYU2xjYmlBZ0lDQWdJQ0FnZEdWdGNDNWZaR0YwWVZ0TllYUm9MbVpzYjI5eUtHa2dMeUF3ZURJd0tWMGdmRDBnTVNBOFBDQW9LR2tnSlNBd2VESXdLU0FtSURCNE1XWXBPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEdWdGNEdGNiaUFnZlZ4dVhHNGdJQzh2THlCRGIyNXpkSEoxWTNSeklHRWdXMEpwZEZObGRGMGdiMllnYkdWdVozUm9JRnRqYjNWdWRGMHNJSGRvWlhKbElHbGtlQzEwYUNCaWFYUWdhWE1nWkdWMFpYSnRhVzVsWkNCaWVTQmhJR05oYkd3Z2RHOGdXMlpzWVdkZElDaHBaSGdwTGx4dUlDQnpkR0YwYVdNZ1puSnZiVk5sY1NoamIzVnVkRG9nYm5WdFltVnlMQ0JtYkdGbk9pQkdkVzVqZEdsdmJpazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQmpiMjV6ZENCMFpXMXdJRDBnYm1WM0lFSnBkRUZ5Y21GNUtHTnZkVzUwS1R0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdOdmRXNTBPeUFySzJrcFhHNGdJQ0FnSUNCMFpXMXdMbk5sZEVKcGRDaHBMQ0JtYkdGbktHa3BLVHRjYmx4dUlDQWdJSFJsYlhBdVgzWmxjbk5wYjI0Z1BTQXdPMXh1SUNBZ0lISmxkSFZ5YmlCMFpXMXdPMXh1SUNCOVhHNWNiaUFnTHk4dklFTnZibk4wY25WamRITWdZU0JiUW1sMFUyVjBYU0JtY205dElHRWdjM1J5YVc1bklGdHpYU0JqYjI1MFlXbHVhVzVuSUNjd0p5QnZjaUFuTVNjdVhHNGdJSE4wWVhScFl5Qm1jbTl0VTNSeWFXNW5LSE02SUhOMGNtbHVaeWs2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0J5WlhSMWNtNGdRbWwwUVhKeVlYa3Vabkp2YlZObGNTaHpMbXhsYm1kMGFDd2dLR2s2SUc1MWJXSmxjaWtnUFQ0Z2N5NWphR0Z5UVhRb2FTa2dQVDBnSnpFbktUdGNiaUFnZlZ4dVhHNGdJQzh2THlCRGIyNXpkSEoxWTNSeklHRWdXMEpwZEZObGRGMHNJR0poYzJWa0lHOXVJR3hsYm1kMGFDQmJYMnhsYm1kMGFGMGdZVzVrSUdKNWRHVWdZWEp5WVhrZ1cxOWtZWFJoWFM1Y2JpQWdjM1JoZEdsaklHWnliMjFWYVc1ME16SkJjbkpoZVNoZmJHVnVaM1JvT2lCdWRXMWlaWElzSUY5a1lYUmhPaUJWYVc1ME16SkJjbkpoZVNrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCamIyNXpkQ0IwWlcxd0lEMGdibVYzSUVKcGRFRnljbUY1S0Y5c1pXNW5kR2dwTzF4dUlDQWdJSFJsYlhBdVgyUmhkR0VnUFNCZlpHRjBZVHRjYmlBZ0lDQnlaWFIxY200Z2RHVnRjRHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QkVaWE5sY21saGJHbDZaWE1nWVNCYlFtbDBVMlYwWFNCbWNtOXRJRnRpZVhSbGMxMHVYRzRnSUhOMFlYUnBZeUJtY205dFFubDBaWE1vWW5sMFpYTTZJRlZwYm5RNFFYSnlZWGtwT2lCQ2FYUkJjbkpoZVNCN1hHNGdJQ0FnWTI5dWMzUWdiR1Z1SUQwZ1lubDBaWE11YkdWdVozUm9PMXh1SUNBZ0lHTnZibk4wSUhSbGJYQWdQU0J1WlhjZ1FtbDBRWEp5WVhrb2JHVnVJQ29nT0NrN1hHNGdJQ0FnZEdWdGNDNWZaR0YwWVNBOUlHNWxkeUJWYVc1ME16SkJjbkpoZVNoTllYUm9MbVpzYjI5eUtDaHNaVzRnS3lBektTQXZJRFFwS1R0Y2JpQWdJQ0IwWlcxd0xsOXNaVzVuZEdnZ1BTQnNaVzRnS2lBNE8xeHVJQ0FnSUd4bGRDQnVkVzB4SUQwZ01EdGNiaUFnSUNCc1pYUWdiblZ0TWlBOUlEQTdYRzVjYmlBZ0lDQjNhR2xzWlNBb0tHeGxiaUF0SUc1MWJUSXBJRDQ5SURRcElIdGNiaUFnSUNBZ0lIUmxiWEF1WDJSaGRHRmJiblZ0TVNzclhTQTlJQ2hjYmlBZ0lDQWdJQ0FnS0NoaWVYUmxjMXR1ZFcweVhTQW1JREI0Wm1ZcElId2dLQ2hpZVhSbGMxdHVkVzB5SUNzZ01WMGdKaUF3ZUdabUtTQThQQ0E0S1NrZ2ZGeHVJQ0FnSUNBZ0lDQW9LR0o1ZEdWelcyNTFiVElnS3lBeVhTQW1JREI0Wm1ZcElEdzhJREI0TVRBcFhHNGdJQ0FnSUNBcElId2dLQ2hpZVhSbGMxdHVkVzB5SUNzZ00xMGdKaUF3ZUdabUtTQThQQ0F3ZURFNEtUdGNibHh1SUNBZ0lDQWdiblZ0TWlBclBTQTBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hzWlc0Z0xTQnVkVzB5SUQwOUlETXBYRzRnSUNBZ0lDQjBaVzF3TGw5a1lYUmhXMjUxYlRGZElEMGdLR0o1ZEdWelcyNTFiVElnS3lBeVhTQW1JREI0Wm1ZcElEdzhJREI0TVRBN1hHNWNiaUFnSUNCcFppQW9iR1Z1SUMwZ2JuVnRNaUE5UFNBeUtWeHVJQ0FnSUNBZ2RHVnRjQzVmWkdGMFlWdHVkVzB4WFNCOFBTQW9ZbmwwWlhOYmJuVnRNaUFySURGZElDWWdNSGhtWmlrZ1BEd2dPRHRjYmx4dUlDQWdJR2xtSUNoc1pXNGdMU0J1ZFcweUlEMDlJREVwWEc0Z0lDQWdJQ0IwWlcxd0xsOWtZWFJoVzI1MWJURmRJSHc5SUdKNWRHVnpXMjUxYlRKZElDWWdNSGhtWmp0Y2JseHVJQ0FnSUhSbGJYQXVYM1psY25OcGIyNGdQU0F3TzF4dUlDQWdJSEpsZEhWeWJpQjBaVzF3TzF4dUlDQjlYRzVjYmlBZ2RHOVRkSEpwYm1jb0tUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnWUNSN2RHaHBjeTVmYkdWdVozUm9mU0JpYVhSekxDQWtlM1JvYVhNdVkyOTFiblJDYVhSektIUnlkV1VwZlNCelpYUmdPMXh1SUNCOVhHNWNiaUFnTHk4dklGQmxjbVp2Y20xeklHUmxaWEFnWTI5dGNHRnlhWE52YmlCdlppQjBkMjhnWW1sMGMyVjBjeTVjYmlBZ1pYRjFZV3h6S0c5MGFHVnlPaUJDYVhSQmNuSmhlU2s2SUdKdmIyeGxZVzRnZTF4dUlDQWdJR2xtSUNoMGFHbHpJRDA5SUc5MGFHVnlLU0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdJQ0JwWmlBb2IzUm9aWElnUFQwZ2JuVnNiQ2tnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUdsbUlDaDBhR2x6TGw5c1pXNW5kR2dnSVQwZ2IzUm9aWEl1WDJ4bGJtZDBhQ2tnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUdsbUlDaDBhR2x6TGw5c1pXNW5kR2dnUFQwZ01Da2djbVYwZFhKdUlIUnlkV1U3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhSb2FYTXVYMlJoZEdFdWJHVnVaM1JvSUMwZ01Uc2dhU3NyS1Z4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11WDJSaGRHRmJhVjBnSVQwZ2IzUm9aWEl1WDJSaGRHRmJhVjBwSUhKbGRIVnliaUJtWVd4elpUdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0FvZEdocGN5NWZaR0YwWVM1c1pXNW5kR2dnTFNBeEtTQXFJRGc3SUdrZ1BDQjBhR2x6TGw5c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVaMlYwUW1sMEtHa3BJQ0U5SUc5MGFHVnlMbWRsZEVKcGRDaHBLU2xjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJEYkc5dVpYTWdZU0JpYVhSelpYUXVJQ292WEc0Z0lHTnNiMjVsS0NrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCamIyNXpkQ0JpYVhSQmNuSmhlU0E5SUc1bGR5QkNhWFJCY25KaGVTZ3dMQ0JtWVd4elpTazdYRzRnSUNBZ1ltbDBRWEp5WVhrdVgyUmhkR0VnUFNCVmFXNTBNekpCY25KaGVTNW1jbTl0S0hSb2FYTXVYMlJoZEdFcE95QXZMeUJsWm1abFkzUnBkbVVnYkdWdVozUm9PaUFvYkdWdVozUm9TVzVKYm5SektWeHVJQ0FnSUdKcGRFRnljbUY1TGw5c1pXNW5kR2dnUFNCMGFHbHpMbDlzWlc1bmRHZzdYRzRnSUNBZ1ltbDBRWEp5WVhrdVgzWmxjbk5wYjI0Z1BTQjBhR2x6TGw5MlpYSnphVzl1TzF4dUlDQWdJSEpsZEhWeWJpQmlhWFJCY25KaGVUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCSmJtbDBhV0ZzYVhwbGN5QmhJR0pwZEhObGRDNGdLaTljYmlBZ2FXNXBkQ2htYkdGbk9pQkdkVzVqZEdsdmJpd2dibTkwYVdaNU9pQmliMjlzWldGdUtUb2dRbWwwUVhKeVlYa2dlMXh1SUNBZ0lIUm9hWE11YzJWMFFXeHNLR1poYkhObExDQm1ZV3h6WlNrN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIUm9hWE11WDJ4bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnBaaUFvWm14aFp5aHBLU2xjYmlBZ0lDQWdJQ0FnZEdocGN5NWZaR0YwWVZ0TllYUm9MbVpzYjI5eUtHa2dMeUF3ZURJd0tWMGdmRDBnTVNBOFBDQW9LR2tnSlNBd2VESXdLU0FtSURCNE1XWXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11YVc1amNtVnRaVzUwVm1WeWMybHZiaWh1YjNScFpua3BPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1SUNCOVhHNWNiaUFnTHk4dklFbHVkbVZ5ZEhNZ1lTQmlhWFJ6WlhRdVhHNGdJR2x1ZG1WeWRDaHViM1JwWm5rZ1BTQjBjblZsS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IwYUdsekxsOWtZWFJoTG14bGJtZDBhRHNnYVNzcktWeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlWdHBYU0JlUFNBdE1UdGNibHh1SUNBZ0lIUm9hWE11YVc1amNtVnRaVzUwVm1WeWMybHZiaWh1YjNScFpua3BPMXh1SUNCOVhHNWNiaUFnTHk4dklGTmxkSE1nWVd4c0lHSnBkSE1nZEc4Z1czWmhiSFZsWFN3Z2IzQjBhVzl1WVd4c2VTQnpkWEJ3Y21WemMybHVaeUJ1YjNScFptbGpZWFJwYjI1ekxseHVJQ0J6WlhSQmJHd29kbUZzZFdVNklHSnZiMnhsWVc0c0lHNXZkR2xtZVNBOUlHWmhiSE5sS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdZMjl1YzNRZ1pteGhaM01nUFNCMllXeDFaU0EvSUMweElEb2dNRHRjYmlBZ0lDQmpiMjV6ZENCc1pXNGdQU0IwYUdsekxteGxibWQwYUVsdVNXNTBjenRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYkdWdU95QnBLeXNwSUM4dmRHOWtiem9nYjNCMGFXMXBlbVZjYmlBZ0lDQWdJSFJvYVhNdVgyUmhkR0ZiYVYwZ1BTQm1iR0ZuY3p0Y2JseHVJQ0FnSUhSb2FYTXVhVzVqY21WdFpXNTBWbVZ5YzJsdmJpaHViM1JwWm5rcE8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUZObGRITWdZbWwwY3lCaGRDQmJhVzVrWlhobGMxMGdjRzl6YVhScGIyNGdkRzhnVzNaaGJIVmxYUzVjYmlBZ0x5OHZJRU5zWldGeWN5QjBhR1VnWW1sMGMyVjBJR2xtSUZ0amJHVmhjbDBnWm14aFp5QnBjeUIwY25WbExseHVJQ0F2THk4Z1EyaGhibWRsSUc1dmRHbG1hV05oZEdsdmJpQnBjeUJ5WVdselpXUWdkMmhsYmlCYmJtOTBhV1o1WFNCcGN5QjBjblZsTGx4dUlDQnpaWFJKYm1SbGVHVnpLR2x1WkdWNFpYTTZJRUZ5Y21GNVBHNTFiV0psY2o0c0lIWmhiSFZsSUQwZ2RISjFaU3dnWTJ4bFlYSWdQU0IwY25WbExDQnViM1JwWm5rZ1BTQjBjblZsS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdhV1lnS0dOc1pXRnlLVnh1SUNBZ0lDQWdkR2hwY3k1elpYUkJiR3dvSVhaaGJIVmxMQ0JtWVd4elpTazdYRzVjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR2tnYjJZZ2FXNWtaWGhsY3lsY2JpQWdJQ0FnSUhSb2FYTXVjMlYwUm1GemRDaHBMQ0IyWVd4MVpTazdYRzVjYmlBZ0lDQjBhR2x6TG1sdVkzSmxiV1Z1ZEZabGNuTnBiMjRvYm05MGFXWjVLVHRjYmlBZ2ZWeHVYRzRnSUdWMlpYSjVTVzVrWlhnb2FXNWtaWGhsY3pvZ1FYSnlZWGs4Ym5WdFltVnlQaXdnZG1Gc2RXVWdQU0IwY25WbEtUb2dZbTl2YkdWaGJpQjdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQnBibVJsZUNCdlppQnBibVJsZUdWektTQjdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NW5aWFJDYVhRb2FXNWtaWGdwSUNFOUlIWmhiSFZsS1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0I5WEc1Y2JpQWdZVzU1U1c1a1pYZ29hVzVrWlhobGN6b2dRWEp5WVhrOGJuVnRZbVZ5UGl3Z2RtRnNkV1VnUFNCMGNuVmxLVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JwYm1SbGVDQnZaaUJwYm1SbGVHVnpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTVuWlhSQ2FYUW9hVzVrWlhncElEMDlJSFpoYkhWbEtWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNCOVhHNWNiaUFnYzJWMFYyaGxjbVVvWTJobFkyczZJRVoxYm1OMGFXOXVMQ0IyWVd4MVpTQTlJSFJ5ZFdVc0lHTnNaV0Z5SUQwZ2RISjFaU3dnYm05MGFXWjVJRDBnZEhKMVpTd2dZV3hzYjNkRGJHVmhjaUE5SUhSeWRXVXBPaUIyYjJsa0lIdGNiaUFnSUNCcFppQW9ZMnhsWVhJZ0ppWWdZV3hzYjNkRGJHVmhjaWxjYmlBZ0lDQWdJSFJvYVhNdWMyVjBRV3hzS0NGMllXeDFaU3dnWm1Gc2MyVXBPMXh1WEc0Z0lDQWdhV1lnS0dGc2JHOTNRMnhsWVhJcElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkR2hwY3k1ZmJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHTm9aV05yS0drcEtWeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdWMyVjBSbUZ6ZENocExDQjJZV3gxWlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZEdocGN5NWZiR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMlYwUm1GemRDaHBMQ0JqYUdWamF5aHBLU0EvSUhaaGJIVmxJRG9nSVhaaGJIVmxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG1sdVkzSmxiV1Z1ZEZabGNuTnBiMjRvYm05MGFXWjVLVHRjYmlBZ2ZWeHVYRzRnSUdkbGRGSmhibWRsS0daeWIyMDZJRzUxYldKbGNpd2dkRzg2SUc1MWJXSmxjaWs2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0IwYUdsekxtRnpjM1Z5WlVsdVVtRnVaMlVvWm5KdmJTd2dNQ3dnZEdocGN5NWZiR1Z1WjNSb0lDMGdNU3dnSjJaeWIyMG5LVHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9kRzhzSURBc0lIUm9hWE11WDJ4bGJtZDBhQ3dnSjNSdkp5azdYRzRnSUNBZ1kyOXVjM1FnWVhKeU9pQkJjbkpoZVR4aWIyOXNaV0Z1UGlBOUlGdGRPMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0JtY205dE95QnBJRHdnZEc4N0lDc3JhU2xjYmlBZ0lDQWdJR0Z5Y2k1d2RYTm9LSFJvYVhNdVoyVjBRbWwwS0drcEtUdGNiaUFnSUNCeVpYUjFjbTRnUW1sMFFYSnlZWGt1Wm5KdmJWWmhiSFZsY3loaGNuSXBPMXh1SUNCOVhHNWNiaUFnWjJWMFVtRnVaMlZCYzB4cGMzUW9abkp2YlRvZ2JuVnRZbVZ5TENCMGJ6b2diblZ0WW1WeUtUb2dZbTl2YkdWaGJsdGRJSHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9abkp2YlN3Z01Dd2dkR2hwY3k1ZmJHVnVaM1JvSUMwZ01Td2dKMlp5YjIwbktUdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb2RHOHNJREFzSUhSb2FYTXVYMnhsYm1kMGFDd2dKM1J2SnlrN1hHNGdJQ0FnWTI5dWMzUWdZWEp5T2lCaWIyOXNaV0Z1VzEwZ1BTQmJYVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnWm5KdmJUc2dhU0E4SUhSdk95QXJLMmtwWEc0Z0lDQWdJQ0JoY25JdWNIVnphQ2gwYUdsekxtZGxkRUpwZENocEtTazdYRzRnSUNBZ2NtVjBkWEp1SUdGeWNqdGNiaUFnZlZ4dVhHNWNiaUFnYzJWMFVtRnVaMlVvWm5KdmJUb2diblZ0WW1WeUxDQjBiem9nYm5WdFltVnlMQ0IyWVd4MVpUb2dZbTl2YkdWaGJpd2dibTkwYVdaNUlEMGdkSEoxWlNrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb1puSnZiU3dnTUN3Z2RHaHBjeTVmYkdWdVozUm9JQzBnTVN3Z0oyWnliMjBuS1R0Y2JpQWdJQ0IwYUdsekxtRnpjM1Z5WlVsdVVtRnVaMlVvZEc4c0lEQXNJSFJvYVhNdVgyeGxibWQwYUNBdElERXNJQ2QwYnljcE8xeHVYRzRnSUNBZ1kyOXVjM1FnYzNSaGNuUWdQU0JOWVhSb0xtMXBiaWhtY205dExDQjBieWs3WEc0Z0lDQWdZMjl1YzNRZ1pXNWtJRDBnVFdGMGFDNXRZWGdvWm5KdmJTd2dkRzhwTzF4dVhHNGdJQ0FnTHk5MGIyUnZPaUJ2Y0hScGJXbDZaVnh1SUNBZ0lHbG1JQ2gyWVd4MVpTa2dlMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SUhOMFlYSjBPeUJwSUR3OUlHVnVaRHNnYVNzcktWeHVJQ0FnSUNBZ0lDQjBhR2x6TG5ObGRGUnlkV1VvYVNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCemRHRnlkRHNnYVNBOFBTQmxibVE3SUdrckt5bGNiaUFnSUNBZ0lDQWdkR2hwY3k1elpYUkdZV3h6WlNocEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbWx1WTNKbGJXVnVkRlpsY25OcGIyNG9ibTkwYVdaNUtUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJQzh2THlCVFpYUnpJRzRnY21GdVpHOXRiSGtnWTJodmMyVnVJR0pwZEhNZ2RHOGdkbUZzZFdVc0lISmxiV0ZwYm1sdVp5QmlhWFJ6SUhSdklDRjJZV3gxWlM1Y2JpQWdjMlYwVW1GdVpHOXRLRzQ2SUc1MWJXSmxjaXdnZG1Gc2RXVTZJR0p2YjJ4bFlXNHNJRzV2ZEdsbWVTQTlJSFJ5ZFdVcE9pQjJiMmxrSUh0Y2JpQWdJQ0JwWmlBb2JpQThJREFnZkh3Z2JpQStJSFJvYVhNdVgyeGxibWQwYUNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduYmlCdGRYTjBJR0psSUQ0OUlEQWdKaVlnUEQwZ1EyOTFiblFuS1R0Y2JseHVJQ0FnSUdsbUlDaHVJRDRnZEdocGN5NWZiR1Z1WjNSb0lDOGdNaWxjYmlBZ0lDQWdJSFJvYVhNdWMyVjBVbUZ1Wkc5dEtIUm9hWE11WDJ4bGJtZDBhQ0F0SUc0c0lDRjJZV3gxWlNrN1hHNWNiaUFnSUNCMGFHbHpMbk5sZEVGc2JDZ2hkbUZzZFdVcE8xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2F5QTlJREE3SUdzZ1BDQnVPeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdhU0E5SUUxaGRHZ3VabXh2YjNJb1RXRjBhQzV5WVc1a2IyMG9LU0FxSUhSb2FYTXVYMnhsYm1kMGFDazdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NW5aWFJDYVhRb2FTa2dQVDBnZG1Gc2RXVXBJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdkR2hwY3k1elpYUkdZWE4wS0drc0lIWmhiSFZsS1R0Y2JpQWdJQ0FnSUdzckt6dGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbWx1WTNKbGJXVnVkRlpsY25OcGIyNG9ibTkwYVdaNUtUdGNiaUFnZlZ4dVhHNGdJQzh2THlCTmIyUnBabWxsY3lCamRYSnlaVzUwSUdKcGRITmxkQ0JpZVNCd1pYSm1iM0p0YVc1bklIUm9aU0JpYVhSM2FYTmxJRUZPUkNCdmNHVnlZWFJwYjI0Z1lXZGhhVzV6ZENCMGFHVmNiaUFnTHk4dklHTnZjbkpsYzNCdmJtUnBibWNnWld4bGJXVnVkSE1nYVc0Z2RHaGxJSE53WldOcFptbGxaQ0JpYVhSelpYUXVYRzRnSUdGdVpDaDJZV3gxWlRvZ1FtbDBRWEp5WVhrc0lHNXZkR2xtZVNBOUlIUnlkV1VwT2lCQ2FYUkJjbkpoZVNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WDJ4bGJtZDBhQ0FoUFNCMllXeDFaUzVmYkdWdVozUm9LVnh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZEJjbkpoZVNCc1pXNW5kR2h6SUdScFptWmxjaTRuS1R0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdMQ0JzWlc0Z1BTQjBhR2x6TG14bGJtZDBhRWx1U1c1MGN6c2dhU0E4SUd4bGJqc2dhU3NyS1Z4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVZ0cFhTQW1QU0IyWVd4MVpTNWZaR0YwWVZ0cFhUdGNibHh1SUNBZ0lIUm9hWE11YVc1amNtVnRaVzUwVm1WeWMybHZiaWh1YjNScFpua3BPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1SUNCOVhHNWNiaUFnTHk4dklGQmxjbVp2Y20xeklIUm9aU0JpYVhSM2FYTmxJRUZPUkNCT1QxUWdiM0JsY21GMGFXOXVJRzl1SUhSb1pTQmxiR1Z0Wlc1MGN5QnBiaUIwYUdVZ1kzVnljbVZ1ZENCaWFYUnpaWFJjYmlBZ0x5OHZJR0ZuWVdsdWMzUWdkR2hsSUdOdmNuSmxjM0J2Ym1ScGJtY2daV3hsYldWdWRITWdhVzRnZEdobElITndaV05wWm1sbFpDQmlhWFJ6WlhRdVhHNGdJR0Z1WkU1dmRDaDJZV3gxWlRvZ1FtbDBRWEp5WVhrc0lHNXZkR2xtZVNBOUlIUnlkV1VwT2lCQ2FYUkJjbkpoZVNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WDJ4bGJtZDBhQ0FoUFNCMllXeDFaUzVmYkdWdVozUm9LVnh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZEJjbkpoZVNCc1pXNW5kR2h6SUdScFptWmxjaTRuS1R0Y2JseHVJQ0FnSUdOdmJuTjBJR3hsYmlBOUlIUm9hWE11YkdWdVozUm9TVzVKYm5Sek8xeHVJQ0FnSUdadmNpQW9iR1YwSUc1MWJUSWdQU0F3T3lCdWRXMHlJRHdnYkdWdU95QnVkVzB5S3lzcFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcyNTFiVEpkSUNZOUlINTJZV3gxWlM1ZlpHRjBZVnR1ZFcweVhUdGNibHh1SUNBZ0lIUm9hWE11YVc1amNtVnRaVzUwVm1WeWMybHZiaWh1YjNScFpua3BPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1SUNCOVhHNWNiaUFnTHk4dklGQmxjbVp2Y20xeklIUm9aU0JpYVhSM2FYTmxJRTVQVkNCQlRrUWdiM0JsY21GMGFXOXVJRzl1SUhSb1pTQmxiR1Z0Wlc1MGN5QnBiaUIwYUdVZ1kzVnljbVZ1ZENCaWFYUnpaWFJjYmlBZ0x5OHZJR0ZuWVdsdWMzUWdkR2hsSUdOdmNuSmxjM0J2Ym1ScGJtY2daV3hsYldWdWRITWdhVzRnZEdobElITndaV05wWm1sbFpDQmlhWFJ6WlhRdVhHNGdJRzV2ZEVGdVpDaDJZV3gxWlRvZ1FtbDBRWEp5WVhrc0lHNXZkR2xtZVNBOUlIUnlkV1VwT2lCQ2FYUkJjbkpoZVNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WDJ4bGJtZDBhQ0FoUFNCMllXeDFaUzVmYkdWdVozUm9LVnh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZEJjbkpoZVNCc1pXNW5kR2h6SUdScFptWmxjaTRuS1R0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdMQ0JzWlc0Z1BTQjBhR2x6TG14bGJtZDBhRWx1U1c1MGN6c2dhU0E4SUd4bGJqc2dhU3NyS1Z4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVZ0cFhTQTlJQ2grZEdocGN5NWZaR0YwWVZ0cFhTa2dKaUIyWVd4MVpTNWZaR0YwWVZ0cFhUdGNibHh1SUNBZ0lIUm9hWE11YVc1amNtVnRaVzUwVm1WeWMybHZiaWh1YjNScFpua3BPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpPMXh1SUNCOVhHNWNiaUFnTHk4dklFbHVkbVZ5ZEhNZ1lXeHNJR0pwZENCMllXeDFaWE1nYVc0Z2RHaGxJR04xY25KbGJuUWdZbWwwYzJWMFhHNGdJRzV2ZENodWIzUnBabmtnUFNCMGNuVmxLVG9nUW1sMFFYSnlZWGtnZTF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNaVzRnUFNCMGFHbHpMbXhsYm1kMGFFbHVTVzUwY3pzZ2FTQThJR3hsYmpzZ2FTc3JLVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnRwWFNBOUlINTBhR2x6TGw5a1lYUmhXMmxkTzF4dVhHNGdJQ0FnZEdocGN5NXBibU55WlcxbGJuUldaWEp6YVc5dUtHNXZkR2xtZVNrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJSDFjYmx4dUlDQXZMeThnVUdWeVptOXliWE1nZEdobElHSnBkSGRwYzJVZ1QxSWdiM0JsY21GMGFXOXVJRzl1SUhSb1pTQmxiR1Z0Wlc1MGN5QnBiaUIwYUdVZ1kzVnljbVZ1ZENCaWFYUnpaWFJjYmlBZ0x5OHZJR0ZuWVdsdWMzUWdkR2hsSUdOdmNuSmxjM0J2Ym1ScGJtY2daV3hsYldWdWRITWdhVzRnZEdobElITndaV05wWm1sbFpDQmlhWFJ6WlhRdVhHNGdJRzl5S0haaGJIVmxPaUJDYVhSQmNuSmhlU3dnYm05MGFXWjVJRDBnZEhKMVpTa2dlMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOXNaVzVuZEdnZ0lUMGdkbUZzZFdVdVgyeGxibWQwYUNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduUVhKeVlYa2diR1Z1WjNSb2N5QmthV1ptWlhJdUp5azdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTUN3Z2JHVnVJRDBnZEdocGN5NXNaVzVuZEdoSmJrbHVkSE03SUdrZ1BDQnNaVzQ3SUdrckt5bGNiaUFnSUNBZ0lIUm9hWE11WDJSaGRHRmJhVjBnZkQwZ2RtRnNkV1V1WDJSaGRHRmJhVjA3WEc1Y2JpQWdJQ0IwYUdsekxtbHVZM0psYldWdWRGWmxjbk5wYjI0b2JtOTBhV1o1S1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJRWlhKbWIzSnRjeUIwYUdVZ1ltbDBkMmx6WlNCbGVHTnNkWE5wZG1VZ1QxSWdiM0JsY21GMGFXOXVJRzl1SUhSb1pTQmxiR1Z0Wlc1MGN5QnBiaUIwYUdVZ1kzVnljbVZ1ZENCaWFYUnpaWFJjYmlBZ0x5OHZJR0ZuWVdsdWMzUWdkR2hsSUdOdmNuSmxjM0J2Ym1ScGJtY2daV3hsYldWdWRITWdhVzRnZEdobElITndaV05wWm1sbFpDQmlhWFJ6WlhRdVhHNGdJSGh2Y2loMllXeDFaVG9nUW1sMFFYSnlZWGtzSUc1dmRHbG1lU0E5SUhSeWRXVXBJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZiR1Z1WjNSb0lDRTlJSFpoYkhWbExsOXNaVzVuZEdncFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjBGeWNtRjVJR3hsYm1kMGFITWdaR2xtWm1WeUxpY3BPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBc0lHeGxiaUE5SUhSb2FYTXViR1Z1WjNSb1NXNUpiblJ6T3lCcElEd2diR1Z1T3lCcEt5c3BYRzRnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXMmxkSUY0OUlIWmhiSFZsTGw5a1lYUmhXMmxkTzF4dVhHNGdJQ0FnZEdocGN5NXBibU55WlcxbGJuUldaWEp6YVc5dUtHNXZkR2xtZVNrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJSDFjYmx4dUlDQXZMeThnU1c1elpYSjBjeUJ1SURBdFltbDBjeUJoZENCd2IzTnBkR2x2YmlCd2IzTXNJSEpsYzJsNmFXNW5JSE5sYkdZZ1lXNWtJSE5vYVdaMGFXNW5JR0pwZEhNZ1lYQndjbTl3Y21saGRHVnNlUzVjYmlBZ2FXNXpaWEowUVhRb2NHOXpPaUJ1ZFcxaVpYSXNJRzQ2SUc1MWJXSmxjaXdnWm14aFp5QTlJR1poYkhObEtUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWhjM04xY21WSmJsSmhibWRsS0hCdmN5d2dNQ3dnZEdocGN5NWZiR1Z1WjNSb0xDQW5jRzl6SnlrN1hHNWNiaUFnSUNCcFppQW9iaUE5UFNBd0tTQnlaWFIxY200N1hHNWNiaUFnSUNBdkwxUlBSRTg2SUc5d2RHbHRhWHBsWEc0Z0lDQWdMeTkwYUdVZ2JXOXpkQ0J3Y21sdGFYUnBkbVVnYVcxd2JHVnRaVzUwWVhScGIyNHNJRzl3ZEdsdGFYcGxJR2wwSUd4aGRHVnlJVnh1WEc0Z0lDQWdMeThnWW1WbmFXNVZjR1JoZEdVb0tUdGNiaUFnSUNCamIyNXpkQ0J2YkdSc1pXNW5kR2dnUFNCMGFHbHpMbDlzWlc1bmRHZzdYRzRnSUNBZ2RHaHBjeTV6WlhSTVpXNW5kR2dvZEdocGN5NWZiR1Z1WjNSb0lDc2diaWs3WEc1Y2JpQWdJQ0F2TDJsbUlDZ2hZMjl1ZEdGcGJuTW9JV1pzWVdjcEtTQnlaWFIxY200N0lDOHZJRzV2ZEdocGJtY2dkRzhnWkc5Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQnZiR1JzWlc1bmRHZ2dMU0F4T3lCcElENDlJSEJ2Y3pzZ2FTMHRLVnh1SUNBZ0lDQWdkR2hwY3k1elpYUkNhWFFvYVNBcklHNHNJSFJvYVhNdVoyVjBRbWwwS0drcEtUdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0J3YjNNN0lHa2dQQ0J3YjNNZ0t5QnVPeUJwS3lzcFhHNGdJQ0FnSUNCMGFHbHpMbk5sZEVKcGRDaHBMQ0JtYkdGbktUdGNibHh1SUNBZ0lDOHZJR1Z1WkZWd1pHRjBaU2dwTzF4dUlDQjlYRzVjYmlBZ0x5OHZJRVJsYkdWMFpYTWdiaUJpYVhSeklHSmxaMmx1Ym1sdVp5QmhkQ0J3YjNOcGRHbHZiaUJ3YjNNc0lISmxjMmw2YVc1bklITmxiR1lnWVc1a0lITm9hV1owYVc1bklISmxiV0ZwYm1sdVoxeHVJQ0F2THk4Z1ltbDBjeUJoY0hCeWIzQnlhV0YwWld4NUxseHVJQ0J5WlcxdmRtVkJkQ2h3YjNNNklHNTFiV0psY2l3Z2JpQTlJREVwT2lCMmIybGtJSHRjYmlBZ0lDQXZMeUIwYUdVZ2JXOXpkQ0J3Y21sdGFYUnBkbVVnYVcxd2JHVnRaVzUwWVhScGIyNHNJRzl3ZEdsdGFYcGxJR2wwSUd4aGRHVnlJVnh1SUNBZ0lHbG1JQ2h1SUR3Z01DbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnbmJpQmpZVzV1YjNRZ1ltVWdibVZuWVhScGRtVW5LVHRjYmx4dUlDQWdJSFJvYVhNdVlYTnpkWEpsU1c1U1lXNW5aU2h3YjNNc0lEQXNJSFJvYVhNdVgyeGxibWQwYUNBdElHNHNJQ2R3YjNNbktUdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZiblJoYVc1ektIUnlkV1VwS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdjRzl6T3lCcElEd2dkR2hwY3k1ZmJHVnVaM1JvSUMwZ2Jqc2dhU3NyS1Z4dUlDQWdJQ0FnSUNCMGFHbHpMbk5sZEVKcGRDaHBMQ0IwYUdsekxtZGxkRUpwZENocElDc2diaWtwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWMyVjBUR1Z1WjNSb0tIUm9hWE11WDJ4bGJtZDBhQ0F0SUc0cE8xeHVJQ0I5WEc1Y2JpQWdjbVZ0YjNabFFubE5ZWE5yS0cxaGMyczZJRUpwZEVGeWNtRjVMQ0JtYkdGbklEMGdkSEoxWlNrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCcFppQW9kR2hwY3k1ZmJHVnVaM1JvSUNFOUlHMWhjMnN1YkdWdVozUm9LVnh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZHNaVzVuZEdnZ0lUMGdiV0Z6YXk1c1pXNW5kR2duS1R0Y2JseHVJQ0FnSUdsbUlDaHRZWE5ySUQwOUlIUm9hWE1wSUhzZ0x5OGdibThnYm1WbFpDQjBieUJwZEdWeVlYUmxYRzRnSUNBZ0lDQjBhR2x6TG5ObGRFeGxibWQwYUNodFlYTnJMbU52ZFc1MFFtbDBjeWdoWm14aFp5a3BPMXh1SUNBZ0lDQWdkR2hwY3k1elpYUkJiR3dvSVdac1lXY3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCc1pYUWdaSE4wU1dSNElEMGdNRHRjYmx4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYzNKalNXUjRJRDBnTFRFN0lDaHpjbU5KWkhnZ1BTQnRZWE5yTG1acGJtUk9aWGgwS0hOeVkwbGtlQ3dnSVdac1lXY3BLU0FoUFNBdE1Uc3BYRzRnSUNBZ0lDQWdJSFJvYVhNdWMyVjBSbUZ6ZENoa2MzUkpaSGdyS3l3Z2RHaHBjeTVuWlhSQ2FYUW9jM0pqU1dSNEtTazdYRzVjYmlBZ0lDQWdJSFJvYVhNdVgyeGxibWQwYUNBOUlHUnpkRWxrZUR0Y2JpQWdJQ0FnSUhSb2FYTXVYM1psY25OcGIyNHJLenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUM4dkx5QlRhVzFwYkdGeUlIUnZJSFJvWlNCYlhTQnZjR1Z5WVhSdmNpNWNiaUFnWjJWMFFtbDBLSEJ2Y3pvZ2JuVnRZbVZ5S1RvZ1ltOXZiR1ZoYmlCN1hHNGdJQ0FnY21WMGRYSnVJQ2gwYUdsekxsOWtZWFJoVzAxaGRHZ3VabXh2YjNJb2NHOXpJQzhnTUhneU1DbGRJQ1lnS0RFZ1BEd2dLSEJ2Y3lBbUlEQjRNV1lwS1NrZ0lUMGdNRHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QlRhVzFwYkdGeUlIUnZJSFJvWlNCYlhTQnZjR1Z5WVhSdmNpNWNiaUFnYzJWMFFtbDBLSEJ2Y3pvZ2JuVnRZbVZ5TENCaWFYUTZJR0p2YjJ4bFlXNHNJRzV2ZEdsbWVTQTlJSFJ5ZFdVcElIdGNiaUFnSUNCMGFHbHpMbk5sZEVaaGMzUW9jRzl6TENCaWFYUXBPMXh1SUNBZ0lHbG1JQ2h1YjNScFpua3BYRzRnSUNBZ0lDQjBhR2x6TGw5MlpYSnphVzl1S3lzN1hHNGdJQ0FnWld4elpWeHVJQ0FnSUNBZ2RHaHBjeTVmZG1WeWMybHZiaXNyTzF4dUlDQjlYRzVjYmlBZ0x5OHZJRk5sZEhNZ1cybGRMWFJvSUdKcGRDQjBieUJiZG1Gc2RXVmRMQ0JrYjJWeklHNXZkQ0JqYUdWamF5QmliM1Z1WkhNc0lHUnZaWE1nYm05MElHbHVZM0psYldWdWRDQjJaWEp6YVc5dVhHNGdJSE5sZEVaaGMzUW9hVG9nYm5WdFltVnlMQ0IyWVd4MVpUb2dZbTl2YkdWaGJpazZJSFp2YVdRZ2UxeHVJQ0FnSUdsbUlDaDJZV3gxWlNsY2JpQWdJQ0FnSUhSb2FYTXVYMlJoZEdGYlRXRjBhQzVtYkc5dmNpaHBJQzhnTUhneU1DbGRJSHc5SURFZ1BEd2dLR2tnSmlBd2VERm1LVHRjYmlBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0IwYUdsekxsOWtZWFJoVzAxaGRHZ3VabXh2YjNJb2FTQXZJREI0TWpBcFhTQW1QU0IrS0RFZ1BEd2dLR2tnSmlBd2VERm1LU2s3WEc0Z0lIMWNibHh1SUNCelpYUlVjblZsS0hCdmN6b2diblZ0WW1WeUtUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZaR0YwWVZ0TllYUm9MbVpzYjI5eUtIQnZjeUF2SURCNE1qQXBYU0I4UFNBeElEdzhJQ2h3YjNNZ0ppQXdlREZtS1R0Y2JpQWdmVnh1WEc0Z0lITmxkRVpoYkhObEtIQnZjem9nYm5WdFltVnlLU0I3WEc0Z0lDQWdkR2hwY3k1ZlpHRjBZVnROWVhSb0xtWnNiMjl5S0hCdmN5QXZJREI0TWpBcFhTQW1QU0IrS0RFZ1BEd2dLSEJ2Y3lBbUlEQjRNV1lwS1R0Y2JpQWdmVnh1WEc0Z0lIUnlkV1ZEYjNWdWRDZ3BPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbU52ZFc1MFFtbDBjeWgwY25WbEtUdGNiaUFnZlZ4dVhHNGdJR1poYkhObFEyOTFiblFvS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1amIzVnVkRUpwZEhNb1ptRnNjMlVwTzF4dUlDQjlYRzVjYmlBZ0x5OHZJRU52ZFc1MGN5QmlhWFJ6SUc5bUlIUm9aU0J6Y0dWamFXWnBaV1FnZG1Gc2RXVXVYRzRnSUdOdmRXNTBRbWwwY3loMllXeDFaVG9nWW05dmJHVmhiaWs2SUc1MWJXSmxjaUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMnhsYm1kMGFDQTlQU0F3S1NCeVpYUjFjbTRnTUR0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TGw5elpXeGxZM1JsWkVOdmRXNTBWbVZ5YzJsdmJpQWhQU0IwYUdsekxsOTJaWEp6YVc5dUtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5elpXeGxZM1JsWkVOdmRXNTBJRDBnTUR0Y2JpQWdJQ0FnSUdOdmJuTjBJR3hsYmlBOUlIUm9hWE11YkdWdVozUm9TVzVKYm5Sek8xeHVJQ0FnSUNBZ2JHVjBJR2tnUFNBd08xeHVJQ0FnSUNBZ1ptOXlJQ2c3SUdrZ1BDQnNaVzRnTFNBeE95QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2F5QTlJSFJvYVhNdVgyUmhkR0ZiYVYwN0lHc2dJVDBnTURzZ2F5QStQajQ5SURncElIc2dMeTkwYjJSdk9pQmpZWE4wSUdSaGRHRmJhVjBnZEc4Z2RXbHVkRnh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVYM05sYkdWamRHVmtRMjkxYm5RZ0t6MGdRbWwwUVhKeVlYa3VYMjl1UW1sMFEyOTFiblJiYXlBbUlEQjRabVpkTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lDOHZJRlJvWlNCc1lYTjBJR2x1ZEM1Y2JpQWdJQ0FnSUd4bGRDQnJJRDBnZEdocGN5NWZaR0YwWVZ0cFhUdGNiaUFnSUNBZ0lHTnZibk4wSUhKbGJXRnBibWx1WjBKcGRITWdQU0IwYUdsekxsOXNaVzVuZEdnZ0ppQXdlREZtTzF4dUlDQWdJQ0FnYVdZZ0tISmxiV0ZwYm1sdVowSnBkSE1nSVQwZ01Da2dMeW9nYVdZZ2NtVnRZV2x1YVc1blFtbDBjeUE5UFNBd0xDQjBhR1VnYkdGemRDQnBiblFnYVhNZ1puVnNiSGtnZFhObFpDQmhibVFnUVV4TUlHSnBkSE1nYzJodmRXeGtJR0psSUd4bFpuUWdZWE1nYVhNZ0tpOWNiaUFnSUNBZ0lDQWdheUFtUFNCK0tDZzBNamswT1RZM01qazFLU0E4UENCeVpXMWhhVzVwYm1kQ2FYUnpLVHRjYmx4dUlDQWdJQ0FnWm05eUlDZzdJR3NnSVQwZ01Ec2dheUErUGo0OUlEZ3BYRzRnSUNBZ0lDQWdJSFJvYVhNdVgzTmxiR1ZqZEdWa1EyOTFiblFnS3owZ1FtbDBRWEp5WVhrdVgyOXVRbWwwUTI5MWJuUmJheUFtSURCNFptWmRPMXh1WEc0Z0lDQWdJQ0IwYUdsekxsOXpaV3hsWTNSbFpFTnZkVzUwVm1WeWMybHZiaUE5SUhSb2FYTXVYM1psY25OcGIyNDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUNoMllXeDFaU0EvSUhSb2FYTXVYM05sYkdWamRHVmtRMjkxYm5RZ09pQjBhR2x6TGw5c1pXNW5kR2dnTFNCMGFHbHpMbDl6Wld4bFkzUmxaRU52ZFc1MEtUdGNiaUFnZlZ4dVhHNGdJQzh2THlCU1pYUjFjbTV6SUdFZ2JuVnRZbVZ5SUc5bUlITmxkQ0JpYVhSeklIZG9aWEpsSUdGc2MyOGdXMk5vWldOclhTQnBjeUIwY25WbFhHNGdJR052ZFc1MFYyaGxjbVVvWTJobFkyczZJRVoxYm1OMGFXOXVLVG9nYm5WdFltVnlJSHRjYmlBZ0lDQnNaWFFnY21WemRXeDBJRDBnTUR0Y2JpQWdJQ0JwWmlBb2RHaHBjeTUwY25WbFEyOTFiblFvS1NBOVBTQjBhR2x6TGw5c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RHaHBjeTVmYkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNBZ0lISmxjM1ZzZENBclBTQmphR1ZqYXlocEtTQS9JREVnT2lBd08xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ0xURTdJQ2hwSUQwZ2RHaHBjeTVtYVc1a1RtVjRkQ2hwTENCMGNuVmxLU2tnSVQwZ0xURTdLVnh1SUNBZ0lDQWdJQ0J5WlhOMWJIUWdLejBnWTJobFkyc29hU2tnUHlBeElEb2dNRHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhKbGMzVnNkRHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QlFaWEptYjNKdGN5QmlhWFFnWENKaGJtUmNJaUJoYm1RZ1kyOTFiblJ6SUdKcGRITWdiMllnZEdobElITndaV05wWm1sbFpDQjJZV3gxWlN3Z2QybDBhRzkxZENCaWFYUnpaWFFnYlc5a2FXWnBZMkYwYVc5dUxseHVJQ0JoYm1SWGFYUm9RMjkxYm5SQ2FYUnpLSE5sWTI5dVpEb2dRbWwwUVhKeVlYa3NJSFpoYkhWbE9pQmliMjlzWldGdUtUb2diblZ0WW1WeUlIdGNiaUFnSUNCcFppQW9kR2hwY3k1ZmJHVnVaM1JvSUQwOUlEQXBJSEpsZEhWeWJpQXdPMXh1WEc0Z0lDQWdiR1YwSUdOdmRXNTBJRDBnTUR0Y2JpQWdJQ0JqYjI1emRDQnNaVzRnUFNCMGFHbHpMbXhsYm1kMGFFbHVTVzUwY3p0Y2JpQWdJQ0JzWlhRZ2FTQTlJREE3WEc0Z0lDQWdabTl5SUNnN0lHa2dQQ0JzWlc0Z0xTQXhPeUJwS3lzcElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHc2dQU0IwYUdsekxsOWtZWFJoVzJsZElDWWdjMlZqYjI1a0xsOWtZWFJoVzJsZE95QnJJQ0U5SURBN0lHc2dQajQrUFNBNEtWeHVJQ0FnSUNBZ0lDQmpiM1Z1ZENBclBTQkNhWFJCY25KaGVTNWZiMjVDYVhSRGIzVnVkRnRySUNZZ01IaG1abDA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnVkdobElHeGhjM1FnYVc1MExseHVJQ0FnSUd4bGRDQnJJRDBnZEdocGN5NWZaR0YwWVZ0cFhTQW1JSE5sWTI5dVpDNWZaR0YwWVZ0cFhUdGNiaUFnSUNCamIyNXpkQ0J5WlcxaGFXNXBibWRDYVhSeklEMGdkR2hwY3k1ZmJHVnVaM1JvSUNZZ01IZ3haanRjYmlBZ0lDQnBaaUFvY21WdFlXbHVhVzVuUW1sMGN5QWhQU0F3S1Z4dUlDQWdJQ0FnYXlBbVBTQitLQ2cwTWprME9UWTNNamsxS1NBOFBDQnlaVzFoYVc1cGJtZENhWFJ6S1R0Y2JpQWdJQ0JtYjNJZ0tEc2dheUFoUFNBd095QnJJRDQrUGowZ09DbGNiaUFnSUNBZ0lHTnZkVzUwSUNzOUlFSnBkRUZ5Y21GNUxsOXZia0pwZEVOdmRXNTBXMnNnSmlBd2VHWm1YVHRjYmx4dUlDQWdJSEpsZEhWeWJpQW9kbUZzZFdVZ1B5QmpiM1Z1ZENBNklIUm9hWE11WDJ4bGJtZDBhQ0F0SUdOdmRXNTBLVHRjYmlBZ2ZWeHVYRzRnSUdOc1pXRnlLQ2s2SUhadmFXUWdlMXh1SUNBZ0lIUm9hWE11YzJWMFRHVnVaM1JvS0RBcE8xeHVJQ0I5WEc1Y2JpQWdZMjl1ZEdGcGJuTW9kbUZzZFdVNklHSnZiMnhsWVc0cE9pQmliMjlzWldGdUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NW1hVzVrVG1WNGRDZ3RNU3dnZG1Gc2RXVXBJRDQ5SURBN1hHNGdJSDFjYmx4dUlDQm5aWFFnWVd4c1ZISjFaU2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1amIzVnVkRUpwZEhNb2RISjFaU2tnUFQwZ2RHaHBjeTVmYkdWdVozUm9PMXh1SUNCOVhHNWNiaUFnWjJWMElHRnNiRVpoYkhObEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbU52ZFc1MFFtbDBjeWhtWVd4elpTa2dQVDBnZEdocGN5NWZiR1Z1WjNSb08xeHVJQ0I5WEc1Y2JpQWdaMlYwSUdGdWVWUnlkV1VvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOTFiblJDYVhSektIUnlkV1VwSUQ0Z01EdGNiaUFnZlZ4dVhHNGdJR2RsZENCaGJubEdZV3h6WlNncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiM1Z1ZEVKcGRITW9abUZzYzJVcElENGdNRHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QlNaWFIxY201eklIUm9aU0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdibVY0ZENCaWFYUWdiMllnZEdobElITndaV05wWm1sbFpDQjJZV3gxWlN3Z2MzUmhjblJwYm1jZ1puSnZiU0IwYUdVZ2MzQmxZMmxtYVdWa0lIQnZjMmwwYVc5dUxseHVJQ0F2THk4Z1VtVjBkWEp1Y3lBdE1Td2dhV1lnZEdobGNtVWdZWEpsSUc1dklITjFZMmdnWW1sMGN5NWNiaUFnWm1sdVpFNWxlSFFvYVc1a1pYZzZJRzUxYldKbGNpd2dkbUZzZFdVZ1BTQjBjblZsS1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0IwYUdsekxtRnpjM1Z5WlVsdVVtRnVaMlVvYVc1a1pYZ3NJQzB4TENCMGFHbHpMbDlzWlc1bmRHZ3NJQ2RwYm1SbGVDY3BPMXh1WEc0Z0lDQWdhV1lnS0dsdVpHVjRJRDQ5SUhSb2FYTXVYMnhsYm1kMGFDQXRJREVwSUhKbGRIVnliaUF0TVR0Y2JpQWdJQ0JwYm1SbGVDQTlJR2x1WkdWNElEd2dNQ0EvSURBZ09pQnBibVJsZUNBcklERTdJQzh2SUhOcmFYQWdjM1JoY25SY2JpQWdJQ0JzWlhRZ2RXNTFjMlZrUW1sMGN5QTlJR2x1WkdWNElDWWdNSGd4Wmp0Y2JpQWdJQ0JqYjI1emRDQnVkVzFKYm5SeklEMGdkR2hwY3k1c1pXNW5kR2hKYmtsdWRITTdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnVFdGMGFDNW1iRzl2Y2locGJtUmxlQ0F2SURNeUtUc2dhU0E4SUc1MWJVbHVkSE03SUdrckt5a2dlMXh1SUNBZ0lDQWdiR1YwSUdzZ1BTQW9kbUZzZFdVZ1B5QjBhR2x6TGw5a1lYUmhXMmxkSURvZ2ZuUm9hWE11WDJSaGRHRmJhVjBwT3lBdkx5QjFhVzUwSUdOaGMzUmNiaUFnSUNBZ0lHbG1JQ2gxYm5WelpXUkNhWFJ6SUNFOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnYXlBbVBTQW9LREI0Wm1abVptWm1abVlnUER3Z2RXNTFjMlZrUW1sMGN5a2dKaUF3ZUdabVptWm1abVptS1R0Y2JpQWdJQ0FnSUNBZ2RXNTFjMlZrUW1sMGN5QTlJREE3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0NGMllXeDFaU0FtSmlCcklEMDlJQzAwTWprME9UWTNNamsyS1NBdktpQnNiMjlyYVc1bklHWnZjaUJtWVd4elpTd2dZV3hzSUdKcGRITWdZWEpsSUhObGRDQXFMM3RjYmlBZ0lDQWdJQ0FnWTI5dWRHbHVkV1U3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJySUNFOUlEQTdJR29nS3owZ09Dd2dheUErUGo0OUlEZ3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjQ0E5SUVKcGRFRnljbUY1TGw5bWFYSnpkRTl1UW1sMFcyc2dKaUF3ZUdabVhUdGNiaUFnSUNBZ0lDQWdhV1lnS0hBZ1BqMGdNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHbHVaR1Y0SUQwZ2NDQXJJQ2hwSUNvZ016SXBJQ3NnYWp0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvYVc1a1pYZ2dQajBnZEdocGN5NWZiR1Z1WjNSb0tTQnlaWFIxY200Z0xURTdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR2x1WkdWNE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUF0TVR0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJHYVc1a2N5QndjbVYyYVc5MWN5QmlhWFFnYjJZZ2RHaGxJSE53WldOcFptbGxaQ0IyWVd4MVpTQnBiaUIwYUdVZ1ltbDBjMlYwTGx4dUlDQm1hVzVrVUhKbGRpaHBibVJsZURvZ2JuVnRZbVZ5TENCMllXeDFaU0E5SUhSeWRXVXBPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lHbG1JQ2hwYm1SbGVDQTlQU0F3S1NCeVpYUjFjbTRnTFRFN1hHNGdJQ0FnZEdocGN5NWhjM04xY21WSmJsSmhibWRsS0dsdVpHVjRMQ0F0TVN3Z2RHaHBjeTVmYkdWdVozUm9MQ0FuYVc1a1pYZ25LVHRjYmx4dUlDQWdJR2x1WkdWNElEMGdhVzVrWlhnZ1BDQXdJRDhnZEdocGN5NWZiR1Z1WjNSb0lDMGdNU0E2SUdsdVpHVjRJQzBnTVRzZ0x5OGdjMnRwY0NCemRHRnlkRnh1WEc0Z0lDQWdZMjl1YzNRZ2JHRnpkRWx1ZEVsa2VDQTlJRTFoZEdndVpteHZiM0lvYVc1a1pYZ2dMeUF3ZURJd0tUdGNiaUFnSUNCc1pYUWdjbVZ0WVdsdWFXNW5RbWwwY3lBOUlDaHBibVJsZUNBcklERXBJQ1lnTUhneFpqdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0JzWVhOMFNXNTBTV1I0T3lCcElENDlJREE3SUdrdExTa2dlMXh1SUNBZ0lDQWdiR1YwSUdzZ1BTQW9kbUZzZFdVZ1B5QjBhR2x6TGw5a1lYUmhXMmxkSURvZ2ZuUm9hWE11WDJSaGRHRmJhVjBwT3lBdkx5QmpZWE4wWEc0Z0lDQWdJQ0JwWmlBb2NtVnRZV2x1YVc1blFtbDBjeUFoUFNBd0tTQjdYRzRnSUNBZ0lDQWdJR3NnSmowZ2ZpZ29OREk1TkRrMk56STVOU2tnUER3Z2NtVnRZV2x1YVc1blFtbDBjeWs3WEc0Z0lDQWdJQ0FnSUhKbGJXRnBibWx1WjBKcGRITWdQU0F3TzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYWlBOUlESTBPeUJySUNFOUlEQTdJR29nTFQwZ09Dd2dheUE4UEQwZ09Da2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQndJRDBnUW1sMFFYSnlZWGt1WDJ4aGMzUlBia0pwZEZ0cklENCtQaUF3ZURFNFhUdGNiaUFnSUNBZ0lDQWdhV1lnS0hBZ1BqMGdNQ2xjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnY0NBcklDaHBJQ29nTXpJcElDc2dhanRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUMweE8xeHVJQ0I5WEc1OVhHNGlYWDA9IiwiaW1wb3J0ICogYXMgdW1qIGZyb20gJ3VtYXAtanMnO1xuaW1wb3J0IHsgVFNORSB9IGZyb20gJ0BrZWNrZWx0L3RzbmUnO1xuaW1wb3J0IHsgVmVjdG9yLCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IGNhbGNEaXN0YW5jZU1hdHJpeCwgdHJhbnNwb3NlTWF0cml4LCBhc3NlcnQsIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgU1BFQmFzZSwgUFNQRUJhc2UsIE9yaWdpbmFsU1BFIH0gZnJvbSAnLi9zcGUnO1xuaW1wb3J0IHsgTWVhc3VyZSwgQXZhaWxhYmxlTWV0cmljcywgaXNCaXRBcnJheU1ldHJpYyB9IGZyb20gJy4vdHlwZWQtbWV0cmljcyc7XG5pbXBvcnQgQml0QXJyYXkgZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvYml0LWFycmF5Jztcbi8qKiBBYnN0cmFjdCBkaW1lbnNpb25hbGl0eSByZWR1Y2VyICovXG5jbGFzcyBSZWR1Y2VyIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IG9wdGlvbnMuZGF0YTtcbiAgICB9XG59XG4vKiogdC1TTkUgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLiAqL1xuY2xhc3MgVFNORVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFRTTkVSZWR1Y2VyLlxuICAgICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBUU05FUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IFRTTkUob3B0aW9ucyk7XG4gICAgICAgIHRoaXMuaXRlcmF0aW9ucyA9IChfYSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5pdGVyYXRpb25zKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAxMDA7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbiA9IG9wdGlvbnMuZGlzdGFuY2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgdC1TTkUgbWV0aG9kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqL1xuICAgIHRyYW5zZm9ybSgpIHtcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBjYWxjRGlzdGFuY2VNYXRyaXgodGhpcy5kYXRhLCB0aGlzLmRpc3RhbmNlRm4pO1xuICAgICAgICB0aGlzLnJlZHVjZXIuaW5pdERhdGFEaXN0KGRpc3RhbmNlKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLml0ZXJhdGlvbnM7ICsraSkge1xuICAgICAgICAgICAgdGhpcy5yZWR1Y2VyLnN0ZXAoKTsgLy8gZXZlcnkgdGltZSB5b3UgY2FsbCB0aGlzLCBzb2x1dGlvbiBnZXRzIGJldHRlclxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiBkaXN0YW5jZSwgZW1iZWRkaW5nOiB0aGlzLnJlZHVjZXIuZ2V0U29sdXRpb24oKSB9O1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBVTUFQIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cbiAqXG4gKiBAY2xhc3MgVU1BUFJlZHVjZXJcbiAqIEBleHRlbmRzIHtSZWR1Y2VyfVxuICovXG5jbGFzcyBVTUFQUmVkdWNlciBleHRlbmRzIFJlZHVjZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVU1BUFJlZHVjZXIuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgICogQG1lbWJlcm9mIFVNQVBSZWR1Y2VyXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgYXNzZXJ0KCdkaXN0YW5jZUZuJyBpbiBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuID0gb3B0aW9ucy5kaXN0YW5jZUZuO1xuICAgICAgICB0aGlzLnZlY3RvcnMgPSBbXTtcbiAgICAgICAgb3B0aW9ucy5kaXN0YW5jZUZuID0gdGhpcy5fZW5jb2RlZERpc3RhbmNlLmJpbmQodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoIDwgMTUpXG4gICAgICAgICAgICBvcHRpb25zLm5OZWlnaGJvcnMgPSB0aGlzLmRhdGEubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IHVtai5VTUFQKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDdXN0b20gZGlzdGFuY2Ugd3JhcHBlciB0byBoYXZlIG51bWVyaWMgaW5wdXRzIGluc3RlYWQgb2Ygc3RyaW5nIG9uZXMuXG4gICAgICpcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gYSBUaGUgZmlyc3QgaXRlbS5cbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBiIFRoZSBmaXJzdCBpdGVtLlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gRGlzdGFuY2UgbWV0cmljLlxuICAgICAqIEBtZW1iZXJvZiBVTUFQUmVkdWNlclxuICAgICAqL1xuICAgIF9lbmNvZGVkRGlzdGFuY2UoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXN0YW5jZUZuKHRoaXMuZGF0YVthWzBdXSwgdGhpcy5kYXRhW2JbMF1dKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW5jb2RlcyB0aGUgaW5wdXQgZGF0YSBhcyBhIHZlY3RvciBvZiBpbmRpY2VzLlxuICAgICAqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIEBtZW1iZXJvZiBVTUFQUmVkdWNlclxuICAgICAqL1xuICAgIF9lbmNvZGUoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICB0aGlzLnZlY3RvcnMucHVzaChbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgVU1BUCBtZXRob2QuXG4gICAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZy5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0oKSB7XG4gICAgICAgIHRoaXMuX2VuY29kZSgpO1xuICAgICAgICBjb25zdCBlbWJlZGRpbmcgPSB0aGlzLnJlZHVjZXIuZml0KHRoaXMudmVjdG9ycyk7XG4gICAgICAgIGZ1bmN0aW9uIGFycmF5Q2FzdDJDb29yZGluYXRlcyhkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5KGRhdGEubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gKFZlY3Rvci5mcm9tKGRhdGFbaV0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZW1iZWRkaW5nOiBhcnJheUNhc3QyQ29vcmRpbmF0ZXMoZW1iZWRkaW5nKSB9O1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBvcmlnaW5hbCBTUEUgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLlxuICpcbiAqIEBjbGFzcyBTUEVSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgU1BFUmVkdWNlciBleHRlbmRzIFJlZHVjZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgU1BFUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBTUEVCYXNlKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHRoZSBvcmlnaW5hbCBTUEUgbWV0aG9kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqL1xuICAgIHRyYW5zZm9ybSgpIHtcbiAgICAgICAgY29uc3QgZW1iID0gdGhpcy5yZWR1Y2VyLmVtYmVkKHRoaXMuZGF0YSk7XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiB0aGlzLnJlZHVjZXIuZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iIH07XG4gICAgfVxufVxuLyoqXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIFNQRSBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24uXG4gKlxuICogQGNsYXNzIFBTUEVSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgUFNQRVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFBTUEVSZWR1Y2VyLlxuICAgICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBQU1BFUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBQU1BFQmFzZShvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgbW9kaWZpZWQgU1BFIG1ldGhvZC5cbiAgICAgKiBAcmV0dXJuIHthbnl9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nIGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZS5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0oKSB7XG4gICAgICAgIGNvbnN0IGVtYiA9IHRoaXMucmVkdWNlci5lbWJlZCh0aGlzLmRhdGEpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogdGhpcy5yZWR1Y2VyLmRpc3RhbmNlLCBlbWJlZGRpbmc6IGVtYiB9O1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBvcmlnaW5hbCBTUEUgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLlxuICpcbiAqIEBjbGFzcyBPcmlnaW5hbFNQRVJlZHVjZXJcbiAqIEBleHRlbmRzIHtSZWR1Y2VyfVxuICovXG5jbGFzcyBPcmlnaW5hbFNQRVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIE9yaWdpbmFsU1BFUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgT3JpZ2luYWxTUEVSZWR1Y2VyXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IE9yaWdpbmFsU1BFKG9wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHRoZSBvcmlnaW5hbCBTUEUgbWV0aG9kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqL1xuICAgIHRyYW5zZm9ybSgpIHtcbiAgICAgICAgY29uc3QgZW1iID0gdGhpcy5yZWR1Y2VyLmVtYmVkKHRoaXMuZGF0YSk7XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiB0aGlzLnJlZHVjZXIuZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iIH07XG4gICAgfVxufVxuY29uc3QgQXZhaWxhYmxlUmVkdWNlcnMgPSB7XG4gICAgJ1VNQVAnOiBVTUFQUmVkdWNlcixcbiAgICAndC1TTkUnOiBUU05FUmVkdWNlcixcbiAgICAnU1BFJzogU1BFUmVkdWNlcixcbiAgICAncFNQRSc6IFBTUEVSZWR1Y2VyLFxuICAgICdPcmlnaW5hbFNQRSc6IE9yaWdpbmFsU1BFUmVkdWNlcixcbn07XG4vKipcbiAqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24gbWV0aG9kcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgRGltZW5zaW9uYWxpdHlSZWR1Y2VyXG4gKi9cbmV4cG9ydCBjbGFzcyBEaW1lbnNpb25hbGl0eVJlZHVjZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyLlxuICAgICAqIEBwYXJhbSB7YW55W119IGRhdGEgVmVjdG9ycyB0byBlbWJlZC5cbiAgICAgKiBAcGFyYW0ge0tub3duTWV0aG9kc30gbWV0aG9kIEVtYmVkZGluZyBtZXRob2QgdG8gYmUgYXBwbGllZFxuICAgICAqIEBwYXJhbSB7S25vd25NZXRyaWNzfSBtZXRyaWMgRGlzdGFuY2UgbWV0cmljIHRvIGJlIGNvbXB1dGVkIGJldHdlZW4gZWFjaCBvZiB0aGUgdmVjdG9ycy5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGltcGxlbWVudGluZyBlbWJlZGRlcnMuXG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGRhdGEsIG1ldGhvZCwgbWV0cmljLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgbWVhc3VyZSA9IG5ldyBNZWFzdXJlKG1ldHJpYykuZ2V0TWVhc3VyZSgpO1xuICAgICAgICBsZXQgc3BlY09wdGlvbnMgPSB7fTtcbiAgICAgICAgaWYgKGlzQml0QXJyYXlNZXRyaWMobWV0cmljKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgZGF0YVtpXSA9IG5ldyBCaXRBcnJheShkYXRhW2ldLl9kYXRhLCBkYXRhW2ldLl9sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtZXRob2QgPT0gJ1VNQVAnKSB7XG4gICAgICAgICAgICBzcGVjT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsgZGF0YTogZGF0YSB9LCB7IGRpc3RhbmNlRm46IG1lYXN1cmUgfSksIHsgbkVwb2Noczogb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmN5Y2xlcyB9KSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWV0aG9kID09ICd0LVNORScpIHtcbiAgICAgICAgICAgIHNwZWNPcHRpb25zID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oeyBkYXRhOiBkYXRhIH0sIHsgZGlzdGFuY2U6IG1lYXN1cmUgfSksIHsgaXRlcmF0aW9uczogKF9hID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmN5Y2xlcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogdW5kZWZpbmVkIH0pLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXRob2QgPT0gJ1NQRScpIHtcbiAgICAgICAgICAgIHNwZWNPcHRpb25zID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsgZGF0YTogZGF0YSB9LCB7IGRpc3RhbmNlOiBtZWFzdXJlIH0pLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNwZWNPcHRpb25zID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsgZGF0YTogZGF0YSB9LCB7IGRpc3RhbmNlOiBtZWFzdXJlIH0pLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgQXZhaWxhYmxlUmVkdWNlcnNbbWV0aG9kXShzcGVjT3B0aW9ucyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgdGhlIGNob3NlbiBtZXRob2QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHRyYW5zcG9zZSBXaGV0aGVyIHRvIHRyYW5zZm9ybSBjb29yZGluYXRlcyB0byBoYXZlIGNvbHVtbnMtZmlyc3Qgb3JpZW50YXRpb24uXG4gICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBlbWJlZGRpbmcgbWV0aG9kIHdhcyBub3QgZm91bmQuXG4gICAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZyBhbmQgZGlzdGFuY2UgbWF0cml4IHdoZXJlIGFwcGxpY2FibGUuXG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIHRyYW5zZm9ybSh0cmFuc3Bvc2UgPSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5yZWR1Y2VyID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyIHdhcyBub3QgZGVmaW5lZC4nKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeyBlbWJlZGRpbmcsIGRpc3RhbmNlIH0gPSB0aGlzLnJlZHVjZXIudHJhbnNmb3JtKCk7XG4gICAgICAgIGlmICh0cmFuc3Bvc2UpIHtcbiAgICAgICAgICAgIGVtYmVkZGluZyA9IHRyYW5zcG9zZU1hdHJpeChlbWJlZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiBkaXN0YW5jZSwgZW1iZWRkaW5nOiBlbWJlZGRpbmcgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBtZXRyaWNzIGF2YWlsYWJsZSBieSB0eXBlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IHR5cGVOYW1lIHR5cGUgbmFtZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIHN0YXRpYyBhdmFpbGFibGVNZXRyaWNzQnlUeXBlKHR5cGVOYW1lKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW3R5cGVOYW1lXSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uIG1ldGhvZHMgYXZhaWxhYmxlLlxuICAgICAqXG4gICAgICogQHJlYWRvbmx5XG4gICAgICogQG1lbWJlcm9mIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICAgICAqL1xuICAgIHN0YXRpYyBnZXQgYXZhaWxhYmxlTWV0aG9kcygpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZVJlZHVjZXJzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBtZXRyaWNzIGF2YWlsYWJsZS5cbiAgICAgKlxuICAgICAqIEByZWFkb25seVxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1ldHJpY3MoKSB7XG4gICAgICAgIGxldCBhbnMgPSBbXTtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhBdmFpbGFibGVNZXRyaWNzKS5mb3JFYWNoKChvYmopID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5ID0gT2JqZWN0LnZhbHVlcyhvYmopO1xuICAgICAgICAgICAgYW5zID0gWy4uLmFucywgLi4uYXJyYXldO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFucztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZrZFdObExXUnBiV1Z1YzJsdmJtRnNhWFI1TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljbVZrZFdObExXUnBiV1Z1YzJsdmJtRnNhWFI1TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRTlCUVU4c1MwRkJTeXhIUVVGSExFMUJRVTBzVTBGQlV5eERRVUZETzBGQlF5OUNMRTlCUVU4c1JVRkJReXhKUVVGSkxFVkJRVU1zVFVGQlRTeGxRVUZsTEVOQlFVTTdRVUZEYmtNc1QwRkJUeXhGUVVsTUxFMUJRVTBzUjBGSFVDeE5RVUZOTEdsRVFVRnBSQ3hEUVVGRE8wRkJRM3BFTEU5QlFVOHNSVUZEVEN4clFrRkJhMElzUlVGRGJFSXNaVUZCWlN4RlFVTm1MRTFCUVUwc1IwRkRVQ3hOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCUTNwRUxFOUJRVThzUlVGQlF5eFBRVUZQTEVWQlFVVXNVVUZCVVN4RlFVRkZMRmRCUVZjc1JVRkJReXhOUVVGTkxFOUJRVThzUTBGQlF6dEJRVU55UkN4UFFVRlBMRVZCUVVNc1QwRkJUeXhGUVVGblFpeG5Ra0ZCWjBJc1JVRkJSU3huUWtGQlowSXNSVUZCY1VJc1RVRkJUU3hwUWtGQmFVSXNRMEZCUXp0QlFVTTVSeXhQUVVGUExGRkJRVkVzVFVGQlRTeDVRMEZCZVVNc1EwRkJRenRCUVVjdlJDeHpRMEZCYzBNN1FVRkRkRU1zVFVGQlpTeFBRVUZQTzBsQlIzQkNMRmxCUVZrc1QwRkJaMEk3VVVGRE1VSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETzBsQlF6TkNMRU5CUVVNN1EwRkxSanRCUVVWRUxITkRRVUZ6UXp0QlFVTjBReXhOUVVGTkxGZEJRVmtzVTBGQlVTeFBRVUZQTzBsQlN5OUNPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTlCUVdkQ096dFJRVU14UWl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRFppeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEycERMRWxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzVFVGQlFTeFBRVUZQTEdGQlFWQXNUMEZCVHl4MVFrRkJVQ3hQUVVGUExFTkJRVVVzVlVGQlZTeHRRMEZCU1N4SFFVRkhMRU5CUVVNN1VVRkROME1zU1VGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRE8wbEJRM0pETEVOQlFVTTdTVUZGUkRzN08wOUJSMGM3U1VGRFNTeFRRVUZUTzFGQlEyUXNUVUZCVFN4UlFVRlJMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdVVUZEYUVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1VVRkZjRU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRlRU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRExHbEVRVUZwUkR0VFFVTjJSVHRSUVVORUxFOUJRVThzUlVGQlF5eFJRVUZSTEVWQlFVVXNVVUZCVVN4RlFVRkZMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZkQlFWY3NSVUZCUlN4RlFVRkRMRU5CUVVNN1NVRkRja1VzUTBGQlF6dERRVU5HTzBGQlNVUTdPenM3TzBkQlMwYzdRVUZEU0N4TlFVRk5MRmRCUVZrc1UwRkJVU3hQUVVGUE8wbEJTeTlDT3pzN08wOUJTVWM3U1VGRFNDeFpRVUZaTEU5QlFXOUNPMUZCUXpsQ0xFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVVm1MRTFCUVUwc1EwRkJReXhaUVVGWkxFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZGYUVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNWVUZCVnl4RFFVRkRPMUZCUTNSRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RFFVRkRPMUZCUTJ4Q0xFOUJRVThzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVOMFJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFVkJRVVU3V1VGRGRrSXNUMEZCVHl4RFFVRkRMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkROVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTVUZEZGtNc1EwRkJRenRKUVVWRU96czdPenM3T3p0UFFWRkhPMGxCUTA4c1owSkJRV2RDTEVOQlFVTXNRMEZCVnl4RlFVRkZMRU5CUVZjN1VVRkRha1FzVDBGQlR5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRek5FTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTlBMRTlCUVU4N1VVRkRaaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRla01zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzaENPMGxCUTBnc1EwRkJRenRKUVVWRU96czdUMEZIUnp0SlFVTkpMRk5CUVZNN1VVRkRaQ3hKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdVVUZGWml4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRmFrUXNVMEZCVXl4eFFrRkJjVUlzUTBGQlF5eEpRVUZuUWp0WlFVTTNReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNNVJTeERRVUZETzFGQlJVUXNUMEZCVHl4RlFVRkRMRk5CUVZNc1JVRkJSU3h4UWtGQmNVSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1JVRkJReXhEUVVGRE8wbEJRM1pFTEVOQlFVTTdRMEZEUmp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hWUVVGWExGTkJRVkVzVDBGQlR6dEpRVWM1UWpzN096dFBRVWxITzBsQlEwZ3NXVUZCV1N4UFFVRm5RanRSUVVNeFFpeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRaaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM1JETEVOQlFVTTdTVUZGUkRzN08wOUJSMGM3U1VGRFNTeFRRVUZUTzFGQlEyUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRekZETEU5QlFVOHNSVUZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWRCUVVjc1JVRkJReXhEUVVGRE8wbEJRek5FTEVOQlFVTTdRMEZEUmp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hYUVVGWkxGTkJRVkVzVDBGQlR6dEpRVWN2UWpzN096dFBRVWxITzBsQlEwZ3NXVUZCV1N4UFFVRm5RanRSUVVNeFFpeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRaaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM1pETEVOQlFVTTdTVUZGUkRzN08wOUJSMGM3U1VGRFNTeFRRVUZUTzFGQlEyUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRekZETEU5QlFVOHNSVUZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWRCUVVjc1JVRkJReXhEUVVGRE8wbEJRek5FTEVOQlFVTTdRMEZEUmp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hyUWtGQmJVSXNVMEZCVVN4UFFVRlBPMGxCUjNSRE96czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFOUJRV2RDTzFGQlF6RkNMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5tTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hYUVVGWExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTVUZETVVNc1EwRkJRenRKUVVWRU96czdUMEZIUnp0SlFVTkpMRk5CUVZNN1VVRkRaQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZETVVNc1QwRkJUeXhGUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzUjBGQlJ5eEZRVUZETEVOQlFVTTdTVUZETTBRc1EwRkJRenREUVVOR08wRkJSVVFzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSenRKUVVONFFpeE5RVUZOTEVWQlFVVXNWMEZCVnp0SlFVTnVRaXhQUVVGUExFVkJRVVVzVjBGQlZ6dEpRVU53UWl4TFFVRkxMRVZCUVVVc1ZVRkJWVHRKUVVOcVFpeE5RVUZOTEVWQlFVVXNWMEZCVnp0SlFVTnVRaXhoUVVGaExFVkJRVVVzYTBKQlFXdENPME5CUTJ4RExFTkJRVU03UVVGSlJqczdPenM3UjBGTFJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4eFFrRkJjVUk3U1VGSGFFTTdPenM3T3pzN1QwRlBSenRKUVVOSUxGbEJRVmtzU1VGQlZ5eEZRVUZGTEUxQlFXOUNMRVZCUVVVc1RVRkJiMElzUlVGQlJTeFBRVUZwUWpzN1VVRkRjRVlzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdVVUZEYWtRc1NVRkJTU3hYUVVGWExFZEJRVWNzUlVGQlJTeERRVUZETzFGQlJYSkNMRWxCUVVrc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVN1dVRkROVUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1owSkJRM0JETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRoUVVONFJEdFRRVU5HTzFGQlJVUXNTVUZCU1N4TlFVRk5MRWxCUVVrc1RVRkJUU3hGUVVGRk8xbEJRM0JDTEZkQlFWY3NOa05CUTA0c1JVRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZETEVWQlExb3NSVUZCUXl4VlFVRlZMRVZCUVVVc1QwRkJUeXhGUVVGRExFZEJRM0pDTEVWQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1lVRkJVQ3hQUVVGUExIVkNRVUZRTEU5QlFVOHNRMEZCUlN4TlFVRk5MRVZCUVVNc1IwRkRNVUlzVDBGQlR5eERRVU5ZTEVOQlFVTTdVMEZEU0R0aFFVRk5MRWxCUVVrc1RVRkJUU3hKUVVGSkxFOUJRVThzUlVGQlJUdFpRVU0xUWl4WFFVRlhMRFpEUVVOT0xFVkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUXl4RlFVTmFMRVZCUVVNc1VVRkJVU3hGUVVGRkxFOUJRVThzUlVGQlF5eEhRVU51UWl4RlFVRkRMRlZCUVZVc1JVRkJSU3hOUVVGQkxFOUJRVThzWVVGQlVDeFBRVUZQTEhWQ1FVRlFMRTlCUVU4c1EwRkJSU3hOUVVGTkxHMURRVUZKTEZOQlFWTXNSVUZCUXl4SFFVTXhReXhQUVVGUExFTkJRMWdzUTBGQlF6dFRRVU5JTzJGQlFVMHNTVUZCU1N4TlFVRk5MRWxCUVVrc1MwRkJTeXhGUVVGRk8xbEJRekZDTEZkQlFWY3NLMEpCUVU4c1JVRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZETEVWQlFVc3NSVUZCUXl4UlFVRlJMRVZCUVVVc1QwRkJUeXhGUVVGRExFZEJRVXNzVDBGQlR5eERRVUZETEVOQlFVTTdVMEZEY2tVN1lVRkJUVHRaUVVOTUxGZEJRVmNzSzBKQlFVOHNSVUZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRExFVkJRVXNzUlVGQlF5eFJRVUZSTEVWQlFVVXNUMEZCVHl4RlFVRkRMRWRCUVVzc1QwRkJUeXhEUVVGRExFTkJRVU03VTBGRGNrVTdVVUZEUkN4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzYVVKQlFXbENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdTVUZETlVRc1EwRkJRenRKUVVWRU96czdPenM3TzA5QlQwYzdTVUZEU1N4VFFVRlRMRU5CUVVNc1dVRkJjVUlzUzBGQlN6dFJRVU42UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzVTBGQlV5eEZRVUZGTzFsQlF6ZENMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zTUVKQlFUQkNMRU5CUVVNc1EwRkJRenRUUVVNM1F6dFJRVVZFTEVsQlFVa3NSVUZCUXl4VFFVRlRMRVZCUVVVc1VVRkJVU3hGUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRSUVVWeVJDeEpRVUZKTEZOQlFWTXNSVUZCUlR0WlFVTmlMRk5CUVZNc1IwRkJSeXhsUVVGbExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdVMEZEZUVNN1VVRkRSQ3hQUVVGUExFVkJRVU1zVVVGQlVTeEZRVUZGTEZGQlFWRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1UwRkJVeXhGUVVGRExFTkJRVU03U1VGRGNFUXNRMEZCUXp0SlFVVkVPenM3T3pzN1QwRk5SenRKUVVOSUxFMUJRVTBzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhSUVVFMFFqdFJRVU40UkN4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5xUkN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTQ3hOUVVGTkxFdEJRVXNzWjBKQlFXZENPMUZCUTNwQ0xFOUJRVThzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzBsQlEzaERMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSUxFMUJRVTBzUzBGQlN5eG5Ra0ZCWjBJN1VVRkRla0lzU1VGQlNTeEhRVUZITEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUTNaQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSVHRaUVVNNVF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycERMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRNMElzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUhWdGFpQm1jbTl0SUNkMWJXRndMV3B6Snp0Y2JtbHRjRzl5ZENCN1ZGTk9SWDBnWm5KdmJTQW5RR3RsWTJ0bGJIUXZkSE51WlNjN1hHNXBiWEJ2Y25RZ2UxeHVJQ0JQY0hScGIyNXpMRnh1SUNCRWFYTjBZVzVqWlUxbGRISnBZeXhjYmlBZ1EyOXZjbVJwYm1GMFpYTXNYRzRnSUZabFkzUnZjaXhjYmlBZ1ZtVmpkRzl5Y3l4Y2JpQWdUV0YwY21sNExGeHVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTF4dUlDQmpZV3hqUkdsemRHRnVZMlZOWVhSeWFYZ3NYRzRnSUhSeVlXNXpjRzl6WlUxaGRISnBlQ3hjYmlBZ1lYTnpaWEowTEZ4dWZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTJaV04wYjNJdGIzQmxjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdlMU5RUlVKaGMyVXNJRkJUVUVWQ1lYTmxMQ0JQY21sbmFXNWhiRk5RUlgwZ1puSnZiU0FuTGk5emNHVW5PMXh1YVcxd2IzSjBJSHROWldGemRYSmxMQ0JMYm05M2JrMWxkSEpwWTNNc0lFRjJZV2xzWVdKc1pVMWxkSEpwWTNNc0lHbHpRbWwwUVhKeVlYbE5aWFJ5YVdNc0lFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdabkp2YlNBbkxpOTBlWEJsWkMxdFpYUnlhV056Snp0Y2JtbHRjRzl5ZENCQ2FYUkJjbkpoZVNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5aWFYUXRZWEp5WVhrbk8xeHVhVzF3YjNKMElIdFZUVUZRVUdGeVlXMWxkR1Z5YzMwZ1puSnZiU0FuZFcxaGNDMXFjeWM3WEc1Y2JpOHFLaUJCWW5OMGNtRmpkQ0JrYVcxbGJuTnBiMjVoYkdsMGVTQnlaV1IxWTJWeUlDb3ZYRzVoWW5OMGNtRmpkQ0JqYkdGemN5QlNaV1IxWTJWeUlIdGNiaUFnY0hKdmRHVmpkR1ZrSUdSaGRHRTZJRlpsWTNSdmNuTTdYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9iM0IwYVc5dWN6b2dUM0IwYVc5dWN5a2dlMXh1SUNBZ0lIUm9hWE11WkdGMFlTQTlJRzl3ZEdsdmJuTXVaR0YwWVR0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJGYldKbFpITWdkR2hsSUdSaGRHRWdaMmwyWlc0Z2FXNTBieUIwYUdVZ2RIZHZMV1JwYldWdWMybHZibUZzSUhOd1lXTmxMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdGhibmw5SUVOaGNuUmxjMmxoYmlCamIyOXlaR2x1WVhSbElHOW1JSFJvYVhNZ1pXMWlaV1JrYVc1bklHRnVaQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkMmhsY21VZ1lYQndiR2xqWVdKc1pTNGdLaTljYmlBZ1lXSnpkSEpoWTNRZ2RISmhibk5tYjNKdEtDazZJSHNnVzJ0bGVUb2djM1J5YVc1blhUb2dUV0YwY21sNElIMDdYRzU5WEc1Y2JpOHFLaUIwTFZOT1JTQmthVzFsYm5OcGIyNWhiR2wwZVNCeVpXUjFZM1JwYjI0dUlDb3ZYRzVqYkdGemN5QlVVMDVGVW1Wa2RXTmxjaUJsZUhSbGJtUnpJRkpsWkhWalpYSWdlMXh1SUNCd2NtOTBaV04wWldRZ2NtVmtkV05sY2pvZ1ZGTk9SVHRjYmlBZ2NISnZkR1ZqZEdWa0lHbDBaWEpoZEdsdmJuTTZJRzUxYldKbGNqdGNiaUFnY0hKdmRHVmpkR1ZrSUdScGMzUmhibU5sUm00NklFUnBjM1JoYm1ObFRXVjBjbWxqTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVnpJR0Z1SUdsdWMzUmhibU5sSUc5bUlGUlRUa1ZTWldSMVkyVnlMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOXdkR2x2Ym5OOUlHOXdkR2x2Ym5NZ1QzQjBhVzl1Y3lCMGJ5QndZWE56SUhSdklIUm9aU0JqYjI1emRISjFZM1J2Y2k1Y2JpQWdJQ29nUUcxbGJXSmxjbTltSUZSVFRrVlNaV1IxWTJWeVhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWh2Y0hScGIyNXpPaUJQY0hScGIyNXpLU0I3WEc0Z0lDQWdjM1Z3WlhJb2IzQjBhVzl1Y3lrN1hHNGdJQ0FnZEdocGN5NXlaV1IxWTJWeUlEMGdibVYzSUZSVFRrVW9iM0IwYVc5dWN5azdYRzRnSUNBZ2RHaHBjeTVwZEdWeVlYUnBiMjV6SUQwZ2IzQjBhVzl1Y3o4dWFYUmxjbUYwYVc5dWN5QS9QeUF4TURBN1hHNGdJQ0FnZEdocGN5NWthWE4wWVc1alpVWnVJRDBnYjNCMGFXOXVjeTVrYVhOMFlXNWpaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRmJXSmxaSE1nZEdobElHUmhkR0VnWjJsMlpXNGdhVzUwYnlCMGFHVWdkSGR2TFdScGJXVnVjMmx2Ym1Gc0lITndZV05sSUhWemFXNW5JSFF0VTA1RklHMWxkR2h2WkM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WVc1NWZTQkRZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaU0J2WmlCMGFHbHpJR1Z0WW1Wa1pHbHVaeUJoYm1RZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhkb1pYSmxJR0Z3Y0d4cFkyRmliR1V1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nZEhKaGJuTm1iM0p0S0NrNklIc2dXMnRsZVRvZ2MzUnlhVzVuWFRvZ1RXRjBjbWw0SUgwZ2UxeHVJQ0FnSUdOdmJuTjBJR1JwYzNSaGJtTmxJRDBnWTJGc1kwUnBjM1JoYm1ObFRXRjBjbWw0S0hSb2FYTXVaR0YwWVN3Z2RHaHBjeTVrYVhOMFlXNWpaVVp1S1R0Y2JpQWdJQ0IwYUdsekxuSmxaSFZqWlhJdWFXNXBkRVJoZEdGRWFYTjBLR1JwYzNSaGJtTmxLVHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZEdocGN5NXBkR1Z5WVhScGIyNXpPeUFySzJrcElIdGNiaUFnSUNBZ0lIUm9hWE11Y21Wa2RXTmxjaTV6ZEdWd0tDazdJQzh2SUdWMlpYSjVJSFJwYldVZ2VXOTFJR05oYkd3Z2RHaHBjeXdnYzI5c2RYUnBiMjRnWjJWMGN5QmlaWFIwWlhKY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlIdGthWE4wWVc1alpUb2daR2x6ZEdGdVkyVXNJR1Z0WW1Wa1pHbHVaem9nZEdocGN5NXlaV1IxWTJWeUxtZGxkRk52YkhWMGFXOXVLQ2w5TzF4dUlDQjlYRzU5WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRlZ0WVhCUGNIUnBiMjV6SUQwZ1QzQjBhVzl1Y3lBbUlGVk5RVkJRWVhKaGJXVjBaWEp6TzF4dVhHNHZLaXBjYmlBcUlFbHRjR3hsYldWdWRITWdWVTFCVUNCa2FXMWxibk5wYjI1aGJHbDBlU0J5WldSMVkzUnBiMjR1WEc0Z0tseHVJQ29nUUdOc1lYTnpJRlZOUVZCU1pXUjFZMlZ5WEc0Z0tpQkFaWGgwWlc1a2N5QjdVbVZrZFdObGNuMWNiaUFxTDF4dVkyeGhjM01nVlUxQlVGSmxaSFZqWlhJZ1pYaDBaVzVrY3lCU1pXUjFZMlZ5SUh0Y2JpQWdjSEp2ZEdWamRHVmtJSEpsWkhWalpYSTZJSFZ0YWk1VlRVRlFPMXh1SUNCd2NtOTBaV04wWldRZ1pHbHpkR0Z1WTJWR2Jqb2dSblZ1WTNScGIyNDdYRzRnSUhCeWIzUmxZM1JsWkNCMlpXTjBiM0p6T2lCdWRXMWlaWEpiWFZ0ZE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRlZOUVZCU1pXUjFZMlZ5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMDl3ZEdsdmJuTjlJRzl3ZEdsdmJuTWdUM0IwYVc5dWN5QjBieUJ3WVhOeklIUnZJSFJvWlNCamIyNXpkSEoxWTNSdmNpNWNiaUFnSUNvZ1FHMWxiV0psY205bUlGVk5RVkJTWldSMVkyVnlYRzRnSUNBcUwxeHVJQ0JqYjI1emRISjFZM1J2Y2lodmNIUnBiMjV6T2lCVmJXRndUM0IwYVc5dWN5a2dlMXh1SUNBZ0lITjFjR1Z5S0c5d2RHbHZibk1wTzF4dVhHNGdJQ0FnWVhOelpYSjBLQ2RrYVhOMFlXNWpaVVp1SnlCcGJpQnZjSFJwYjI1ektUdGNibHh1SUNBZ0lIUm9hWE11WkdsemRHRnVZMlZHYmlBOUlHOXdkR2x2Ym5NdVpHbHpkR0Z1WTJWR2JpRTdYRzRnSUNBZ2RHaHBjeTUyWldOMGIzSnpJRDBnVzEwN1hHNGdJQ0FnYjNCMGFXOXVjeTVrYVhOMFlXNWpaVVp1SUQwZ2RHaHBjeTVmWlc1amIyUmxaRVJwYzNSaGJtTmxMbUpwYm1Rb2RHaHBjeWs3WEc0Z0lDQWdhV1lnS0hSb2FYTXVaR0YwWVM1c1pXNW5kR2dnUENBeE5TbGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdWJrNWxhV2RvWW05eWN5QTlJSFJvYVhNdVpHRjBZUzVzWlc1bmRHZ2dMU0F4TzF4dUlDQWdJSFJvYVhNdWNtVmtkV05sY2lBOUlHNWxkeUIxYldvdVZVMUJVQ2h2Y0hScGIyNXpLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGRYTjBiMjBnWkdsemRHRnVZMlVnZDNKaGNIQmxjaUIwYnlCb1lYWmxJRzUxYldWeWFXTWdhVzV3ZFhSeklHbHVjM1JsWVdRZ2IyWWdjM1J5YVc1bklHOXVaWE11WEc0Z0lDQXFYRzRnSUNBcUlFQndjbTkwWldOMFpXUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEpiWFgwZ1lTQlVhR1VnWm1seWMzUWdhWFJsYlM1Y2JpQWdJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSmJYWDBnWWlCVWFHVWdabWx5YzNRZ2FYUmxiUzVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkVhWE4wWVc1alpTQnRaWFJ5YVdNdVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCVlRVRlFVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdjSEp2ZEdWamRHVmtJRjlsYm1OdlpHVmtSR2x6ZEdGdVkyVW9ZVG9nYm5WdFltVnlXMTBzSUdJNklHNTFiV0psY2x0ZEtUb2diblZ0WW1WeUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWthWE4wWVc1alpVWnVLSFJvYVhNdVpHRjBZVnRoV3pCZFhTd2dkR2hwY3k1a1lYUmhXMkpiTUYxZEtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYm1OdlpHVnpJSFJvWlNCcGJuQjFkQ0JrWVhSaElHRnpJR0VnZG1WamRHOXlJRzltSUdsdVpHbGpaWE11WEc0Z0lDQXFYRzRnSUNBcUlFQndjbTkwWldOMFpXUmNiaUFnSUNvZ1FHMWxiV0psY205bUlGVk5RVkJTWldSMVkyVnlYRzRnSUNBcUwxeHVJQ0J3Y205MFpXTjBaV1FnWDJWdVkyOWtaU2dwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhSb2FYTXVaR0YwWVM1c1pXNW5kR2c3SUNzcmFTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1MlpXTjBiM0p6TG5CMWMyZ29XMmxkS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1JXMWlaV1J6SUhSb1pTQmtZWFJoSUdkcGRtVnVJR2x1ZEc4Z2RHaGxJSFIzYnkxa2FXMWxibk5wYjI1aGJDQnpjR0ZqWlNCMWMybHVaeUJWVFVGUUlHMWxkR2h2WkM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WVc1NWZTQkRZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaU0J2WmlCMGFHbHpJR1Z0WW1Wa1pHbHVaeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUIwY21GdWMyWnZjbTBvS1RvZ2V5QmJhMlY1T2lCemRISnBibWRkT2lCTllYUnlhWGdnZlNCN1hHNGdJQ0FnZEdocGN5NWZaVzVqYjJSbEtDazdYRzVjYmlBZ0lDQmpiMjV6ZENCbGJXSmxaR1JwYm1jZ1BTQjBhR2x6TG5KbFpIVmpaWEl1Wm1sMEtIUm9hWE11ZG1WamRHOXljeWs3WEc1Y2JpQWdJQ0JtZFc1amRHbHZiaUJoY25KaGVVTmhjM1F5UTI5dmNtUnBibUYwWlhNb1pHRjBZVG9nYm5WdFltVnlXMTFiWFNrNklFTnZiM0prYVc1aGRHVnpJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnVaWGNnUVhKeVlYa29aR0YwWVM1c1pXNW5kR2dwTG1acGJHd29NQ2t1YldGd0tDaGZMQ0JwS1NBOVBpQW9WbVZqZEc5eUxtWnliMjBvWkdGMFlWdHBYU2twS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdlMlZ0WW1Wa1pHbHVaem9nWVhKeVlYbERZWE4wTWtOdmIzSmthVzVoZEdWektHVnRZbVZrWkdsdVp5bDlPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nU1cxd2JHVnRaVzUwY3lCdmNtbG5hVzVoYkNCVFVFVWdaR2x0Wlc1emFXOXVZV3hwZEhrZ2NtVmtkV04wYVc5dUxseHVJQ3BjYmlBcUlFQmpiR0Z6Y3lCVFVFVlNaV1IxWTJWeVhHNGdLaUJBWlhoMFpXNWtjeUI3VW1Wa2RXTmxjbjFjYmlBcUwxeHVZMnhoYzNNZ1UxQkZVbVZrZFdObGNpQmxlSFJsYm1SeklGSmxaSFZqWlhJZ2UxeHVJQ0J3Y205MFpXTjBaV1FnY21Wa2RXTmxjam9nVTFCRlFtRnpaVHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCVFVFVlNaV1IxWTJWeUxseHVJQ0FnS2lCQWNHRnlZVzBnZTA5d2RHbHZibk45SUc5d2RHbHZibk1nVDNCMGFXOXVjeUIwYnlCd1lYTnpJSFJ2SUhSb1pTQmpiMjV6ZEhKMVkzUnZjaTVjYmlBZ0lDb2dRRzFsYldKbGNtOW1JRk5RUlZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHOXdkR2x2Ym5NNklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG5KbFpIVmpaWElnUFNCdVpYY2dVMUJGUW1GelpTaHZjSFJwYjI1ektUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUdSaGRHRWdaMmwyWlc0Z2FXNTBieUIwYUdVZ2RIZHZMV1JwYldWdWMybHZibUZzSUhOd1lXTmxJSFZ6YVc1bklIUm9aU0J2Y21sbmFXNWhiQ0JUVUVVZ2JXVjBhRzlrTGx4dUlDQWdLaUJBY21WMGRYSnVJSHRoYm5sOUlFTmhjblJsYzJsaGJpQmpiMjl5WkdsdVlYUmxJRzltSUhSb2FYTWdaVzFpWldSa2FXNW5JR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGdnZDJobGNtVWdZWEJ3YkdsallXSnNaUzVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUIwY21GdWMyWnZjbTBvS1RvZ2V5QmJhMlY1T2lCemRISnBibWRkT2lCTllYUnlhWGdnZlNCN1hHNGdJQ0FnWTI5dWMzUWdaVzFpSUQwZ2RHaHBjeTV5WldSMVkyVnlMbVZ0WW1Wa0tIUm9hWE11WkdGMFlTazdYRzRnSUNBZ2NtVjBkWEp1SUh0a2FYTjBZVzVqWlRvZ2RHaHBjeTV5WldSMVkyVnlMbVJwYzNSaGJtTmxMQ0JsYldKbFpHUnBibWM2SUdWdFluMDdYRzRnSUgxY2JuMWNibHh1THlvcVhHNGdLaUJKYlhCc1pXMWxiblJ6SUcxdlpHbG1hV1ZrSUZOUVJTQmthVzFsYm5OcGIyNWhiR2wwZVNCeVpXUjFZM1JwYjI0dVhHNGdLbHh1SUNvZ1FHTnNZWE56SUZCVFVFVlNaV1IxWTJWeVhHNGdLaUJBWlhoMFpXNWtjeUI3VW1Wa2RXTmxjbjFjYmlBcUwxeHVZMnhoYzNNZ1VGTlFSVkpsWkhWalpYSWdaWGgwWlc1a2N5QlNaV1IxWTJWeUlIdGNiaUFnY0hKdmRHVmpkR1ZrSUhKbFpIVmpaWEk2SUZCVFVFVkNZWE5sTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVnpJR0Z1SUdsdWMzUmhibU5sSUc5bUlGQlRVRVZTWldSMVkyVnlMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwOXdkR2x2Ym5OOUlHOXdkR2x2Ym5NZ1QzQjBhVzl1Y3lCMGJ5QndZWE56SUhSdklIUm9aU0JqYjI1emRISjFZM1J2Y2k1Y2JpQWdJQ29nUUcxbGJXSmxjbTltSUZCVFVFVlNaV1IxWTJWeVhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWh2Y0hScGIyNXpPaUJQY0hScGIyNXpLU0I3WEc0Z0lDQWdjM1Z3WlhJb2IzQjBhVzl1Y3lrN1hHNGdJQ0FnZEdocGN5NXlaV1IxWTJWeUlEMGdibVYzSUZCVFVFVkNZWE5sS0c5d2RHbHZibk1wTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdaR0YwWVNCbmFYWmxiaUJwYm5SdklIUm9aU0IwZDI4dFpHbHRaVzV6YVc5dVlXd2djM0JoWTJVZ2RYTnBibWNnZEdobElHMXZaR2xtYVdWa0lGTlFSU0J0WlhSb2IyUXVYRzRnSUNBcUlFQnlaWFIxY200Z2UyRnVlWDBnUTJGeWRHVnphV0Z1SUdOdmIzSmthVzVoZEdVZ2IyWWdkR2hwY3lCbGJXSmxaR1JwYm1jZ1lXNWtJR1JwYzNSaGJtTmxJRzFoZEhKcGVDQjNhR1Z5WlNCaGNIQnNhV05oWW14bExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklIUnlZVzV6Wm05eWJTZ3BPaUI3SUZ0clpYazZJSE4wY21sdVoxMDZJRTFoZEhKcGVDQjlJSHRjYmlBZ0lDQmpiMjV6ZENCbGJXSWdQU0IwYUdsekxuSmxaSFZqWlhJdVpXMWlaV1FvZEdocGN5NWtZWFJoS1R0Y2JpQWdJQ0J5WlhSMWNtNGdlMlJwYzNSaGJtTmxPaUIwYUdsekxuSmxaSFZqWlhJdVpHbHpkR0Z1WTJVc0lHVnRZbVZrWkdsdVp6b2daVzFpZlR0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFbHRjR3hsYldWdWRITWdiM0pwWjJsdVlXd2dVMUJGSUdScGJXVnVjMmx2Ym1Gc2FYUjVJSEpsWkhWamRHbHZiaTVjYmlBcVhHNGdLaUJBWTJ4aGMzTWdUM0pwWjJsdVlXeFRVRVZTWldSMVkyVnlYRzRnS2lCQVpYaDBaVzVrY3lCN1VtVmtkV05sY24xY2JpQXFMMXh1WTJ4aGMzTWdUM0pwWjJsdVlXeFRVRVZTWldSMVkyVnlJR1Y0ZEdWdVpITWdVbVZrZFdObGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCeVpXUjFZMlZ5T2lCUGNtbG5hVzVoYkZOUVJUdGNibHh1SUNBdktpcGNiaUFnSUNvZ1EzSmxZWFJsY3lCaGJpQnBibk4wWVc1alpTQnZaaUJQY21sbmFXNWhiRk5RUlZKbFpIVmpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdiM0IwYVc5dWN5QlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdkR2hsSUdOdmJuTjBjblZqZEc5eUxseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1QzSnBaMmx1WVd4VFVFVlNaV1IxWTJWeVhHNGdJQ0FxTDF4dUlDQmpiMjV6ZEhKMVkzUnZjaWh2Y0hScGIyNXpPaUJQY0hScGIyNXpLU0I3WEc0Z0lDQWdjM1Z3WlhJb2IzQjBhVzl1Y3lrN1hHNGdJQ0FnZEdocGN5NXlaV1IxWTJWeUlEMGdibVYzSUU5eWFXZHBibUZzVTFCRktHOXdkR2x2Ym5NcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ0WW1Wa2N5QjBhR1VnWkdGMFlTQm5hWFpsYmlCcGJuUnZJSFJvWlNCMGQyOHRaR2x0Wlc1emFXOXVZV3dnYzNCaFkyVWdkWE5wYm1jZ2RHaGxJRzl5YVdkcGJtRnNJRk5RUlNCdFpYUm9iMlF1WEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMkZ1ZVgwZ1EyRnlkR1Z6YVdGdUlHTnZiM0prYVc1aGRHVWdiMllnZEdocGN5QmxiV0psWkdScGJtY2dZVzVrSUdScGMzUmhibU5sSUcxaGRISnBlQ0IzYUdWeVpTQmhjSEJzYVdOaFlteGxMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSFJ5WVc1elptOXliU2dwT2lCN0lGdHJaWGs2SUhOMGNtbHVaMTA2SUUxaGRISnBlQ0I5SUh0Y2JpQWdJQ0JqYjI1emRDQmxiV0lnUFNCMGFHbHpMbkpsWkhWalpYSXVaVzFpWldRb2RHaHBjeTVrWVhSaEtUdGNiaUFnSUNCeVpYUjFjbTRnZTJScGMzUmhibU5sT2lCMGFHbHpMbkpsWkhWalpYSXVaR2x6ZEdGdVkyVXNJR1Z0WW1Wa1pHbHVaem9nWlcxaWZUdGNiaUFnZlZ4dWZWeHVYRzVqYjI1emRDQkJkbUZwYkdGaWJHVlNaV1IxWTJWeWN5QTlJSHRjYmlBZ0oxVk5RVkFuT2lCVlRVRlFVbVZrZFdObGNpeGNiaUFnSjNRdFUwNUZKem9nVkZOT1JWSmxaSFZqWlhJc1hHNGdJQ2RUVUVVbk9pQlRVRVZTWldSMVkyVnlMRnh1SUNBbmNGTlFSU2M2SUZCVFVFVlNaV1IxWTJWeUxGeHVJQ0FuVDNKcFoybHVZV3hUVUVVbk9pQlBjbWxuYVc1aGJGTlFSVkpsWkhWalpYSXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JMYm05M2JrMWxkR2h2WkhNZ1BTQnJaWGx2WmlCMGVYQmxiMllnUVhaaGFXeGhZbXhsVW1Wa2RXTmxjbk03WEc1Y2JpOHFLbHh1SUNvZ1ZXNXBabWxsWkNCamJHRnpjeUJwYlhCc1pXMWxiblJwYm1jZ1pHbG1abVZ5Wlc1MElHUnBiV1Z1YzJsdmJtRnNhWFI1SUhKbFpIVmpkR2x2YmlCdFpYUm9iMlJ6TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQmpiR0Z6Y3lCRWFXMWxibk5wYjI1aGJHbDBlVkpsWkhWalpYSmNiaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2lCN1hHNGdJSEJ5YVhaaGRHVWdjbVZrZFdObGNqb2dVbVZrZFdObGNpQjhJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCRWFXMWxibk5wYjI1aGJHbDBlVkpsWkhWalpYSXVYRzRnSUNBcUlFQndZWEpoYlNCN1lXNTVXMTE5SUdSaGRHRWdWbVZqZEc5eWN5QjBieUJsYldKbFpDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0TGJtOTNiazFsZEdodlpITjlJRzFsZEdodlpDQkZiV0psWkdScGJtY2diV1YwYUc5a0lIUnZJR0psSUdGd2NHeHBaV1JjYmlBZ0lDb2dRSEJoY21GdElIdExibTkzYmsxbGRISnBZM045SUcxbGRISnBZeUJFYVhOMFlXNWpaU0J0WlhSeWFXTWdkRzhnWW1VZ1kyOXRjSFYwWldRZ1ltVjBkMlZsYmlCbFlXTm9JRzltSUhSb1pTQjJaV04wYjNKekxseHVJQ0FnS2lCQWNHRnlZVzBnZTA5d2RHbHZibk45SUZ0dmNIUnBiMjV6WFNCUGNIUnBiMjV6SUhSdklIQmhjM01nZEc4Z2RHaGxJR2x0Y0d4bGJXVnVkR2x1WnlCbGJXSmxaR1JsY25NdVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCRWFXMWxibk5wYjI1aGJHbDBlVkpsWkhWalpYSmNiaUFnSUNvdlhHNGdJR052Ym5OMGNuVmpkRzl5S0dSaGRHRTZJR0Z1ZVZ0ZExDQnRaWFJvYjJRNklFdHViM2R1VFdWMGFHOWtjeXdnYldWMGNtbGpPaUJMYm05M2JrMWxkSEpwWTNNc0lHOXdkR2x2Ym5NL09pQlBjSFJwYjI1ektTQjdYRzRnSUNBZ1kyOXVjM1FnYldWaGMzVnlaU0E5SUc1bGR5Qk5aV0Z6ZFhKbEtHMWxkSEpwWXlrdVoyVjBUV1ZoYzNWeVpTZ3BPMXh1SUNBZ0lHeGxkQ0J6Y0dWalQzQjBhVzl1Y3lBOUlIdDlPMXh1WEc0Z0lDQWdhV1lnS0dselFtbDBRWEp5WVhsTlpYUnlhV01vYldWMGNtbGpLU2tnZTF4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhMbXhsYm1kMGFEc2dLeXRwS1NCN1hHNGdJQ0FnSUNBZ0lHUmhkR0ZiYVYwZ1BTQnVaWGNnUW1sMFFYSnlZWGtvWkdGMFlWdHBYUzVmWkdGMFlTd2daR0YwWVZ0cFhTNWZiR1Z1WjNSb0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9iV1YwYUc5a0lEMDlJQ2RWVFVGUUp5a2dlMXh1SUNBZ0lDQWdjM0JsWTA5d2RHbHZibk1nUFNCN1hHNGdJQ0FnSUNBZ0lDNHVMbnRrWVhSaE9pQmtZWFJoZlN4Y2JpQWdJQ0FnSUNBZ0xpNHVlMlJwYzNSaGJtTmxSbTQ2SUcxbFlYTjFjbVY5TEZ4dUlDQWdJQ0FnSUNBdUxpNTdia1Z3YjJOb2N6b2diM0IwYVc5dWN6OHVZM2xqYkdWemZTeGNiaUFnSUNBZ0lDQWdMaTR1YjNCMGFXOXVjeXhjYmlBZ0lDQWdJSDA3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2h0WlhSb2IyUWdQVDBnSjNRdFUwNUZKeWtnZTF4dUlDQWdJQ0FnYzNCbFkwOXdkR2x2Ym5NZ1BTQjdYRzRnSUNBZ0lDQWdJQzR1TG50a1lYUmhPaUJrWVhSaGZTeGNiaUFnSUNBZ0lDQWdMaTR1ZTJScGMzUmhibU5sT2lCdFpXRnpkWEpsZlN4Y2JpQWdJQ0FnSUNBZ0xpNHVlMmwwWlhKaGRHbHZibk02SUc5d2RHbHZibk0vTG1ONVkyeGxjeUEvUHlCMWJtUmxabWx1WldSOUxGeHVJQ0FnSUNBZ0lDQXVMaTV2Y0hScGIyNXpMRnh1SUNBZ0lDQWdmVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzFsZEdodlpDQTlQU0FuVTFCRkp5a2dlMXh1SUNBZ0lDQWdjM0JsWTA5d2RHbHZibk1nUFNCN0xpNHVlMlJoZEdFNklHUmhkR0Y5TENBdUxpNTdaR2x6ZEdGdVkyVTZJRzFsWVhOMWNtVjlMQ0F1TGk1dmNIUnBiMjV6ZlR0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdjM0JsWTA5d2RHbHZibk1nUFNCN0xpNHVlMlJoZEdFNklHUmhkR0Y5TENBdUxpNTdaR2x6ZEdGdVkyVTZJRzFsWVhOMWNtVjlMQ0F1TGk1dmNIUnBiMjV6ZlR0Y2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1eVpXUjFZMlZ5SUQwZ2JtVjNJRUYyWVdsc1lXSnNaVkpsWkhWalpYSnpXMjFsZEdodlpGMG9jM0JsWTA5d2RHbHZibk1wTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdaR0YwWVNCbmFYWmxiaUJwYm5SdklIUm9aU0IwZDI4dFpHbHRaVzV6YVc5dVlXd2djM0JoWTJVZ2RYTnBibWNnZEdobElHTm9iM05sYmlCdFpYUm9iMlF1WEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN1ltOXZiR1ZoYm4wZ2RISmhibk53YjNObElGZG9aWFJvWlhJZ2RHOGdkSEpoYm5ObWIzSnRJR052YjNKa2FXNWhkR1Z6SUhSdklHaGhkbVVnWTI5c2RXMXVjeTFtYVhKemRDQnZjbWxsYm5SaGRHbHZiaTVjYmlBZ0lDb2dRSFJvY205M2N5QjdSWEp5YjNKOUlFbG1JSFJvWlNCbGJXSmxaR1JwYm1jZ2JXVjBhRzlrSUhkaGN5QnViM1FnWm05MWJtUXVYRzRnSUNBcUlFQnlaWFIxY200Z2UyRnVlWDBnUTJGeWRHVnphV0Z1SUdOdmIzSmthVzVoZEdVZ2IyWWdkR2hwY3lCbGJXSmxaR1JwYm1jZ1lXNWtJR1JwYzNSaGJtTmxJRzFoZEhKcGVDQjNhR1Z5WlNCaGNIQnNhV05oWW14bExseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1JHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVnlYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdkSEpoYm5ObWIzSnRLSFJ5WVc1emNHOXpaVG9nWW05dmJHVmhiaUE5SUdaaGJITmxLVG9nZXlCYmEyVjVPaUJ6ZEhKcGJtZGRPaUJOWVhSeWFYZ2dmU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVjbVZrZFdObGNpQTlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVW1Wa2RXTmxjaUIzWVhNZ2JtOTBJR1JsWm1sdVpXUXVKeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiR1YwSUh0bGJXSmxaR1JwYm1jc0lHUnBjM1JoYm1ObGZTQTlJSFJvYVhNdWNtVmtkV05sY2k1MGNtRnVjMlp2Y20wb0tUdGNibHh1SUNBZ0lHbG1JQ2gwY21GdWMzQnZjMlVwSUh0Y2JpQWdJQ0FnSUdWdFltVmtaR2x1WnlBOUlIUnlZVzV6Y0c5elpVMWhkSEpwZUNobGJXSmxaR1JwYm1jcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdlMlJwYzNSaGJtTmxPaUJrYVhOMFlXNWpaU3dnWlcxaVpXUmthVzVuT2lCbGJXSmxaR1JwYm1kOU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdiV1YwY21samN5QmhkbUZwYkdGaWJHVWdZbmtnZEhsd1pTNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRCZG1GcGJHRmliR1ZFWVhSaFZIbHdaWE45SUhSNWNHVk9ZVzFsSUhSNWNHVWdibUZ0WlZ4dUlDQWdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDBnVFdWMGNtbGpJRzVoYldWeklIZG9hV05vSUdWNGNHVmpkSE1nZEdobElHZHBkbVZ1SUdSaGRHRWdkSGx3WlZ4dUlDQWdLaUJBYldWdFltVnliMllnUkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWeVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ1lYWmhhV3hoWW14bFRXVjBjbWxqYzBKNVZIbHdaU2gwZVhCbFRtRnRaVG9nUVhaaGFXeGhZbXhsUkdGMFlWUjVjR1Z6S1NCN1hHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNXJaWGx6S0VGMllXbHNZV0pzWlUxbGRISnBZM05iZEhsd1pVNWhiV1ZkS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHUnBiV1Z1YzJsdmJtRnNhWFI1SUhKbFpIVmpkR2x2YmlCdFpYUm9iMlJ6SUdGMllXbHNZV0pzWlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEpsWVdSdmJteDVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQkVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJuWlhRZ1lYWmhhV3hoWW14bFRXVjBhRzlrY3lncElIdGNiaUFnSUNCeVpYUjFjbTRnVDJKcVpXTjBMbXRsZVhNb1FYWmhhV3hoWW14bFVtVmtkV05sY25NcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRkpsZEhWeWJuTWdiV1YwY21samN5QmhkbUZwYkdGaWJHVXVYRzRnSUNBcVhHNGdJQ0FxSUVCeVpXRmtiMjVzZVZ4dUlDQWdLaUJBYldWdFltVnliMllnUkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWeVhHNGdJQ0FxTDF4dUlDQnpkR0YwYVdNZ1oyVjBJR0YyWVdsc1lXSnNaVTFsZEhKcFkzTW9LU0I3WEc0Z0lDQWdiR1YwSUdGdWN6b2djM1J5YVc1blcxMGdQU0JiWFR0Y2JpQWdJQ0JQWW1wbFkzUXVkbUZzZFdWektFRjJZV2xzWVdKc1pVMWxkSEpwWTNNcExtWnZja1ZoWTJnb0tHOWlhaWtnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWVhKeVlYa2dQU0JQWW1wbFkzUXVkbUZzZFdWektHOWlhaWs3WEc0Z0lDQWdJQ0JoYm5NZ1BTQmJMaTR1WVc1ekxDQXVMaTVoY25KaGVWMDdYRzRnSUNBZ2ZTazdYRzRnSUNBZ2NtVjBkWEp1SUdGdWN6dGNiaUFnZlZ4dWZWeHVJbDE5IiwiaW1wb3J0IHsgRGltZW5zaW9uYWxpdHlSZWR1Y2VyIH0gZnJvbSAnLi4vcmVkdWNlLWRpbWVuc2lvbmFsaXR5Jztcbi8qKlxuICogV29ya2VyIHRocmVhZCByZWNlaXZpbmcgZGF0YSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0ge2FueVtdfSBjb2x1bW5EYXRhIFNhbXBsZXMgdG8gcHJvY2Vzcy5cbiAqIEBwYXJhbSB7S25vd25NZXRob2RzfSBtZXRob2QgRW1iZWRkaW5nIG1ldGhvZC5cbiAqIEBwYXJhbSB7S25vd25NZXRyaWNzfSBtZWFzdXJlIERpc3RhbmNlIG1ldHJpYy5cbiAqIEBwYXJhbSB7YW55fSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byBhbGdvcml0aG0uXG4gKiBAcmV0dXJuIHthbnl9IEVtYmVkZGluZyAoYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlKS5cbiAqL1xuZnVuY3Rpb24gb25NZXNzYWdlKGNvbHVtbkRhdGEsIG1ldGhvZCwgbWVhc3VyZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IHJlZHVjZXIgPSBuZXcgRGltZW5zaW9uYWxpdHlSZWR1Y2VyKGNvbHVtbkRhdGEsIG1ldGhvZCwgbWVhc3VyZSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHJlZHVjZXIudHJhbnNmb3JtKHRydWUpO1xufVxuc2VsZi5vbm1lc3NhZ2UgPSAoeyBkYXRhOiB7IGNvbHVtbkRhdGEsIG1ldGhvZCwgbWVhc3VyZSwgb3B0aW9ucyB9IH0pID0+IHtcbiAgICBsZXQgZGF0YTtcbiAgICB0cnkge1xuICAgICAgICBkYXRhID0gb25NZXNzYWdlKGNvbHVtbkRhdGEsIG1ldGhvZCwgbWVhc3VyZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGRhdGEgPSB7IGVycm9yOiBlIH07XG4gICAgfVxuICAgIHNlbGYucG9zdE1lc3NhZ2Uoe1xuICAgICAgICBlcnJvcjogZGF0YS5lcnJvcixcbiAgICAgICAgZGlzdGFuY2U6IGRhdGEuZGlzdGFuY2UsXG4gICAgICAgIGVtYmVkZGluZzogZGF0YS5lbWJlZGRpbmcsXG4gICAgfSk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkdsdFpXNXphVzl1WVd4cGRIa3RjbVZrZFdObGNpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW1ScGJXVnVjMmx2Ym1Gc2FYUjVMWEpsWkhWalpYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRExIRkNRVUZ4UWl4RlFVRmxMRTFCUVUwc01FSkJRVEJDTEVOQlFVTTdRVUZITjBVN096czdPenM3TzBkQlVVYzdRVUZEU0N4VFFVRlRMRk5CUVZNc1EwRkJReXhWUVVGcFFpeEZRVUZGTEUxQlFXOUNMRVZCUVVVc1QwRkJjVUlzUlVGQlJTeFBRVUZoTzBsQlF6bEdMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzY1VKQlFYRkNMRU5CUTNaRExGVkJRVlVzUlVGRFZpeE5RVUZOTEVWQlEwNHNUMEZCVHl4RlFVTlFMRTlCUVU4c1EwRkRVaXhEUVVGRE8wbEJRMFlzVDBGQlR5eFBRVUZQTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wRkJRMnBETEVOQlFVTTdRVUZGUkN4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJRVU1zUlVGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUXl4VlFVRlZMRVZCUVVVc1RVRkJUU3hGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVVN1NVRkRiRVVzU1VGQlNTeEpRVUZ2UkN4RFFVRkRPMGxCUTNwRUxFbEJRVWM3VVVGRFJDeEpRVUZKTEVkQlFVY3NVMEZCVXl4RFFVRkRMRlZCUVZVc1JVRkJSU3hOUVVGTkxFVkJRVVVzVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMHRCUTNoRU8wbEJRVU1zVDBGQlR5eERRVUZOTEVWQlFVVTdVVUZEWml4SlFVRkpMRWRCUVVjc1JVRkJReXhMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZETEVOQlFVTTdTMEZEYmtJN1NVRkRSQ3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlEyWXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTE8xRkJRMnBDTEZGQlFWRXNSVUZCUlN4SlFVRkpMRU5CUVVNc1VVRkJVVHRSUVVOMlFpeFRRVUZUTEVWQlFVVXNTVUZCU1N4RFFVRkRMRk5CUVZNN1MwRkRNVUlzUTBGQlF5eERRVUZETzBGQlEwd3NRMEZCUXl4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHRFYVcxbGJuTnBiMjVoYkdsMGVWSmxaSFZqWlhJc0lFdHViM2R1VFdWMGFHOWtjMzBnWm5KdmJTQW5MaTR2Y21Wa2RXTmxMV1JwYldWdWMybHZibUZzYVhSNUp6dGNibWx0Y0c5eWRDQjdTMjV2ZDI1TlpYUnlhV056ZlNCbWNtOXRJQ2N1TGk5MGVYQmxaQzF0WlhSeWFXTnpKenRjYmx4dUx5b3FYRzRnS2lCWGIzSnJaWElnZEdoeVpXRmtJSEpsWTJWcGRtbHVaeUJrWVhSaElHWjFibU4wYVc5dUxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1lXNTVXMTE5SUdOdmJIVnRia1JoZEdFZ1UyRnRjR3hsY3lCMGJ5QndjbTlqWlhOekxseHVJQ29nUUhCaGNtRnRJSHRMYm05M2JrMWxkR2h2WkhOOUlHMWxkR2h2WkNCRmJXSmxaR1JwYm1jZ2JXVjBhRzlrTGx4dUlDb2dRSEJoY21GdElIdExibTkzYmsxbGRISnBZM045SUcxbFlYTjFjbVVnUkdsemRHRnVZMlVnYldWMGNtbGpMbHh1SUNvZ1FIQmhjbUZ0SUh0aGJubDlJRzl3ZEdsdmJuTWdUM0IwYVc5dWN5QjBieUJ3WVhOeklIUnZJR0ZzWjI5eWFYUm9iUzVjYmlBcUlFQnlaWFIxY200Z2UyRnVlWDBnUlcxaVpXUmthVzVuSUNoaGJtUWdaR2x6ZEdGdVkyVWdiV0YwY21sNElIZG9aWEpsSUdGd2NHeHBZMkZpYkdVcExseHVJQ292WEc1bWRXNWpkR2x2YmlCdmJrMWxjM05oWjJVb1kyOXNkVzF1UkdGMFlUb2dZVzU1VzEwc0lHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSb2IyUnpMQ0J0WldGemRYSmxPaUJMYm05M2JrMWxkSEpwWTNNc0lHOXdkR2x2Ym5NL09pQmhibmtwT2lCN1pHbHpkR0Z1WTJVL09pQmhibmtzSUdWdFltVmtaR2x1Wno4NklHRnVlWDBnZTF4dUlDQmpiMjV6ZENCeVpXUjFZMlZ5SUQwZ2JtVjNJRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2loY2JpQWdJQ0JqYjJ4MWJXNUVZWFJoTEZ4dUlDQWdJRzFsZEdodlpDeGNiaUFnSUNCdFpXRnpkWEpsTEZ4dUlDQWdJRzl3ZEdsdmJuTXNYRzRnSUNrN1hHNGdJSEpsZEhWeWJpQnlaV1IxWTJWeUxuUnlZVzV6Wm05eWJTaDBjblZsS1R0Y2JuMWNibHh1YzJWc1ppNXZibTFsYzNOaFoyVWdQU0FvZTJSaGRHRTZJSHRqYjJ4MWJXNUVZWFJoTENCdFpYUm9iMlFzSUcxbFlYTjFjbVVzSUc5d2RHbHZibk45ZlNrZ1BUNGdlMXh1SUNCc1pYUWdaR0YwWVRvZ2UyVnljbTl5UHpvZ1lXNTVMQ0JrYVhOMFlXNWpaVDg2SUdGdWVTd2daVzFpWldSa2FXNW5Qem9nWVc1NWZUdGNiaUFnZEhKNWUxeHVJQ0FnSUdSaGRHRWdQU0J2YmsxbGMzTmhaMlVvWTI5c2RXMXVSR0YwWVN3Z2JXVjBhRzlrTENCdFpXRnpkWEpsTENCdmNIUnBiMjV6S1R0Y2JpQWdmU0JqWVhSamFDQW9aVG9nWVc1NUtTQjdYRzRnSUNBZ1pHRjBZU0E5SUh0bGNuSnZjam9nWlgwN1hHNGdJSDFjYmlBZ2MyVnNaaTV3YjNOMFRXVnpjMkZuWlNoN1hHNGdJQ0FnWlhKeWIzSTZJR1JoZEdFdVpYSnliM0lzWEc0Z0lDQWdaR2x6ZEdGdVkyVTZJR1JoZEdFdVpHbHpkR0Z1WTJVc1hHNGdJQ0FnWlcxaVpXUmthVzVuT2lCa1lYUmhMbVZ0WW1Wa1pHbHVaeXhjYmlBZ2ZTazdYRzU5TzF4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbnZhciB0c25lXzEgPSByZXF1aXJlKFwiLi90c25lXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVFNORVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHNuZV8xLlRTTkU7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbmNsYXNzIFRTTkUge1xuICAgIGNvbnN0cnVjdG9yKG9wdCkge1xuICAgICAgICAvLyByZXR1cm4gMCBtZWFuIHVuaXQgc3RhbmRhcmQgZGV2aWF0aW9uIHJhbmRvbSBudW1iZXJcbiAgICAgICAgdGhpcy5yZXR1cm5WID0gZmFsc2U7XG4gICAgICAgIHRoaXMudlZhbHVlID0gMC4wO1xuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgICAgICBvcHQgPSBvcHQgfHwge307XG4gICAgICAgIHRoaXMucGVycGxleGl0eSA9IHRoaXMuZ2V0b3B0KG9wdCwgJ3BlcnBsZXhpdHknLCAzMCk7IC8vIGVmZmVjdGl2ZSBudW1iZXIgb2YgbmVhcmVzdCBuZWlnaGJvcnNcbiAgICAgICAgdGhpcy5kaW0gPSB0aGlzLmdldG9wdChvcHQsICdkaW0nLCAyKTsgLy8gYnkgZGVmYXVsdCAyLUQgdFNORVxuICAgICAgICB0aGlzLmVwc2lsb24gPSB0aGlzLmdldG9wdChvcHQsICdlcHNpbG9uJywgMTApOyAvLyBsZWFybmluZyByYXRlXG4gICAgfVxuICAgIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG1lc3NhZ2UgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHN5bnRheCBzdWdhclxuICAgIGdldG9wdChvcHQsIGZpZWxkLCBkZWZhdWx0dmFsKSB7XG4gICAgICAgIGlmIChvcHQuaGFzT3duUHJvcGVydHkoZmllbGQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0W2ZpZWxkXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0dmFsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdhdXNzUmFuZG9tKCkge1xuICAgICAgICBpZiAodGhpcy5yZXR1cm5WKSB7XG4gICAgICAgICAgICB0aGlzLnJldHVyblYgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCB2ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCByID0gdSAqIHUgKyB2ICogdjtcbiAgICAgICAgaWYgKHIgPT09IDAgfHwgciA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdhdXNzUmFuZG9tKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYyA9IE1hdGguc3FydCgtMiAqIE1hdGgubG9nKHIpIC8gcik7XG4gICAgICAgIHRoaXMudlZhbHVlID0gdiAqIGM7IC8vIGNhY2hlIHRoaXMgZm9yIG5leHQgZnVuY3Rpb24gY2FsbCBmb3IgZWZmaWNpZW5jeVxuICAgICAgICB0aGlzLnJldHVyblYgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdSAqIGM7XG4gICAgfVxuICAgIC8vIHJldHVybiByYW5kb20gbm9ybWFsIG51bWJlclxuICAgIHJhbmRuKG11LCBzdGQpIHsgcmV0dXJuIG11ICsgdGhpcy5nYXVzc1JhbmRvbSgpICogc3RkOyB9XG4gICAgLy8gdXRpbGl0aXR5IHRoYXQgY3JlYXRlcyBjb250aWd1b3VzIHZlY3RvciBvZiB6ZXJvcyBvZiBzaXplIG5cbiAgICB6ZXJvcyhuKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKG4pID09PSAndW5kZWZpbmVkJyB8fCBpc05hTihuKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBsYWNraW5nIGJyb3dzZXIgc3VwcG9ydFxuICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbaV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFycjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXQ2NEFycmF5KG4pOyAvLyB0eXBlZCBhcnJheXMgYXJlIGZhc3RlclxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHV0aWxpdHkgdGhhdCByZXR1cm5zIDJkIGFycmF5IGZpbGxlZCB3aXRoIHJhbmRvbSBudW1iZXJzXG4gICAgLy8gb3Igd2l0aCB2YWx1ZSBzLCBpZiBwcm92aWRlZFxuICAgIHJhbmRuMmQobiwgZCwgcykge1xuICAgICAgICBjb25zdCB1c2VzID0gdHlwZW9mIHMgIT09ICd1bmRlZmluZWQnO1xuICAgICAgICBjb25zdCB4ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4aGVyZSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodXNlcykge1xuICAgICAgICAgICAgICAgICAgICB4aGVyZS5wdXNoKHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgeGhlcmUucHVzaCh0aGlzLnJhbmRuKDAuMCwgMWUtNCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHgucHVzaCh4aGVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgTDIgZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9yc1xuICAgIEwyKHgxLCB4Mikge1xuICAgICAgICBjb25zdCBEID0geDEubGVuZ3RoO1xuICAgICAgICBsZXQgZCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4MWkgPSB4MVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHgyaSA9IHgyW2ldO1xuICAgICAgICAgICAgZCArPSAoeDFpIC0geDJpKSAqICh4MWkgLSB4MmkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH1cbiAgICAvLyBjb21wdXRlIHBhaXJ3aXNlIGRpc3RhbmNlIGluIGFsbCB2ZWN0b3JzIGluIFhcbiAgICB4dG9kKFgpIHtcbiAgICAgICAgY29uc3QgTiA9IFgubGVuZ3RoO1xuICAgICAgICBjb25zdCBkaXN0ID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLkwyKFhbaV0sIFhbal0pO1xuICAgICAgICAgICAgICAgIGRpc3RbaSAqIE4gKyBqXSA9IGQ7XG4gICAgICAgICAgICAgICAgZGlzdFtqICogTiArIGldID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlzdDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSAocF97aXxqfSArIHBfe2p8aX0pLygybilcbiAgICBkMnAoRCwgcGVycGxleGl0eSwgdG9sKSB7XG4gICAgICAgIGNvbnN0IG5mID0gTWF0aC5zcXJ0KEQubGVuZ3RoKTsgLy8gdGhpcyBiZXR0ZXIgYmUgYW4gaW50ZWdlclxuICAgICAgICBjb25zdCBuID0gTWF0aC5mbG9vcihuZik7XG4gICAgICAgIHRoaXMuYXNzZXJ0KG4gPT09IG5mLCAnRCBzaG91bGQgaGF2ZSBzcXVhcmUgbnVtYmVyIG9mIGVsZW1lbnRzLicpO1xuICAgICAgICBjb25zdCBoVGFyZ2V0ID0gTWF0aC5sb2cocGVycGxleGl0eSk7IC8vIHRhcmdldCBlbnRyb3B5IG9mIGRpc3RyaWJ1dGlvblxuICAgICAgICBjb25zdCBQID0gdGhpcy56ZXJvcyhuICogbik7IC8vIHRlbXBvcmFyeSBwcm9iYWJpbGl0eSBtYXRyaXhcbiAgICAgICAgY29uc3QgcHJvdyA9IHRoaXMuemVyb3Mobik7IC8vIGEgdGVtcG9yYXJ5IHN0b3JhZ2UgY29tcGFydG1lbnRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBiZXRhbWluID0gLUluZmluaXR5O1xuICAgICAgICAgICAgbGV0IGJldGFtYXggPSBJbmZpbml0eTtcbiAgICAgICAgICAgIGxldCBiZXRhID0gMTsgLy8gaW5pdGlhbCB2YWx1ZSBvZiBwcmVjaXNpb25cbiAgICAgICAgICAgIGxldCBkb25lID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBtYXh0cmllcyA9IDUwO1xuICAgICAgICAgICAgLy8gcGVyZm9ybSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgYSBzdWl0YWJsZSBwcmVjaXNpb24gYmV0YVxuICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgZW50cm9weSBvZiB0aGUgZGlzdHJpYnV0aW9uIGlzIGFwcHJvcHJpYXRlXG4gICAgICAgICAgICBsZXQgbnVtID0gMDtcbiAgICAgICAgICAgIHdoaWxlICghZG9uZSkge1xuICAgICAgICAgICAgICAgIC8vZGVidWdnZXI7XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBlbnRyb3B5IGFuZCBrZXJuZWwgcm93IHdpdGggYmV0YSBwcmVjaXNpb25cbiAgICAgICAgICAgICAgICBsZXQgcHN1bSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGogPSBNYXRoLmV4cCgtRFtpICogbiArIGpdICogYmV0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH0gLy8gd2UgZG9udCBjYXJlIGFib3V0IGRpYWdvbmFsc1xuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIHBzdW0gKz0gcGo7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSBwIGFuZCBjb21wdXRlIGVudHJvcHlcbiAgICAgICAgICAgICAgICBsZXQgbkhlcmUgPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBqO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHN1bSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSBwcm93W2pdIC8gcHN1bTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwaiA+IDFlLTcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5IZXJlIC09IHBqICogTWF0aC5sb2cocGopO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGFkanVzdCBiZXRhIGJhc2VkIG9uIHJlc3VsdFxuICAgICAgICAgICAgICAgIGlmIChuSGVyZSA+IGhUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW50cm9weSB3YXMgdG9vIGhpZ2ggKGRpc3RyaWJ1dGlvbiB0b28gZGlmZnVzZSlcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBpbmNyZWFzZSB0aGUgcHJlY2lzaW9uIGZvciBtb3JlIHBlYWt5IGRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgICAgICBiZXRhbWluID0gYmV0YTsgLy8gbW92ZSB1cCB0aGUgYm91bmRzXG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWF4ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IGJldGEgKiAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IChiZXRhICsgYmV0YW1heCkgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzZSBjYXNlLiBtYWtlIGRpc3RydWJ0aW9uIGxlc3MgcGVha3lcbiAgICAgICAgICAgICAgICAgICAgYmV0YW1heCA9IGJldGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWluID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSBiZXRhIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSAoYmV0YSArIGJldGFtaW4pIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBzdG9wcGluZyBjb25kaXRpb25zOiB0b28gbWFueSB0cmllcyBvciBnb3QgYSBnb29kIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIG51bSsrO1xuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhuSGVyZSAtIGhUYXJnZXQpIDwgdG9sKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobnVtID49IG1heHRyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhIHBvaW50ICcgKyBpICsgJyBnZXRzIHByZWNpc2lvbiAnICsgYmV0YSArICcgYWZ0ZXIgJyArIG51bSArICcgYmluYXJ5IHNlYXJjaCBzdGVwcy4nKTtcbiAgICAgICAgICAgIC8vIGNvcHkgb3ZlciB0aGUgZmluYWwgcHJvdyB0byBQIGF0IHJvdyBpXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgIFBbaSAqIG4gKyBqXSA9IHByb3dbal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gLy8gZW5kIGxvb3Agb3ZlciBleGFtcGxlcyBpXG4gICAgICAgIC8vIHN5bW1ldHJpemUgUCBhbmQgbm9ybWFsaXplIGl0IHRvIHN1bSB0byAxIG92ZXIgYWxsIGlqXG4gICAgICAgIGNvbnN0IHBPdXQgPSB0aGlzLnplcm9zKG4gKiBuKTtcbiAgICAgICAgY29uc3QgTjIgPSBuICogMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgcE91dFtpICogbiArIGpdID0gTWF0aC5tYXgoKFBbaSAqIG4gKyBqXSArIFBbaiAqIG4gKyBpXSkgLyBOMiwgMWUtMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcE91dDtcbiAgICB9XG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uXG4gICAgc2lnbih4KSB7IHJldHVybiB4ID4gMCA/IDEgOiB4IDwgMCA/IC0xIDogMDsgfVxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgYSBzZXQgb2YgaGlnaC1kaW1lbnNpb25hbCBwb2ludHNcbiAgICAvLyBhbmQgY3JlYXRlcyBtYXRyaXggUCBmcm9tIHRoZW0gdXNpbmcgZ2F1c3NpYW4ga2VybmVsXG4gICAgaW5pdERhdGFSYXcoWCkge1xuICAgICAgICBjb25zdCBOID0gWC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IEQgPSBYWzBdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIHRoaXMuYXNzZXJ0KEQgPiAwLCAnIFhbMF0gaXMgZW1wdHk/IFdoZXJlIGlzIHRoZSBkYXRhPycpO1xuICAgICAgICBjb25zdCBkaXN0cyA9IHRoaXMueHRvZChYKTsgLy8gY29udmVydCBYIHRvIGRpc3RhbmNlcyB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICAgICAgdGhpcy5QID0gdGhpcy5kMnAoZGlzdHMsIHRoaXMucGVycGxleGl0eSwgMWUtNCk7IC8vIGF0dGFjaCB0byBvYmplY3RcbiAgICAgICAgdGhpcy5OID0gTjsgLy8gYmFjayB1cCB0aGUgc2l6ZSBvZiB0aGUgZGF0YXNldFxuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIGdpdmVuIGRpc3RhbmNlIG1hdHJpeCBhbmQgY3JlYXRlc1xuICAgIC8vIG1hdHJpeCBQIGZyb20gdGhlbS5cbiAgICAvLyBEIGlzIGFzc3VtZWQgdG8gYmUgcHJvdmlkZWQgYXMgYSBsaXN0IG9mIGxpc3RzLCBhbmQgc2hvdWxkIGJlIHN5bW1ldHJpY1xuICAgIGluaXREYXRhRGlzdChEKSB7XG4gICAgICAgIGNvbnN0IE4gPSBELmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIC8vIGNvbnZlcnQgRCB0byBhIChmYXN0KSB0eXBlZCBhcnJheSB2ZXJzaW9uXG4gICAgICAgIGNvbnN0IGRpc3RzID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBEW2ldW2pdO1xuICAgICAgICAgICAgICAgIGRpc3RzW2kgKiBOICsgal0gPSBkO1xuICAgICAgICAgICAgICAgIGRpc3RzW2ogKiBOICsgaV0gPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuUCA9IHRoaXMuZDJwKGRpc3RzLCB0aGlzLnBlcnBsZXhpdHksIDFlLTQpO1xuICAgICAgICB0aGlzLk4gPSBOO1xuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gKHJlKWluaXRpYWxpemVzIHRoZSBzb2x1dGlvbiB0byByYW5kb21cbiAgICBpbml0U29sdXRpb24oKSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHJhbmRvbSBzb2x1dGlvbiB0byB0LVNORVxuICAgICAgICB0aGlzLlkgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSk7IC8vIHRoZSBzb2x1dGlvblxuICAgICAgICB0aGlzLmdhaW5zID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0sIDEuMCk7IC8vIHN0ZXAgZ2FpbnMgdG8gYWNjZWxlcmF0ZSBwcm9ncmVzcyBpbiB1bmNoYW5naW5nIGRpcmVjdGlvbnNcbiAgICAgICAgdGhpcy55c3RlcCA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltLCAwLjApOyAvLyBtb21lbnR1bSBhY2N1bXVsYXRvclxuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgIH1cbiAgICAvLyByZXR1cm4gcG9pbnRlciB0byBjdXJyZW50IHNvbHV0aW9uXG4gICAgZ2V0U29sdXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLlk7XG4gICAgfVxuICAgIC8vIHBlcmZvcm0gYSBzaW5nbGUgc3RlcCBvZiBvcHRpbWl6YXRpb24gdG8gaW1wcm92ZSB0aGUgZW1iZWRkaW5nXG4gICAgc3RlcCgpIHtcbiAgICAgICAgdGhpcy5pdGVyICs9IDE7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgICBjb25zdCBjb3N0ID0gY2cuY29zdDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IGNnLmdyYWQ7XG4gICAgICAgIC8vIHBlcmZvcm0gZ3JhZGllbnQgc3RlcFxuICAgICAgICBjb25zdCB5bWVhbiA9IHRoaXMuemVyb3ModGhpcy5kaW0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2lkID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaWQgPSB0aGlzLnlzdGVwW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdhaW5pZCA9IHRoaXMuZ2FpbnNbaV1bZF07XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBnYWluIHVwZGF0ZVxuICAgICAgICAgICAgICAgIGxldCBuZXdnYWluID0gdGhpcy5zaWduKGdpZCkgPT09IHRoaXMuc2lnbihzaWQpID8gZ2FpbmlkICogMC44IDogZ2FpbmlkICsgMC4yO1xuICAgICAgICAgICAgICAgIGlmIChuZXdnYWluIDwgMC4wMSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdnYWluID0gMC4wMTtcbiAgICAgICAgICAgICAgICB9IC8vIGNsYW1wXG4gICAgICAgICAgICAgICAgdGhpcy5nYWluc1tpXVtkXSA9IG5ld2dhaW47IC8vIHN0b3JlIGZvciBuZXh0IHR1cm5cbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIG1vbWVudHVtIHN0ZXAgZGlyZWN0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgbW9tdmFsID0gdGhpcy5pdGVyIDwgMjUwID8gMC41IDogMC44O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3NpZCA9IG1vbXZhbCAqIHNpZCAtIHRoaXMuZXBzaWxvbiAqIG5ld2dhaW4gKiBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIHRoaXMueXN0ZXBbaV1bZF0gPSBuZXdzaWQ7IC8vIHJlbWVtYmVyIHRoZSBzdGVwIHdlIHRvb2tcbiAgICAgICAgICAgICAgICAvLyBzdGVwIVxuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSArPSBuZXdzaWQ7XG4gICAgICAgICAgICAgICAgeW1lYW5bZF0gKz0gdGhpcy5ZW2ldW2RdOyAvLyBhY2N1bXVsYXRlIG1lYW4gc28gdGhhdCB3ZSBjYW4gY2VudGVyIGxhdGVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVwcm9qZWN0IFkgdG8gYmUgemVybyBtZWFuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gLT0geW1lYW5bZF0gLyBOO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vaWYodGhpcy5pdGVyJTEwMD09PTApIGNvbnNvbGUubG9nKCdpdGVyICcgKyB0aGlzLml0ZXIgKyAnLCBjb3N0OiAnICsgY29zdCk7XG4gICAgICAgIHJldHVybiBjb3N0OyAvLyByZXR1cm4gY3VycmVudCBjb3N0XG4gICAgfVxuICAgIC8vIGZvciBkZWJ1Z2dpbmc6IGdyYWRpZW50IGNoZWNrXG4gICAgZGVidWdHcmFkKCkge1xuICAgICAgICBjb25zdCBOID0gdGhpcy5OO1xuICAgICAgICBjb25zdCBjZyA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTsgLy8gZXZhbHVhdGUgZ3JhZGllbnRcbiAgICAgICAgY29uc3QgY29zdCA9IGNnLmNvc3Q7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBjZy5ncmFkO1xuICAgICAgICBjb25zdCBlID0gMWUtNTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHlvbGQgPSB0aGlzLllbaV1bZF07XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCArIGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY2cwID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQgLSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNnMSA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmFseXRpYyA9IGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3QgbnVtZXJpY2FsID0gKGNnMC5jb3N0IC0gY2cxLmNvc3QpIC8gKDIgKiBlKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpICsgJywnICsgZCArICc6IGdyYWRjaGVjayBhbmFseXRpYzogJyArIGFuYWx5dGljICsgJyB2cy4gbnVtZXJpY2FsOiAnICsgbnVtZXJpY2FsKTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHJldHVybiBjb3N0IGFuZCBncmFkaWVudCwgZ2l2ZW4gYW4gYXJyYW5nZW1lbnRcbiAgICBjb3N0R3JhZChZKSB7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGRpbSA9IHRoaXMuZGltOyAvLyBkaW0gb2Ygb3V0cHV0IHNwYWNlXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLlA7XG4gICAgICAgIGNvbnN0IHBtdWwgPSB0aGlzLml0ZXIgPCAxMDAgPyA0IDogMTsgLy8gdHJpY2sgdGhhdCBoZWxwcyB3aXRoIGxvY2FsIG9wdGltYVxuICAgICAgICAvLyBjb21wdXRlIGN1cnJlbnQgUSBkaXN0cmlidXRpb24sIHVubm9ybWFsaXplZCBmaXJzdFxuICAgICAgICBjb25zdCBxdUFyciA9IHRoaXMuemVyb3MoTiAqIE4pO1xuICAgICAgICBsZXQgcXN1bSA9IDAuMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGxldCBkc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGhlcmUgPSBZW2ldW2RdIC0gWVtqXVtkXTtcbiAgICAgICAgICAgICAgICAgICAgZHN1bSArPSBkaGVyZSAqIGRoZXJlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBxdSA9IDEuMCAvICgxLjAgKyBkc3VtKTsgLy8gU3R1ZGVudCB0LWRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgIHF1QXJyW2kgKiBOICsgal0gPSBxdTtcbiAgICAgICAgICAgICAgICBxdUFycltqICogTiArIGldID0gcXU7XG4gICAgICAgICAgICAgICAgcXN1bSArPSAyICogcXU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm9ybWFsaXplIFEgZGlzdHJpYnV0aW9uIHRvIHN1bSB0byAxXG4gICAgICAgIGNvbnN0IE5OID0gTiAqIE47XG4gICAgICAgIGNvbnN0IFEgPSB0aGlzLnplcm9zKE5OKTtcbiAgICAgICAgZm9yIChsZXQgcSA9IDA7IHEgPCBOTjsgcSsrKSB7XG4gICAgICAgICAgICBRW3FdID0gTWF0aC5tYXgocXVBcnJbcV0gLyBxc3VtLCAxZS0xMDApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb3N0ID0gMC4wO1xuICAgICAgICBjb25zdCBncmFkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBnc3VtID0gbmV3IEFycmF5KGRpbSk7IC8vIGluaXQgZ3JhZCBmb3IgcG9pbnQgaVxuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGdzdW1bZF0gPSAwLjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvc3QgKz0gLVBbaSAqIE4gKyBqXSAqIE1hdGgubG9nKFFbaSAqIE4gKyBqXSk7IC8vIGFjY3VtdWxhdGUgY29zdCAodGhlIG5vbi1jb25zdGFudCBwb3J0aW9uIGF0IGxlYXN0Li4uKVxuICAgICAgICAgICAgICAgIGNvbnN0IHByZW11bHQgPSA0ICogKHBtdWwgKiBQW2kgKiBOICsgal0gLSBRW2kgKiBOICsgal0pICogcXVBcnJbaSAqIE4gKyBqXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGdzdW1bZF0gKz0gcHJlbXVsdCAqIChZW2ldW2RdIC0gWVtqXVtkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhZC5wdXNoKGdzdW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNvc3QsIGdyYWQgfTtcbiAgICB9XG59XG5leHBvcnRzLlRTTkUgPSBUU05FO1xuIiwiY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc0FueUFycmF5KG9iamVjdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmplY3QpLmVuZHNXaXRoKCdBcnJheV0nKTtcbn1cbiIsIi8qKlxuICogQ2FsY3VsYXRlIGN1cnJlbnQgZXJyb3JcbiAqIEBpZ25vcmVcbiAqIEBwYXJhbSB7e3g6QXJyYXk8bnVtYmVyPiwgeTpBcnJheTxudW1iZXI+fX0gZGF0YSAtIEFycmF5IG9mIHBvaW50cyB0byBmaXQgaW4gdGhlIGZvcm1hdCBbeDEsIHgyLCAuLi4gXSwgW3kxLCB5MiwgLi4uIF1cbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gcGFyYW1ldGVycyAtIEFycmF5IG9mIGN1cnJlbnQgcGFyYW1ldGVyIHZhbHVlc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlcnJvckNhbGN1bGF0aW9uKFxuICBkYXRhLFxuICBwYXJhbWV0ZXJzLFxuICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4pIHtcbiAgbGV0IGVycm9yID0gMDtcbiAgY29uc3QgZnVuYyA9IHBhcmFtZXRlcml6ZWRGdW5jdGlvbihwYXJhbWV0ZXJzKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEueC5sZW5ndGg7IGkrKykge1xuICAgIGVycm9yICs9IE1hdGguYWJzKGRhdGEueVtpXSAtIGZ1bmMoZGF0YS54W2ldKSk7XG4gIH1cblxuICByZXR1cm4gZXJyb3I7XG59XG4iLCJjb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYW4gQXJyYXkgKGFycmF5IG9yIHR5cGVkIGFycmF5KS5cbiAqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBPYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbnlBcnJheSh2YWx1ZSkge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKS5lbmRzV2l0aCgnQXJyYXldJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJjb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYW4gQXJyYXkgKGFycmF5IG9yIHR5cGVkIGFycmF5KS5cbiAqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBPYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbnlBcnJheSh2YWx1ZSkge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKS5lbmRzV2l0aCgnQXJyYXldJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJjb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYW4gQXJyYXkgKGFycmF5IG9yIHR5cGVkIGFycmF5KS5cbiAqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBPYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbnlBcnJheSh2YWx1ZSkge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKS5lbmRzV2l0aCgnQXJyYXldJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJjb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYW4gQXJyYXkgKGFycmF5IG9yIHR5cGVkIGFycmF5KS5cbiAqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBPYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbnlBcnJheSh2YWx1ZSkge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKS5lbmRzV2l0aCgnQXJyYXldJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgeyBpc0FueUFycmF5IH0gZnJvbSAnaXMtYW55LWFycmF5JztcbmltcG9ydCBtYXggZnJvbSAnbWwtYXJyYXktbWF4JztcbmltcG9ydCBtaW4gZnJvbSAnbWwtYXJyYXktbWluJztcblxuZnVuY3Rpb24gcmVzY2FsZShpbnB1dCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgaWYgKCFpc0FueUFycmF5KGlucHV0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfSBlbHNlIGlmIChpbnB1dC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgdmFyIG91dHB1dDtcblxuICBpZiAob3B0aW9ucy5vdXRwdXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghaXNBbnlBcnJheShvcHRpb25zLm91dHB1dCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ291dHB1dCBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBpZiBzcGVjaWZpZWQnKTtcbiAgICB9XG5cbiAgICBvdXRwdXQgPSBvcHRpb25zLm91dHB1dDtcbiAgfSBlbHNlIHtcbiAgICBvdXRwdXQgPSBuZXcgQXJyYXkoaW5wdXQubGVuZ3RoKTtcbiAgfVxuXG4gIHZhciBjdXJyZW50TWluID0gbWluKGlucHV0KTtcbiAgdmFyIGN1cnJlbnRNYXggPSBtYXgoaW5wdXQpO1xuXG4gIGlmIChjdXJyZW50TWluID09PSBjdXJyZW50TWF4KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbmltdW0gYW5kIG1heGltdW0gaW5wdXQgdmFsdWVzIGFyZSBlcXVhbC4gQ2Fubm90IHJlc2NhbGUgYSBjb25zdGFudCBhcnJheScpO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1pbiA9IG9wdGlvbnMubWluLFxuICAgICAgbWluVmFsdWUgPSBfb3B0aW9ucyRtaW4gPT09IHZvaWQgMCA/IG9wdGlvbnMuYXV0b01pbk1heCA/IGN1cnJlbnRNaW4gOiAwIDogX29wdGlvbnMkbWluLFxuICAgICAgX29wdGlvbnMkbWF4ID0gb3B0aW9ucy5tYXgsXG4gICAgICBtYXhWYWx1ZSA9IF9vcHRpb25zJG1heCA9PT0gdm9pZCAwID8gb3B0aW9ucy5hdXRvTWluTWF4ID8gY3VycmVudE1heCA6IDEgOiBfb3B0aW9ucyRtYXg7XG5cbiAgaWYgKG1pblZhbHVlID49IG1heFZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBvcHRpb24gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4IG9wdGlvbicpO1xuICB9XG5cbiAgdmFyIGZhY3RvciA9IChtYXhWYWx1ZSAtIG1pblZhbHVlKSAvIChjdXJyZW50TWF4IC0gY3VycmVudE1pbik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIG91dHB1dFtpXSA9IChpbnB1dFtpXSAtIGN1cnJlbnRNaW4pICogZmFjdG9yICsgbWluVmFsdWU7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5leHBvcnQgeyByZXNjYWxlIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG5mdW5jdGlvbiBtaW4oaW5wdXQpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gIGlmICghaXNBbnlBcnJheShpbnB1dCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBpZiAoaW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRmcm9tSW5kZXggPSBvcHRpb25zLmZyb21JbmRleCxcbiAgICAgIGZyb21JbmRleCA9IF9vcHRpb25zJGZyb21JbmRleCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJGZyb21JbmRleCxcbiAgICAgIF9vcHRpb25zJHRvSW5kZXggPSBvcHRpb25zLnRvSW5kZXgsXG4gICAgICB0b0luZGV4ID0gX29wdGlvbnMkdG9JbmRleCA9PT0gdm9pZCAwID8gaW5wdXQubGVuZ3RoIDogX29wdGlvbnMkdG9JbmRleDtcblxuICBpZiAoZnJvbUluZGV4IDwgMCB8fCBmcm9tSW5kZXggPj0gaW5wdXQubGVuZ3RoIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGZyb21JbmRleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Zyb21JbmRleCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzbWFsbGVyIHRoYW4gbGVuZ3RoJyk7XG4gIH1cblxuICBpZiAodG9JbmRleCA8PSBmcm9tSW5kZXggfHwgdG9JbmRleCA+IGlucHV0Lmxlbmd0aCB8fCAhTnVtYmVyLmlzSW50ZWdlcih0b0luZGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgnKTtcbiAgfVxuXG4gIHZhciBtaW5WYWx1ZSA9IGlucHV0W2Zyb21JbmRleF07XG5cbiAgZm9yICh2YXIgaSA9IGZyb21JbmRleCArIDE7IGkgPCB0b0luZGV4OyBpKyspIHtcbiAgICBpZiAoaW5wdXRbaV0gPCBtaW5WYWx1ZSkgbWluVmFsdWUgPSBpbnB1dFtpXTtcbiAgfVxuXG4gIHJldHVybiBtaW5WYWx1ZTtcbn1cblxuZXhwb3J0IHsgbWluIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG5mdW5jdGlvbiBtYXgoaW5wdXQpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gIGlmICghaXNBbnlBcnJheShpbnB1dCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBpZiAoaW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRmcm9tSW5kZXggPSBvcHRpb25zLmZyb21JbmRleCxcbiAgICAgIGZyb21JbmRleCA9IF9vcHRpb25zJGZyb21JbmRleCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJGZyb21JbmRleCxcbiAgICAgIF9vcHRpb25zJHRvSW5kZXggPSBvcHRpb25zLnRvSW5kZXgsXG4gICAgICB0b0luZGV4ID0gX29wdGlvbnMkdG9JbmRleCA9PT0gdm9pZCAwID8gaW5wdXQubGVuZ3RoIDogX29wdGlvbnMkdG9JbmRleDtcblxuICBpZiAoZnJvbUluZGV4IDwgMCB8fCBmcm9tSW5kZXggPj0gaW5wdXQubGVuZ3RoIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGZyb21JbmRleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Zyb21JbmRleCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzbWFsbGVyIHRoYW4gbGVuZ3RoJyk7XG4gIH1cblxuICBpZiAodG9JbmRleCA8PSBmcm9tSW5kZXggfHwgdG9JbmRleCA+IGlucHV0Lmxlbmd0aCB8fCAhTnVtYmVyLmlzSW50ZWdlcih0b0luZGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgnKTtcbiAgfVxuXG4gIHZhciBtYXhWYWx1ZSA9IGlucHV0W2Zyb21JbmRleF07XG5cbiAgZm9yICh2YXIgaSA9IGZyb21JbmRleCArIDE7IGkgPCB0b0luZGV4OyBpKyspIHtcbiAgICBpZiAoaW5wdXRbaV0gPiBtYXhWYWx1ZSkgbWF4VmFsdWUgPSBpbnB1dFtpXTtcbiAgfVxuXG4gIHJldHVybiBtYXhWYWx1ZTtcbn1cblxuZXhwb3J0IHsgbWF4IGFzIGRlZmF1bHQgfTtcbiIsImNvbnN0IGluZGVudCA9ICcgJy5yZXBlYXQoMik7XG5jb25zdCBpbmRlbnREYXRhID0gJyAnLnJlcGVhdCg0KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3RNYXRyaXgoKSB7XG4gIHJldHVybiBpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnModGhpcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnMobWF0cml4LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG1heFJvd3MgPSAxNSxcbiAgICBtYXhDb2x1bW5zID0gMTAsXG4gICAgbWF4TnVtU2l6ZSA9IDgsXG4gICAgcGFkTWludXMgPSAnYXV0bycsXG4gIH0gPSBvcHRpb25zO1xuICByZXR1cm4gYCR7bWF0cml4LmNvbnN0cnVjdG9yLm5hbWV9IHtcbiR7aW5kZW50fVtcbiR7aW5kZW50RGF0YX0ke2luc3BlY3REYXRhKG1hdHJpeCwgbWF4Um93cywgbWF4Q29sdW1ucywgbWF4TnVtU2l6ZSwgcGFkTWludXMpfVxuJHtpbmRlbnR9XVxuJHtpbmRlbnR9cm93czogJHttYXRyaXgucm93c31cbiR7aW5kZW50fWNvbHVtbnM6ICR7bWF0cml4LmNvbHVtbnN9XG59YDtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdERhdGEobWF0cml4LCBtYXhSb3dzLCBtYXhDb2x1bW5zLCBtYXhOdW1TaXplLCBwYWRNaW51cykge1xuICBjb25zdCB7IHJvd3MsIGNvbHVtbnMgfSA9IG1hdHJpeDtcbiAgY29uc3QgbWF4SSA9IE1hdGgubWluKHJvd3MsIG1heFJvd3MpO1xuICBjb25zdCBtYXhKID0gTWF0aC5taW4oY29sdW1ucywgbWF4Q29sdW1ucyk7XG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gIGlmIChwYWRNaW51cyA9PT0gJ2F1dG8nKSB7XG4gICAgcGFkTWludXMgPSBmYWxzZTtcbiAgICBsb29wOiBmb3IgKGxldCBpID0gMDsgaSA8IG1heEk7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXhKOyBqKyspIHtcbiAgICAgICAgaWYgKG1hdHJpeC5nZXQoaSwgaikgPCAwKSB7XG4gICAgICAgICAgcGFkTWludXMgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrIGxvb3A7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG1heEk7IGkrKykge1xuICAgIGxldCBsaW5lID0gW107XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXhKOyBqKyspIHtcbiAgICAgIGxpbmUucHVzaChmb3JtYXROdW1iZXIobWF0cml4LmdldChpLCBqKSwgbWF4TnVtU2l6ZSwgcGFkTWludXMpKTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2goYCR7bGluZS5qb2luKCcgJyl9YCk7XG4gIH1cbiAgaWYgKG1heEogIT09IGNvbHVtbnMpIHtcbiAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdICs9IGAgLi4uICR7Y29sdW1ucyAtIG1heENvbHVtbnN9IG1vcmUgY29sdW1uc2A7XG4gIH1cbiAgaWYgKG1heEkgIT09IHJvd3MpIHtcbiAgICByZXN1bHQucHVzaChgLi4uICR7cm93cyAtIG1heFJvd3N9IG1vcmUgcm93c2ApO1xuICB9XG4gIHJldHVybiByZXN1bHQuam9pbihgXFxuJHtpbmRlbnREYXRhfWApO1xufVxuXG5mdW5jdGlvbiBmb3JtYXROdW1iZXIobnVtLCBtYXhOdW1TaXplLCBwYWRNaW51cykge1xuICByZXR1cm4gKFxuICAgIG51bSA+PSAwICYmIHBhZE1pbnVzXG4gICAgICA/IGAgJHtmb3JtYXROdW1iZXIyKG51bSwgbWF4TnVtU2l6ZSAtIDEpfWBcbiAgICAgIDogZm9ybWF0TnVtYmVyMihudW0sIG1heE51bVNpemUpXG4gICkucGFkRW5kKG1heE51bVNpemUpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXROdW1iZXIyKG51bSwgbGVuKSB7XG4gIC8vIHNtYWxsLmxlbmd0aCBudW1iZXJzIHNob3VsZCBiZSBhcyBpc1xuICBsZXQgc3RyID0gbnVtLnRvU3RyaW5nKCk7XG4gIGlmIChzdHIubGVuZ3RoIDw9IGxlbikgcmV0dXJuIHN0cjtcblxuICAvLyAoNyknMC4wMDEyMycgaXMgYmV0dGVyIHRoZW4gKDcpJzEuMjNlLTInXG4gIC8vICg4KScwLjAwMDEyMycgaXMgd29yc2UgdGhlbiAoNyknMS4yM2UtMycsXG4gIGxldCBmaXggPSBudW0udG9GaXhlZChsZW4pO1xuICBpZiAoZml4Lmxlbmd0aCA+IGxlbikge1xuICAgIGZpeCA9IG51bS50b0ZpeGVkKE1hdGgubWF4KDAsIGxlbiAtIChmaXgubGVuZ3RoIC0gbGVuKSkpO1xuICB9XG4gIGlmIChcbiAgICBmaXgubGVuZ3RoIDw9IGxlbiAmJlxuICAgICFmaXguc3RhcnRzV2l0aCgnMC4wMDAnKSAmJlxuICAgICFmaXguc3RhcnRzV2l0aCgnLTAuMDAwJylcbiAgKSB7XG4gICAgcmV0dXJuIGZpeDtcbiAgfVxuXG4gIC8vIHdlbGwsIGlmIGl0J3Mgc3RpbGwgdG9vIGxvbmcgdGhlIHVzZXIgc2hvdWxkJ3ZlIHVzZWQgbG9uZ2VyIG51bWJlcnNcbiAgbGV0IGV4cCA9IG51bS50b0V4cG9uZW50aWFsKGxlbik7XG4gIGlmIChleHAubGVuZ3RoID4gbGVuKSB7XG4gICAgZXhwID0gbnVtLnRvRXhwb25lbnRpYWwoTWF0aC5tYXgoMCwgbGVuIC0gKGV4cC5sZW5ndGggLSBsZW4pKSk7XG4gIH1cbiAgcmV0dXJuIGV4cC5zbGljZSgwKTtcbn1cbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBDaGVjayB0aGF0IGEgcm93IGluZGV4IGlzIG5vdCBvdXQgb2YgYm91bmRzXG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW291dGVyXVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSb3dJbmRleChtYXRyaXgsIGluZGV4LCBvdXRlcikge1xuICBsZXQgbWF4ID0gb3V0ZXIgPyBtYXRyaXgucm93cyA6IG1hdHJpeC5yb3dzIC0gMTtcbiAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IG1heCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdSb3cgaW5kZXggb3V0IG9mIHJhbmdlJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQ2hlY2sgdGhhdCBhIGNvbHVtbiBpbmRleCBpcyBub3Qgb3V0IG9mIGJvdW5kc1xuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvdXRlcl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ29sdW1uSW5kZXgobWF0cml4LCBpbmRleCwgb3V0ZXIpIHtcbiAgbGV0IG1heCA9IG91dGVyID8gbWF0cml4LmNvbHVtbnMgOiBtYXRyaXguY29sdW1ucyAtIDE7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZScpO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIENoZWNrIHRoYXQgdGhlIHByb3ZpZGVkIHZlY3RvciBpcyBhbiBhcnJheSB3aXRoIHRoZSByaWdodCBsZW5ndGhcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXhcbiAqIEBwYXJhbSB7QXJyYXl8TWF0cml4fSB2ZWN0b3JcbiAqIEByZXR1cm4ge0FycmF5fVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUm93VmVjdG9yKG1hdHJpeCwgdmVjdG9yKSB7XG4gIGlmICh2ZWN0b3IudG8xREFycmF5KSB7XG4gICAgdmVjdG9yID0gdmVjdG9yLnRvMURBcnJheSgpO1xuICB9XG4gIGlmICh2ZWN0b3IubGVuZ3RoICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFxuICAgICAgJ3ZlY3RvciBzaXplIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG51bWJlciBvZiBjb2x1bW5zJyxcbiAgICApO1xuICB9XG4gIHJldHVybiB2ZWN0b3I7XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIENoZWNrIHRoYXQgdGhlIHByb3ZpZGVkIHZlY3RvciBpcyBhbiBhcnJheSB3aXRoIHRoZSByaWdodCBsZW5ndGhcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXhcbiAqIEBwYXJhbSB7QXJyYXl8TWF0cml4fSB2ZWN0b3JcbiAqIEByZXR1cm4ge0FycmF5fVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ29sdW1uVmVjdG9yKG1hdHJpeCwgdmVjdG9yKSB7XG4gIGlmICh2ZWN0b3IudG8xREFycmF5KSB7XG4gICAgdmVjdG9yID0gdmVjdG9yLnRvMURBcnJheSgpO1xuICB9XG4gIGlmICh2ZWN0b3IubGVuZ3RoICE9PSBtYXRyaXgucm93cykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd2ZWN0b3Igc2l6ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2Ygcm93cycpO1xuICB9XG4gIHJldHVybiB2ZWN0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1Jvd0luZGljZXMobWF0cml4LCByb3dJbmRpY2VzKSB7XG4gIGlmICghaXNBbnlBcnJheShyb3dJbmRpY2VzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JvdyBpbmRpY2VzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm93SW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChyb3dJbmRpY2VzW2ldIDwgMCB8fCByb3dJbmRpY2VzW2ldID49IG1hdHJpeC5yb3dzKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigncm93IGluZGljZXMgYXJlIG91dCBvZiByYW5nZScpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDb2x1bW5JbmRpY2VzKG1hdHJpeCwgY29sdW1uSW5kaWNlcykge1xuICBpZiAoIWlzQW55QXJyYXkoY29sdW1uSW5kaWNlcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjb2x1bW4gaW5kaWNlcyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbkluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoY29sdW1uSW5kaWNlc1tpXSA8IDAgfHwgY29sdW1uSW5kaWNlc1tpXSA+PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2NvbHVtbiBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmFuZ2UobWF0cml4LCBzdGFydFJvdywgZW5kUm93LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoICE9PSA1KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2V4cGVjdGVkIDQgYXJndW1lbnRzJyk7XG4gIH1cbiAgY2hlY2tOdW1iZXIoJ3N0YXJ0Um93Jywgc3RhcnRSb3cpO1xuICBjaGVja051bWJlcignZW5kUm93JywgZW5kUm93KTtcbiAgY2hlY2tOdW1iZXIoJ3N0YXJ0Q29sdW1uJywgc3RhcnRDb2x1bW4pO1xuICBjaGVja051bWJlcignZW5kQ29sdW1uJywgZW5kQ29sdW1uKTtcbiAgaWYgKFxuICAgIHN0YXJ0Um93ID4gZW5kUm93IHx8XG4gICAgc3RhcnRDb2x1bW4gPiBlbmRDb2x1bW4gfHxcbiAgICBzdGFydFJvdyA8IDAgfHxcbiAgICBzdGFydFJvdyA+PSBtYXRyaXgucm93cyB8fFxuICAgIGVuZFJvdyA8IDAgfHxcbiAgICBlbmRSb3cgPj0gbWF0cml4LnJvd3MgfHxcbiAgICBzdGFydENvbHVtbiA8IDAgfHxcbiAgICBzdGFydENvbHVtbiA+PSBtYXRyaXguY29sdW1ucyB8fFxuICAgIGVuZENvbHVtbiA8IDAgfHxcbiAgICBlbmRDb2x1bW4gPj0gbWF0cml4LmNvbHVtbnNcbiAgKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1N1Ym1hdHJpeCBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3QXJyYXkobGVuZ3RoLCB2YWx1ZSA9IDApIHtcbiAgbGV0IGFycmF5ID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBhcnJheS5wdXNoKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrTnVtYmVyKG5hbWUsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyYCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrTm9uRW1wdHkobWF0cml4KSB7XG4gIGlmIChtYXRyaXguaXNFbXB0eSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFbXB0eSBtYXRyaXggaGFzIG5vIGVsZW1lbnRzIHRvIGluZGV4Jyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuaW1wb3J0IHJlc2NhbGUgZnJvbSAnbWwtYXJyYXktcmVzY2FsZSc7XG5cbmltcG9ydCB7IGluc3BlY3RNYXRyaXgsIGluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyB9IGZyb20gJy4vaW5zcGVjdCc7XG5pbXBvcnQgeyBpbnN0YWxsTWF0aE9wZXJhdGlvbnMgfSBmcm9tICcuL21hdGhPcGVyYXRpb25zJztcbmltcG9ydCB7XG4gIHN1bUJ5Um93LFxuICBzdW1CeUNvbHVtbixcbiAgc3VtQWxsLFxuICBwcm9kdWN0QnlSb3csXG4gIHByb2R1Y3RCeUNvbHVtbixcbiAgcHJvZHVjdEFsbCxcbiAgdmFyaWFuY2VCeVJvdyxcbiAgdmFyaWFuY2VCeUNvbHVtbixcbiAgdmFyaWFuY2VBbGwsXG4gIGNlbnRlckJ5Um93LFxuICBjZW50ZXJCeUNvbHVtbixcbiAgY2VudGVyQWxsLFxuICBzY2FsZUJ5Um93LFxuICBzY2FsZUJ5Q29sdW1uLFxuICBzY2FsZUFsbCxcbiAgZ2V0U2NhbGVCeVJvdyxcbiAgZ2V0U2NhbGVCeUNvbHVtbixcbiAgZ2V0U2NhbGVBbGwsXG59IGZyb20gJy4vc3RhdCc7XG5pbXBvcnQge1xuICBjaGVja1Jvd1ZlY3RvcixcbiAgY2hlY2tSb3dJbmRleCxcbiAgY2hlY2tDb2x1bW5JbmRleCxcbiAgY2hlY2tDb2x1bW5WZWN0b3IsXG4gIGNoZWNrUmFuZ2UsXG4gIGNoZWNrTm9uRW1wdHksXG4gIGNoZWNrUm93SW5kaWNlcyxcbiAgY2hlY2tDb2x1bW5JbmRpY2VzLFxufSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RNYXRyaXgge1xuICBzdGF0aWMgZnJvbTFEQXJyYXkobmV3Um93cywgbmV3Q29sdW1ucywgbmV3RGF0YSkge1xuICAgIGxldCBsZW5ndGggPSBuZXdSb3dzICogbmV3Q29sdW1ucztcbiAgICBpZiAobGVuZ3RoICE9PSBuZXdEYXRhLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2RhdGEgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIGdpdmVuIGRpbWVuc2lvbnMnKTtcbiAgICB9XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobmV3Um93cywgbmV3Q29sdW1ucyk7XG4gICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgbmV3Um93czsgcm93KyspIHtcbiAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IG5ld0NvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgIG5ld01hdHJpeC5zZXQocm93LCBjb2x1bW4sIG5ld0RhdGFbcm93ICogbmV3Q29sdW1ucyArIGNvbHVtbl0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3RhdGljIHJvd1ZlY3RvcihuZXdEYXRhKSB7XG4gICAgbGV0IHZlY3RvciA9IG5ldyBNYXRyaXgoMSwgbmV3RGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3RGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgdmVjdG9yLnNldCgwLCBpLCBuZXdEYXRhW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHZlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBjb2x1bW5WZWN0b3IobmV3RGF0YSkge1xuICAgIGxldCB2ZWN0b3IgPSBuZXcgTWF0cml4KG5ld0RhdGEubGVuZ3RoLCAxKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0RhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZlY3Rvci5zZXQoaSwgMCwgbmV3RGF0YVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB2ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgemVyb3Mocm93cywgY29sdW1ucykge1xuICAgIHJldHVybiBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICB9XG5cbiAgc3RhdGljIG9uZXMocm93cywgY29sdW1ucykge1xuICAgIHJldHVybiBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpLmZpbGwoMSk7XG4gIH1cblxuICBzdGF0aWMgcmFuZChyb3dzLCBjb2x1bW5zLCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgcmFuZG9tID0gTWF0aC5yYW5kb20gfSA9IG9wdGlvbnM7XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIG1hdHJpeC5zZXQoaSwgaiwgcmFuZG9tKCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIHJhbmRJbnQocm93cywgY29sdW1ucywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IG1pbiA9IDAsIG1heCA9IDEwMDAsIHJhbmRvbSA9IE1hdGgucmFuZG9tIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihtaW4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaW4gbXVzdCBiZSBhbiBpbnRlZ2VyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG1heCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heCBtdXN0IGJlIGFuIGludGVnZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgaW50ZXJ2YWwgPSBtYXggLSBtaW47XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG1pbiArIE1hdGgucm91bmQocmFuZG9tKCkgKiBpbnRlcnZhbCk7XG4gICAgICAgIG1hdHJpeC5zZXQoaSwgaiwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIGV5ZShyb3dzLCBjb2x1bW5zLCB2YWx1ZSkge1xuICAgIGlmIChjb2x1bW5zID09PSB1bmRlZmluZWQpIGNvbHVtbnMgPSByb3dzO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB2YWx1ZSA9IDE7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKHJvd3MsIGNvbHVtbnMpO1xuICAgIGxldCBtYXRyaXggPSB0aGlzLnplcm9zKHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaSwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIGRpYWcoZGF0YSwgcm93cywgY29sdW1ucykge1xuICAgIGxldCBsID0gZGF0YS5sZW5ndGg7XG4gICAgaWYgKHJvd3MgPT09IHVuZGVmaW5lZCkgcm93cyA9IGw7XG4gICAgaWYgKGNvbHVtbnMgPT09IHVuZGVmaW5lZCkgY29sdW1ucyA9IHJvd3M7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKGwsIHJvd3MsIGNvbHVtbnMpO1xuICAgIGxldCBtYXRyaXggPSB0aGlzLnplcm9zKHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaSwgZGF0YVtpXSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG4gIH1cblxuICBzdGF0aWMgbWluKG1hdHJpeDEsIG1hdHJpeDIpIHtcbiAgICBtYXRyaXgxID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgxKTtcbiAgICBtYXRyaXgyID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgyKTtcbiAgICBsZXQgcm93cyA9IG1hdHJpeDEucm93cztcbiAgICBsZXQgY29sdW1ucyA9IG1hdHJpeDEuY29sdW1ucztcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBNYXRoLm1pbihtYXRyaXgxLmdldChpLCBqKSwgbWF0cml4Mi5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBtYXgobWF0cml4MSwgbWF0cml4Mikge1xuICAgIG1hdHJpeDEgPSB0aGlzLmNoZWNrTWF0cml4KG1hdHJpeDEpO1xuICAgIG1hdHJpeDIgPSB0aGlzLmNoZWNrTWF0cml4KG1hdHJpeDIpO1xuICAgIGxldCByb3dzID0gbWF0cml4MS5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gbWF0cml4MS5jb2x1bW5zO1xuICAgIGxldCByZXN1bHQgPSBuZXcgdGhpcyhyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBNYXRoLm1heChtYXRyaXgxLmdldChpLCBqKSwgbWF0cml4Mi5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBjaGVja01hdHJpeCh2YWx1ZSkge1xuICAgIHJldHVybiBBYnN0cmFjdE1hdHJpeC5pc01hdHJpeCh2YWx1ZSkgPyB2YWx1ZSA6IG5ldyBNYXRyaXgodmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGlzTWF0cml4KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdmFsdWUua2xhc3MgPT09ICdNYXRyaXgnO1xuICB9XG5cbiAgZ2V0IHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyAqIHRoaXMuY29sdW1ucztcbiAgfVxuXG4gIGFwcGx5KGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCBpLCBqKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0bzFEQXJyYXkoKSB7XG4gICAgbGV0IGFycmF5ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICBhcnJheS5wdXNoKHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgdG8yREFycmF5KCkge1xuICAgIGxldCBjb3B5ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29weS5wdXNoKFtdKTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgY29weVtpXS5wdXNoKHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8yREFycmF5KCk7XG4gIH1cblxuICBpc1Jvd1ZlY3RvcigpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzID09PSAxO1xuICB9XG5cbiAgaXNDb2x1bW5WZWN0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucyA9PT0gMTtcbiAgfVxuXG4gIGlzVmVjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnJvd3MgPT09IDEgfHwgdGhpcy5jb2x1bW5zID09PSAxO1xuICB9XG5cbiAgaXNTcXVhcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyA9PT0gdGhpcy5jb2x1bW5zO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzID09PSAwIHx8IHRoaXMuY29sdW1ucyA9PT0gMDtcbiAgfVxuXG4gIGlzU3ltbWV0cmljKCkge1xuICAgIGlmICh0aGlzLmlzU3F1YXJlKCkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPD0gaTsgaisrKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopICE9PSB0aGlzLmdldChqLCBpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlzRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBqID0gMDtcbiAgICBsZXQgcHJldmlvdXNDb2x1bW4gPSAtMTtcbiAgICBsZXQgaXNFY2hlbG9uRm9ybSA9IHRydWU7XG4gICAgbGV0IGNoZWNrZWQgPSBmYWxzZTtcbiAgICB3aGlsZSAoaSA8IHRoaXMucm93cyAmJiBpc0VjaGVsb25Gb3JtKSB7XG4gICAgICBqID0gMDtcbiAgICAgIGNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIHdoaWxlIChqIDwgdGhpcy5jb2x1bW5zICYmIGNoZWNrZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMCkge1xuICAgICAgICAgIGorKztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMSAmJiBqID4gcHJldmlvdXNDb2x1bW4pIHtcbiAgICAgICAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICBwcmV2aW91c0NvbHVtbiA9IGo7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBpc0VjaGVsb25Gb3JtO1xuICB9XG5cbiAgaXNSZWR1Y2VkRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBqID0gMDtcbiAgICBsZXQgcHJldmlvdXNDb2x1bW4gPSAtMTtcbiAgICBsZXQgaXNSZWR1Y2VkRWNoZWxvbkZvcm0gPSB0cnVlO1xuICAgIGxldCBjaGVja2VkID0gZmFsc2U7XG4gICAgd2hpbGUgKGkgPCB0aGlzLnJvd3MgJiYgaXNSZWR1Y2VkRWNoZWxvbkZvcm0pIHtcbiAgICAgIGogPSAwO1xuICAgICAgY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgd2hpbGUgKGogPCB0aGlzLmNvbHVtbnMgJiYgY2hlY2tlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopID09PSAwKSB7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0KGksIGopID09PSAxICYmIGogPiBwcmV2aW91c0NvbHVtbikge1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgIHByZXZpb3VzQ29sdW1uID0gajtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc1JlZHVjZWRFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBrID0gaiArIDE7IGsgPCB0aGlzLnJvd3M7IGsrKykge1xuICAgICAgICBpZiAodGhpcy5nZXQoaSwgaykgIT09IDApIHtcbiAgICAgICAgICBpc1JlZHVjZWRFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBpc1JlZHVjZWRFY2hlbG9uRm9ybTtcbiAgfVxuXG4gIGVjaGVsb25Gb3JtKCkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgbGV0IGggPSAwO1xuICAgIGxldCBrID0gMDtcbiAgICB3aGlsZSAoaCA8IHJlc3VsdC5yb3dzICYmIGsgPCByZXN1bHQuY29sdW1ucykge1xuICAgICAgbGV0IGlNYXggPSBoO1xuICAgICAgZm9yIChsZXQgaSA9IGg7IGkgPCByZXN1bHQucm93czsgaSsrKSB7XG4gICAgICAgIGlmIChyZXN1bHQuZ2V0KGksIGspID4gcmVzdWx0LmdldChpTWF4LCBrKSkge1xuICAgICAgICAgIGlNYXggPSBpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0LmdldChpTWF4LCBrKSA9PT0gMCkge1xuICAgICAgICBrKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQuc3dhcFJvd3MoaCwgaU1heCk7XG4gICAgICAgIGxldCB0bXAgPSByZXN1bHQuZ2V0KGgsIGspO1xuICAgICAgICBmb3IgKGxldCBqID0gazsgaiA8IHJlc3VsdC5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgICByZXN1bHQuc2V0KGgsIGosIHJlc3VsdC5nZXQoaCwgaikgLyB0bXApO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSBoICsgMTsgaSA8IHJlc3VsdC5yb3dzOyBpKyspIHtcbiAgICAgICAgICBsZXQgZmFjdG9yID0gcmVzdWx0LmdldChpLCBrKSAvIHJlc3VsdC5nZXQoaCwgayk7XG4gICAgICAgICAgcmVzdWx0LnNldChpLCBrLCAwKTtcbiAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCByZXN1bHQuY29sdW1uczsgaisrKSB7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGksIGosIHJlc3VsdC5nZXQoaSwgaikgLSByZXN1bHQuZ2V0KGgsIGopICogZmFjdG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaCsrO1xuICAgICAgICBrKys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWR1Y2VkRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuZWNoZWxvbkZvcm0oKTtcbiAgICBsZXQgbSA9IHJlc3VsdC5jb2x1bW5zO1xuICAgIGxldCBuID0gcmVzdWx0LnJvd3M7XG4gICAgbGV0IGggPSBuIC0gMTtcbiAgICB3aGlsZSAoaCA+PSAwKSB7XG4gICAgICBpZiAocmVzdWx0Lm1heFJvdyhoKSA9PT0gMCkge1xuICAgICAgICBoLS07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcCA9IDA7XG4gICAgICAgIGxldCBwaXZvdCA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAocCA8IG4gJiYgcGl2b3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5nZXQoaCwgcCkgPT09IDEpIHtcbiAgICAgICAgICAgIHBpdm90ID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGg7IGkrKykge1xuICAgICAgICAgIGxldCBmYWN0b3IgPSByZXN1bHQuZ2V0KGksIHApO1xuICAgICAgICAgIGZvciAobGV0IGogPSBwOyBqIDwgbTsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdG1wID0gcmVzdWx0LmdldChpLCBqKSAtIGZhY3RvciAqIHJlc3VsdC5nZXQoaCwgaik7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGksIGosIHRtcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNldCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldCBtZXRob2QgaXMgdW5pbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZ2V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZ2V0IG1ldGhvZCBpcyB1bmltcGxlbWVudGVkJyk7XG4gIH1cblxuICByZXBlYXQob3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IHJvd3MgPSAxLCBjb2x1bW5zID0gMSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIocm93cykgfHwgcm93cyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyb3dzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgfVxuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihjb2x1bW5zKSB8fCBjb2x1bW5zIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbHVtbnMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXInKTtcbiAgICB9XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgodGhpcy5yb3dzICogcm93cywgdGhpcy5jb2x1bW5zICogY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIG1hdHJpeC5zZXRTdWJNYXRyaXgodGhpcywgdGhpcy5yb3dzICogaSwgdGhpcy5jb2x1bW5zICogaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG4gIH1cblxuICBmaWxsKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbmVnKCkge1xuICAgIHJldHVybiB0aGlzLm11bFMoLTEpO1xuICB9XG5cbiAgZ2V0Um93KGluZGV4KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCk7XG4gICAgbGV0IHJvdyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHJvdy5wdXNoKHRoaXMuZ2V0KGluZGV4LCBpKSk7XG4gICAgfVxuICAgIHJldHVybiByb3c7XG4gIH1cblxuICBnZXRSb3dWZWN0b3IoaW5kZXgpIHtcbiAgICByZXR1cm4gTWF0cml4LnJvd1ZlY3Rvcih0aGlzLmdldFJvdyhpbmRleCkpO1xuICB9XG5cbiAgc2V0Um93KGluZGV4LCBhcnJheSkge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGFycmF5ID0gY2hlY2tSb3dWZWN0b3IodGhpcywgYXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGluZGV4LCBpLCBhcnJheVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3dhcFJvd3Mocm93MSwgcm93Mikge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93MSk7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBsZXQgdGVtcCA9IHRoaXMuZ2V0KHJvdzEsIGkpO1xuICAgICAgdGhpcy5zZXQocm93MSwgaSwgdGhpcy5nZXQocm93MiwgaSkpO1xuICAgICAgdGhpcy5zZXQocm93MiwgaSwgdGVtcCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0Q29sdW1uKGluZGV4KSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCk7XG4gICAgbGV0IGNvbHVtbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbHVtbi5wdXNoKHRoaXMuZ2V0KGksIGluZGV4KSk7XG4gICAgfVxuICAgIHJldHVybiBjb2x1bW47XG4gIH1cblxuICBnZXRDb2x1bW5WZWN0b3IoaW5kZXgpIHtcbiAgICByZXR1cm4gTWF0cml4LmNvbHVtblZlY3Rvcih0aGlzLmdldENvbHVtbihpbmRleCkpO1xuICB9XG5cbiAgc2V0Q29sdW1uKGluZGV4LCBhcnJheSkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGFycmF5ID0gY2hlY2tDb2x1bW5WZWN0b3IodGhpcywgYXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGksIGluZGV4LCBhcnJheVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3dhcENvbHVtbnMoY29sdW1uMSwgY29sdW1uMikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uMSk7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBsZXQgdGVtcCA9IHRoaXMuZ2V0KGksIGNvbHVtbjEpO1xuICAgICAgdGhpcy5zZXQoaSwgY29sdW1uMSwgdGhpcy5nZXQoaSwgY29sdW1uMikpO1xuICAgICAgdGhpcy5zZXQoaSwgY29sdW1uMiwgdGVtcCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGl2Um93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAvIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGl2Q29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAvIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsUm93KGluZGV4LCB2YWx1ZSkge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGluZGV4LCBpLCB0aGlzLmdldChpbmRleCwgaSkgKiB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsQ29sdW1uKGluZGV4LCB2YWx1ZSkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGksIGluZGV4LCB0aGlzLmdldChpLCBpbmRleCkgKiB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWF4KGJ5KSB7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGNvbnN0IG1heCA9IG5ldyBBcnJheSh0aGlzLnJvd3MpLmZpbGwoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPiBtYXhbcm93XSkge1xuICAgICAgICAgICAgICBtYXhbcm93XSA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgY29uc3QgbWF4ID0gbmV3IEFycmF5KHRoaXMuY29sdW1ucykuZmlsbChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA+IG1heFtjb2x1bW5dKSB7XG4gICAgICAgICAgICAgIG1heFtjb2x1bW5dID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4O1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgbGV0IG1heCA9IHRoaXMuZ2V0KDAsIDApO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA+IG1heCkge1xuICAgICAgICAgICAgICBtYXggPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIG1heEluZGV4KCkge1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCAwKTtcbiAgICBsZXQgaWR4ID0gWzAsIDBdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopID4gdikge1xuICAgICAgICAgIHYgPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgICAgIGlkeFsxXSA9IGo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1pbihieSkge1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGNvbnN0IG1pbiA9IG5ldyBBcnJheSh0aGlzLnJvd3MpLmZpbGwoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPCBtaW5bcm93XSkge1xuICAgICAgICAgICAgICBtaW5bcm93XSA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgY29uc3QgbWluID0gbmV3IEFycmF5KHRoaXMuY29sdW1ucykuZmlsbChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA8IG1pbltjb2x1bW5dKSB7XG4gICAgICAgICAgICAgIG1pbltjb2x1bW5dID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgbGV0IG1pbiA9IHRoaXMuZ2V0KDAsIDApO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA8IG1pbikge1xuICAgICAgICAgICAgICBtaW4gPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIG1pbkluZGV4KCkge1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCAwKTtcbiAgICBsZXQgaWR4ID0gWzAsIDBdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopIDwgdikge1xuICAgICAgICAgIHYgPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgICAgIGlkeFsxXSA9IGo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1heFJvdyhyb3cpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdyk7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KHJvdywgMCk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPiB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1heFJvd0luZGV4KHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93KTtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQocm93LCAwKTtcbiAgICBsZXQgaWR4ID0gW3JvdywgMF07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPiB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgICBpZHhbMV0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgbWluUm93KHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93KTtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBOYU47XG4gICAgfVxuICAgIGxldCB2ID0gdGhpcy5nZXQocm93LCAwKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQocm93LCBpKSA8IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KHJvdywgaSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9XG5cbiAgbWluUm93SW5kZXgocm93KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cpO1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldChyb3csIDApO1xuICAgIGxldCBpZHggPSBbcm93LCAwXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQocm93LCBpKSA8IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KHJvdywgaSk7XG4gICAgICAgIGlkeFsxXSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtYXhDb2x1bW4oY29sdW1uKSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4pO1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCBjb2x1bW4pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBtYXhDb2x1bW5JbmRleChjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbik7XG4gICAgY2hlY2tOb25FbXB0eSh0aGlzKTtcbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIGNvbHVtbik7XG4gICAgbGV0IGlkeCA9IFswLCBjb2x1bW5dO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgICAgaWR4WzBdID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1pbkNvbHVtbihjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbik7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIGNvbHVtbik7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KGksIGNvbHVtbikgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChpLCBjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1pbkNvbHVtbkluZGV4KGNvbHVtbikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uKTtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgY29sdW1uKTtcbiAgICBsZXQgaWR4ID0gWzAsIGNvbHVtbl07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KGksIGNvbHVtbikgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChpLCBjb2x1bW4pO1xuICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgZGlhZygpIHtcbiAgICBsZXQgbWluID0gTWF0aC5taW4odGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGxldCBkaWFnID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgZGlhZy5wdXNoKHRoaXMuZ2V0KGksIGkpKTtcbiAgICB9XG4gICAgcmV0dXJuIGRpYWc7XG4gIH1cblxuICBub3JtKHR5cGUgPSAnZnJvYmVuaXVzJykge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGlmICh0eXBlID09PSAnbWF4Jykge1xuICAgICAgcmV0dXJuIHRoaXMubWF4KCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZnJvYmVuaXVzJykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgdGhpcy5nZXQoaSwgaikgKiB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIE1hdGguc3FydChyZXN1bHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgdW5rbm93biBub3JtIHR5cGU6ICR7dHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICBjdW11bGF0aXZlU3VtKCkge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgc3VtICs9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICB0aGlzLnNldChpLCBqLCBzdW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRvdCh2ZWN0b3IyKSB7XG4gICAgaWYgKEFic3RyYWN0TWF0cml4LmlzTWF0cml4KHZlY3RvcjIpKSB2ZWN0b3IyID0gdmVjdG9yMi50bzFEQXJyYXkoKTtcbiAgICBsZXQgdmVjdG9yMSA9IHRoaXMudG8xREFycmF5KCk7XG4gICAgaWYgKHZlY3RvcjEubGVuZ3RoICE9PSB2ZWN0b3IyLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3ZlY3RvcnMgZG8gbm90IGhhdmUgdGhlIHNhbWUgc2l6ZScpO1xuICAgIH1cbiAgICBsZXQgZG90ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZlY3RvcjEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRvdCArPSB2ZWN0b3IxW2ldICogdmVjdG9yMltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGRvdDtcbiAgfVxuXG4gIG1tdWwob3RoZXIpIHtcbiAgICBvdGhlciA9IE1hdHJpeC5jaGVja01hdHJpeChvdGhlcik7XG5cbiAgICBsZXQgbSA9IHRoaXMucm93cztcbiAgICBsZXQgbiA9IHRoaXMuY29sdW1ucztcbiAgICBsZXQgcCA9IG90aGVyLmNvbHVtbnM7XG5cbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeChtLCBwKTtcblxuICAgIGxldCBCY29saiA9IG5ldyBGbG9hdDY0QXJyYXkobik7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBwOyBqKyspIHtcbiAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICAgIEJjb2xqW2tdID0gb3RoZXIuZ2V0KGssIGopO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICBsZXQgcyA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICAgICAgcyArPSB0aGlzLmdldChpLCBrKSAqIEJjb2xqW2tdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0cmFzc2VuMngyKG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KDIsIDIpO1xuICAgIGNvbnN0IGExMSA9IHRoaXMuZ2V0KDAsIDApO1xuICAgIGNvbnN0IGIxMSA9IG90aGVyLmdldCgwLCAwKTtcbiAgICBjb25zdCBhMTIgPSB0aGlzLmdldCgwLCAxKTtcbiAgICBjb25zdCBiMTIgPSBvdGhlci5nZXQoMCwgMSk7XG4gICAgY29uc3QgYTIxID0gdGhpcy5nZXQoMSwgMCk7XG4gICAgY29uc3QgYjIxID0gb3RoZXIuZ2V0KDEsIDApO1xuICAgIGNvbnN0IGEyMiA9IHRoaXMuZ2V0KDEsIDEpO1xuICAgIGNvbnN0IGIyMiA9IG90aGVyLmdldCgxLCAxKTtcblxuICAgIC8vIENvbXB1dGUgaW50ZXJtZWRpYXRlIHZhbHVlcy5cbiAgICBjb25zdCBtMSA9IChhMTEgKyBhMjIpICogKGIxMSArIGIyMik7XG4gICAgY29uc3QgbTIgPSAoYTIxICsgYTIyKSAqIGIxMTtcbiAgICBjb25zdCBtMyA9IGExMSAqIChiMTIgLSBiMjIpO1xuICAgIGNvbnN0IG00ID0gYTIyICogKGIyMSAtIGIxMSk7XG4gICAgY29uc3QgbTUgPSAoYTExICsgYTEyKSAqIGIyMjtcbiAgICBjb25zdCBtNiA9IChhMjEgLSBhMTEpICogKGIxMSArIGIxMik7XG4gICAgY29uc3QgbTcgPSAoYTEyIC0gYTIyKSAqIChiMjEgKyBiMjIpO1xuXG4gICAgLy8gQ29tYmluZSBpbnRlcm1lZGlhdGUgdmFsdWVzIGludG8gdGhlIG91dHB1dC5cbiAgICBjb25zdCBjMDAgPSBtMSArIG00IC0gbTUgKyBtNztcbiAgICBjb25zdCBjMDEgPSBtMyArIG01O1xuICAgIGNvbnN0IGMxMCA9IG0yICsgbTQ7XG4gICAgY29uc3QgYzExID0gbTEgLSBtMiArIG0zICsgbTY7XG5cbiAgICByZXN1bHQuc2V0KDAsIDAsIGMwMCk7XG4gICAgcmVzdWx0LnNldCgwLCAxLCBjMDEpO1xuICAgIHJlc3VsdC5zZXQoMSwgMCwgYzEwKTtcbiAgICByZXN1bHQuc2V0KDEsIDEsIGMxMSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0cmFzc2VuM3gzKG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KDMsIDMpO1xuXG4gICAgY29uc3QgYTAwID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgY29uc3QgYTAxID0gdGhpcy5nZXQoMCwgMSk7XG4gICAgY29uc3QgYTAyID0gdGhpcy5nZXQoMCwgMik7XG4gICAgY29uc3QgYTEwID0gdGhpcy5nZXQoMSwgMCk7XG4gICAgY29uc3QgYTExID0gdGhpcy5nZXQoMSwgMSk7XG4gICAgY29uc3QgYTEyID0gdGhpcy5nZXQoMSwgMik7XG4gICAgY29uc3QgYTIwID0gdGhpcy5nZXQoMiwgMCk7XG4gICAgY29uc3QgYTIxID0gdGhpcy5nZXQoMiwgMSk7XG4gICAgY29uc3QgYTIyID0gdGhpcy5nZXQoMiwgMik7XG5cbiAgICBjb25zdCBiMDAgPSBvdGhlci5nZXQoMCwgMCk7XG4gICAgY29uc3QgYjAxID0gb3RoZXIuZ2V0KDAsIDEpO1xuICAgIGNvbnN0IGIwMiA9IG90aGVyLmdldCgwLCAyKTtcbiAgICBjb25zdCBiMTAgPSBvdGhlci5nZXQoMSwgMCk7XG4gICAgY29uc3QgYjExID0gb3RoZXIuZ2V0KDEsIDEpO1xuICAgIGNvbnN0IGIxMiA9IG90aGVyLmdldCgxLCAyKTtcbiAgICBjb25zdCBiMjAgPSBvdGhlci5nZXQoMiwgMCk7XG4gICAgY29uc3QgYjIxID0gb3RoZXIuZ2V0KDIsIDEpO1xuICAgIGNvbnN0IGIyMiA9IG90aGVyLmdldCgyLCAyKTtcblxuICAgIGNvbnN0IG0xID0gKGEwMCArIGEwMSArIGEwMiAtIGExMCAtIGExMSAtIGEyMSAtIGEyMikgKiBiMTE7XG4gICAgY29uc3QgbTIgPSAoYTAwIC0gYTEwKSAqICgtYjAxICsgYjExKTtcbiAgICBjb25zdCBtMyA9IGExMSAqICgtYjAwICsgYjAxICsgYjEwIC0gYjExIC0gYjEyIC0gYjIwICsgYjIyKTtcbiAgICBjb25zdCBtNCA9ICgtYTAwICsgYTEwICsgYTExKSAqIChiMDAgLSBiMDEgKyBiMTEpO1xuICAgIGNvbnN0IG01ID0gKGExMCArIGExMSkgKiAoLWIwMCArIGIwMSk7XG4gICAgY29uc3QgbTYgPSBhMDAgKiBiMDA7XG4gICAgY29uc3QgbTcgPSAoLWEwMCArIGEyMCArIGEyMSkgKiAoYjAwIC0gYjAyICsgYjEyKTtcbiAgICBjb25zdCBtOCA9ICgtYTAwICsgYTIwKSAqIChiMDIgLSBiMTIpO1xuICAgIGNvbnN0IG05ID0gKGEyMCArIGEyMSkgKiAoLWIwMCArIGIwMik7XG4gICAgY29uc3QgbTEwID0gKGEwMCArIGEwMSArIGEwMiAtIGExMSAtIGExMiAtIGEyMCAtIGEyMSkgKiBiMTI7XG4gICAgY29uc3QgbTExID0gYTIxICogKC1iMDAgKyBiMDIgKyBiMTAgLSBiMTEgLSBiMTIgLSBiMjAgKyBiMjEpO1xuICAgIGNvbnN0IG0xMiA9ICgtYTAyICsgYTIxICsgYTIyKSAqIChiMTEgKyBiMjAgLSBiMjEpO1xuICAgIGNvbnN0IG0xMyA9IChhMDIgLSBhMjIpICogKGIxMSAtIGIyMSk7XG4gICAgY29uc3QgbTE0ID0gYTAyICogYjIwO1xuICAgIGNvbnN0IG0xNSA9IChhMjEgKyBhMjIpICogKC1iMjAgKyBiMjEpO1xuICAgIGNvbnN0IG0xNiA9ICgtYTAyICsgYTExICsgYTEyKSAqIChiMTIgKyBiMjAgLSBiMjIpO1xuICAgIGNvbnN0IG0xNyA9IChhMDIgLSBhMTIpICogKGIxMiAtIGIyMik7XG4gICAgY29uc3QgbTE4ID0gKGExMSArIGExMikgKiAoLWIyMCArIGIyMik7XG4gICAgY29uc3QgbTE5ID0gYTAxICogYjEwO1xuICAgIGNvbnN0IG0yMCA9IGExMiAqIGIyMTtcbiAgICBjb25zdCBtMjEgPSBhMTAgKiBiMDI7XG4gICAgY29uc3QgbTIyID0gYTIwICogYjAxO1xuICAgIGNvbnN0IG0yMyA9IGEyMiAqIGIyMjtcblxuICAgIGNvbnN0IGMwMCA9IG02ICsgbTE0ICsgbTE5O1xuICAgIGNvbnN0IGMwMSA9IG0xICsgbTQgKyBtNSArIG02ICsgbTEyICsgbTE0ICsgbTE1O1xuICAgIGNvbnN0IGMwMiA9IG02ICsgbTcgKyBtOSArIG0xMCArIG0xNCArIG0xNiArIG0xODtcbiAgICBjb25zdCBjMTAgPSBtMiArIG0zICsgbTQgKyBtNiArIG0xNCArIG0xNiArIG0xNztcbiAgICBjb25zdCBjMTEgPSBtMiArIG00ICsgbTUgKyBtNiArIG0yMDtcbiAgICBjb25zdCBjMTIgPSBtMTQgKyBtMTYgKyBtMTcgKyBtMTggKyBtMjE7XG4gICAgY29uc3QgYzIwID0gbTYgKyBtNyArIG04ICsgbTExICsgbTEyICsgbTEzICsgbTE0O1xuICAgIGNvbnN0IGMyMSA9IG0xMiArIG0xMyArIG0xNCArIG0xNSArIG0yMjtcbiAgICBjb25zdCBjMjIgPSBtNiArIG03ICsgbTggKyBtOSArIG0yMztcblxuICAgIHJlc3VsdC5zZXQoMCwgMCwgYzAwKTtcbiAgICByZXN1bHQuc2V0KDAsIDEsIGMwMSk7XG4gICAgcmVzdWx0LnNldCgwLCAyLCBjMDIpO1xuICAgIHJlc3VsdC5zZXQoMSwgMCwgYzEwKTtcbiAgICByZXN1bHQuc2V0KDEsIDEsIGMxMSk7XG4gICAgcmVzdWx0LnNldCgxLCAyLCBjMTIpO1xuICAgIHJlc3VsdC5zZXQoMiwgMCwgYzIwKTtcbiAgICByZXN1bHQuc2V0KDIsIDEsIGMyMSk7XG4gICAgcmVzdWx0LnNldCgyLCAyLCBjMjIpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBtbXVsU3RyYXNzZW4oeSkge1xuICAgIHkgPSBNYXRyaXguY2hlY2tNYXRyaXgoeSk7XG4gICAgbGV0IHggPSB0aGlzLmNsb25lKCk7XG4gICAgbGV0IHIxID0geC5yb3dzO1xuICAgIGxldCBjMSA9IHguY29sdW1ucztcbiAgICBsZXQgcjIgPSB5LnJvd3M7XG4gICAgbGV0IGMyID0geS5jb2x1bW5zO1xuICAgIGlmIChjMSAhPT0gcjIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBNdWx0aXBseWluZyAke3IxfSB4ICR7YzF9IGFuZCAke3IyfSB4ICR7YzJ9IG1hdHJpeDogZGltZW5zaW9ucyBkbyBub3QgbWF0Y2guYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUHV0IGEgbWF0cml4IGludG8gdGhlIHRvcCBsZWZ0IG9mIGEgbWF0cml4IG9mIHplcm9zLlxuICAgIC8vIGByb3dzYCBhbmQgYGNvbHNgIGFyZSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgb3V0cHV0IG1hdHJpeC5cbiAgICBmdW5jdGlvbiBlbWJlZChtYXQsIHJvd3MsIGNvbHMpIHtcbiAgICAgIGxldCByID0gbWF0LnJvd3M7XG4gICAgICBsZXQgYyA9IG1hdC5jb2x1bW5zO1xuICAgICAgaWYgKHIgPT09IHJvd3MgJiYgYyA9PT0gY29scykge1xuICAgICAgICByZXR1cm4gbWF0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHJlc3VsdGF0ID0gQWJzdHJhY3RNYXRyaXguemVyb3Mocm93cywgY29scyk7XG4gICAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KG1hdCwgMCwgMCk7XG4gICAgICAgIHJldHVybiByZXN1bHRhdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgYm90aCBtYXRyaWNlcyBhcmUgdGhlIHNhbWUgc2l6ZS5cbiAgICAvLyBUaGlzIGlzIGV4Y2x1c2l2ZWx5IGZvciBzaW1wbGljaXR5OlxuICAgIC8vIHRoaXMgYWxnb3JpdGhtIGNhbiBiZSBpbXBsZW1lbnRlZCB3aXRoIG1hdHJpY2VzIG9mIGRpZmZlcmVudCBzaXplcy5cblxuICAgIGxldCByID0gTWF0aC5tYXgocjEsIHIyKTtcbiAgICBsZXQgYyA9IE1hdGgubWF4KGMxLCBjMik7XG4gICAgeCA9IGVtYmVkKHgsIHIsIGMpO1xuICAgIHkgPSBlbWJlZCh5LCByLCBjKTtcblxuICAgIC8vIE91ciByZWN1cnNpdmUgbXVsdGlwbGljYXRpb24gZnVuY3Rpb24uXG4gICAgZnVuY3Rpb24gYmxvY2tNdWx0KGEsIGIsIHJvd3MsIGNvbHMpIHtcbiAgICAgIC8vIEZvciBzbWFsbCBtYXRyaWNlcywgcmVzb3J0IHRvIG5haXZlIG11bHRpcGxpY2F0aW9uLlxuICAgICAgaWYgKHJvd3MgPD0gNTEyIHx8IGNvbHMgPD0gNTEyKSB7XG4gICAgICAgIHJldHVybiBhLm1tdWwoYik7IC8vIGEgaXMgZXF1aXZhbGVudCB0byB0aGlzXG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IGR5bmFtaWMgcGFkZGluZy5cbiAgICAgIGlmIChyb3dzICUgMiA9PT0gMSAmJiBjb2xzICUgMiA9PT0gMSkge1xuICAgICAgICBhID0gZW1iZWQoYSwgcm93cyArIDEsIGNvbHMgKyAxKTtcbiAgICAgICAgYiA9IGVtYmVkKGIsIHJvd3MgKyAxLCBjb2xzICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKHJvd3MgJSAyID09PSAxKSB7XG4gICAgICAgIGEgPSBlbWJlZChhLCByb3dzICsgMSwgY29scyk7XG4gICAgICAgIGIgPSBlbWJlZChiLCByb3dzICsgMSwgY29scyk7XG4gICAgICB9IGVsc2UgaWYgKGNvbHMgJSAyID09PSAxKSB7XG4gICAgICAgIGEgPSBlbWJlZChhLCByb3dzLCBjb2xzICsgMSk7XG4gICAgICAgIGIgPSBlbWJlZChiLCByb3dzLCBjb2xzICsgMSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBoYWxmUm93cyA9IHBhcnNlSW50KGEucm93cyAvIDIsIDEwKTtcbiAgICAgIGxldCBoYWxmQ29scyA9IHBhcnNlSW50KGEuY29sdW1ucyAvIDIsIDEwKTtcbiAgICAgIC8vIFN1YmRpdmlkZSBpbnB1dCBtYXRyaWNlcy5cbiAgICAgIGxldCBhMTEgPSBhLnN1Yk1hdHJpeCgwLCBoYWxmUm93cyAtIDEsIDAsIGhhbGZDb2xzIC0gMSk7XG4gICAgICBsZXQgYjExID0gYi5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCAwLCBoYWxmQ29scyAtIDEpO1xuXG4gICAgICBsZXQgYTEyID0gYS5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCBoYWxmQ29scywgYS5jb2x1bW5zIC0gMSk7XG4gICAgICBsZXQgYjEyID0gYi5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCBoYWxmQ29scywgYi5jb2x1bW5zIC0gMSk7XG5cbiAgICAgIGxldCBhMjEgPSBhLnN1Yk1hdHJpeChoYWxmUm93cywgYS5yb3dzIC0gMSwgMCwgaGFsZkNvbHMgLSAxKTtcbiAgICAgIGxldCBiMjEgPSBiLnN1Yk1hdHJpeChoYWxmUm93cywgYi5yb3dzIC0gMSwgMCwgaGFsZkNvbHMgLSAxKTtcblxuICAgICAgbGV0IGEyMiA9IGEuc3ViTWF0cml4KGhhbGZSb3dzLCBhLnJvd3MgLSAxLCBoYWxmQ29scywgYS5jb2x1bW5zIC0gMSk7XG4gICAgICBsZXQgYjIyID0gYi5zdWJNYXRyaXgoaGFsZlJvd3MsIGIucm93cyAtIDEsIGhhbGZDb2xzLCBiLmNvbHVtbnMgLSAxKTtcblxuICAgICAgLy8gQ29tcHV0ZSBpbnRlcm1lZGlhdGUgdmFsdWVzLlxuICAgICAgbGV0IG0xID0gYmxvY2tNdWx0KFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5hZGQoYTExLCBhMjIpLFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5hZGQoYjExLCBiMjIpLFxuICAgICAgICBoYWxmUm93cyxcbiAgICAgICAgaGFsZkNvbHMsXG4gICAgICApO1xuICAgICAgbGV0IG0yID0gYmxvY2tNdWx0KEFic3RyYWN0TWF0cml4LmFkZChhMjEsIGEyMiksIGIxMSwgaGFsZlJvd3MsIGhhbGZDb2xzKTtcbiAgICAgIGxldCBtMyA9IGJsb2NrTXVsdChhMTEsIEFic3RyYWN0TWF0cml4LnN1YihiMTIsIGIyMiksIGhhbGZSb3dzLCBoYWxmQ29scyk7XG4gICAgICBsZXQgbTQgPSBibG9ja011bHQoYTIyLCBBYnN0cmFjdE1hdHJpeC5zdWIoYjIxLCBiMTEpLCBoYWxmUm93cywgaGFsZkNvbHMpO1xuICAgICAgbGV0IG01ID0gYmxvY2tNdWx0KEFic3RyYWN0TWF0cml4LmFkZChhMTEsIGExMiksIGIyMiwgaGFsZlJvd3MsIGhhbGZDb2xzKTtcbiAgICAgIGxldCBtNiA9IGJsb2NrTXVsdChcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguc3ViKGEyMSwgYTExKSxcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGIxMSwgYjEyKSxcbiAgICAgICAgaGFsZlJvd3MsXG4gICAgICAgIGhhbGZDb2xzLFxuICAgICAgKTtcbiAgICAgIGxldCBtNyA9IGJsb2NrTXVsdChcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguc3ViKGExMiwgYTIyKSxcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGIyMSwgYjIyKSxcbiAgICAgICAgaGFsZlJvd3MsXG4gICAgICAgIGhhbGZDb2xzLFxuICAgICAgKTtcblxuICAgICAgLy8gQ29tYmluZSBpbnRlcm1lZGlhdGUgdmFsdWVzIGludG8gdGhlIG91dHB1dC5cbiAgICAgIGxldCBjMTEgPSBBYnN0cmFjdE1hdHJpeC5hZGQobTEsIG00KTtcbiAgICAgIGMxMS5zdWIobTUpO1xuICAgICAgYzExLmFkZChtNyk7XG4gICAgICBsZXQgYzEyID0gQWJzdHJhY3RNYXRyaXguYWRkKG0zLCBtNSk7XG4gICAgICBsZXQgYzIxID0gQWJzdHJhY3RNYXRyaXguYWRkKG0yLCBtNCk7XG4gICAgICBsZXQgYzIyID0gQWJzdHJhY3RNYXRyaXguc3ViKG0xLCBtMik7XG4gICAgICBjMjIuYWRkKG0zKTtcbiAgICAgIGMyMi5hZGQobTYpO1xuXG4gICAgICAvLyBDcm9wIG91dHB1dCB0byB0aGUgZGVzaXJlZCBzaXplICh1bmRvIGR5bmFtaWMgcGFkZGluZykuXG4gICAgICBsZXQgcmVzdWx0YXQgPSBBYnN0cmFjdE1hdHJpeC56ZXJvcygyICogYzExLnJvd3MsIDIgKiBjMTEuY29sdW1ucyk7XG4gICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChjMTEsIDAsIDApO1xuICAgICAgcmVzdWx0YXQgPSByZXN1bHRhdC5zZXRTdWJNYXRyaXgoYzEyLCBjMTEucm93cywgMCk7XG4gICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChjMjEsIDAsIGMxMS5jb2x1bW5zKTtcbiAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KGMyMiwgYzExLnJvd3MsIGMxMS5jb2x1bW5zKTtcbiAgICAgIHJldHVybiByZXN1bHRhdC5zdWJNYXRyaXgoMCwgcm93cyAtIDEsIDAsIGNvbHMgLSAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmxvY2tNdWx0KHgsIHksIHIsIGMpO1xuICB9XG5cbiAgc2NhbGVSb3dzKG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBtaW4gPSAwLCBtYXggPSAxIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1pbikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWF4KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4IG11c3QgYmUgYSBudW1iZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeCh0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRSb3coaSk7XG4gICAgICBpZiAocm93Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzY2FsZShyb3csIHsgbWluLCBtYXgsIG91dHB1dDogcm93IH0pO1xuICAgICAgfVxuICAgICAgbmV3TWF0cml4LnNldFJvdyhpLCByb3cpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc2NhbGVDb2x1bW5zKG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBtaW4gPSAwLCBtYXggPSAxIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1pbikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWF4KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4IG11c3QgYmUgYSBudW1iZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeCh0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW4oaSk7XG4gICAgICBpZiAoY29sdW1uLmxlbmd0aCkge1xuICAgICAgICByZXNjYWxlKGNvbHVtbiwge1xuICAgICAgICAgIG1pbjogbWluLFxuICAgICAgICAgIG1heDogbWF4LFxuICAgICAgICAgIG91dHB1dDogY29sdW1uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG5ld01hdHJpeC5zZXRDb2x1bW4oaSwgY29sdW1uKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIGZsaXBSb3dzKCkge1xuICAgIGNvbnN0IG1pZGRsZSA9IE1hdGguY2VpbCh0aGlzLmNvbHVtbnMgLyAyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1pZGRsZTsgaisrKSB7XG4gICAgICAgIGxldCBmaXJzdCA9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICBsZXQgbGFzdCA9IHRoaXMuZ2V0KGksIHRoaXMuY29sdW1ucyAtIDEgLSBqKTtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgbGFzdCk7XG4gICAgICAgIHRoaXMuc2V0KGksIHRoaXMuY29sdW1ucyAtIDEgLSBqLCBmaXJzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmxpcENvbHVtbnMoKSB7XG4gICAgY29uc3QgbWlkZGxlID0gTWF0aC5jZWlsKHRoaXMucm93cyAvIDIpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWlkZGxlOyBpKyspIHtcbiAgICAgICAgbGV0IGZpcnN0ID0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgIGxldCBsYXN0ID0gdGhpcy5nZXQodGhpcy5yb3dzIC0gMSAtIGksIGopO1xuICAgICAgICB0aGlzLnNldChpLCBqLCBsYXN0KTtcbiAgICAgICAgdGhpcy5zZXQodGhpcy5yb3dzIC0gMSAtIGksIGosIGZpcnN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBrcm9uZWNrZXJQcm9kdWN0KG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuXG4gICAgbGV0IG0gPSB0aGlzLnJvd3M7XG4gICAgbGV0IG4gPSB0aGlzLmNvbHVtbnM7XG4gICAgbGV0IHAgPSBvdGhlci5yb3dzO1xuICAgIGxldCBxID0gb3RoZXIuY29sdW1ucztcblxuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KG0gKiBwLCBuICogcSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcDsgaysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgbCA9IDA7IGwgPCBxOyBsKyspIHtcbiAgICAgICAgICAgIHJlc3VsdC5zZXQocCAqIGkgKyBrLCBxICogaiArIGwsIHRoaXMuZ2V0KGksIGopICogb3RoZXIuZ2V0KGssIGwpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGtyb25lY2tlclN1bShvdGhlcikge1xuICAgIG90aGVyID0gTWF0cml4LmNoZWNrTWF0cml4KG90aGVyKTtcbiAgICBpZiAoIXRoaXMuaXNTcXVhcmUoKSB8fCAhb3RoZXIuaXNTcXVhcmUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdLcm9uZWNrZXIgU3VtIG5lZWRzIHR3byBTcXVhcmUgTWF0cmljZXMnKTtcbiAgICB9XG4gICAgbGV0IG0gPSB0aGlzLnJvd3M7XG4gICAgbGV0IG4gPSBvdGhlci5yb3dzO1xuICAgIGxldCBBeEkgPSB0aGlzLmtyb25lY2tlclByb2R1Y3QoTWF0cml4LmV5ZShuLCBuKSk7XG4gICAgbGV0IEl4QiA9IE1hdHJpeC5leWUobSwgbSkua3JvbmVja2VyUHJvZHVjdChvdGhlcik7XG4gICAgcmV0dXJuIEF4SS5hZGQoSXhCKTtcbiAgfVxuXG4gIHRyYW5zcG9zZSgpIHtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeCh0aGlzLmNvbHVtbnMsIHRoaXMucm93cyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICByZXN1bHQuc2V0KGosIGksIHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNvcnRSb3dzKGNvbXBhcmVGdW5jdGlvbiA9IGNvbXBhcmVOdW1iZXJzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgdGhpcy5zZXRSb3coaSwgdGhpcy5nZXRSb3coaSkuc29ydChjb21wYXJlRnVuY3Rpb24pKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzb3J0Q29sdW1ucyhjb21wYXJlRnVuY3Rpb24gPSBjb21wYXJlTnVtYmVycykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0Q29sdW1uKGksIHRoaXMuZ2V0Q29sdW1uKGkpLnNvcnQoY29tcGFyZUZ1bmN0aW9uKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViTWF0cml4KHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pIHtcbiAgICBjaGVja1JhbmdlKHRoaXMsIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pO1xuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KFxuICAgICAgZW5kUm93IC0gc3RhcnRSb3cgKyAxLFxuICAgICAgZW5kQ29sdW1uIC0gc3RhcnRDb2x1bW4gKyAxLFxuICAgICk7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0Um93OyBpIDw9IGVuZFJvdzsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gc3RhcnRDb2x1bW47IGogPD0gZW5kQ29sdW1uOyBqKyspIHtcbiAgICAgICAgbmV3TWF0cml4LnNldChpIC0gc3RhcnRSb3csIGogLSBzdGFydENvbHVtbiwgdGhpcy5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3ViTWF0cml4Um93KGluZGljZXMsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pIHtcbiAgICBpZiAoc3RhcnRDb2x1bW4gPT09IHVuZGVmaW5lZCkgc3RhcnRDb2x1bW4gPSAwO1xuICAgIGlmIChlbmRDb2x1bW4gPT09IHVuZGVmaW5lZCkgZW5kQ29sdW1uID0gdGhpcy5jb2x1bW5zIC0gMTtcbiAgICBpZiAoXG4gICAgICBzdGFydENvbHVtbiA+IGVuZENvbHVtbiB8fFxuICAgICAgc3RhcnRDb2x1bW4gPCAwIHx8XG4gICAgICBzdGFydENvbHVtbiA+PSB0aGlzLmNvbHVtbnMgfHxcbiAgICAgIGVuZENvbHVtbiA8IDAgfHxcbiAgICAgIGVuZENvbHVtbiA+PSB0aGlzLmNvbHVtbnNcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBcmd1bWVudCBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChpbmRpY2VzLmxlbmd0aCwgZW5kQ29sdW1uIC0gc3RhcnRDb2x1bW4gKyAxKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSBzdGFydENvbHVtbjsgaiA8PSBlbmRDb2x1bW47IGorKykge1xuICAgICAgICBpZiAoaW5kaWNlc1tpXSA8IDAgfHwgaW5kaWNlc1tpXSA+PSB0aGlzLnJvd3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgUm93IGluZGV4IG91dCBvZiByYW5nZTogJHtpbmRpY2VzW2ldfWApO1xuICAgICAgICB9XG4gICAgICAgIG5ld01hdHJpeC5zZXQoaSwgaiAtIHN0YXJ0Q29sdW1uLCB0aGlzLmdldChpbmRpY2VzW2ldLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBzdWJNYXRyaXhDb2x1bW4oaW5kaWNlcywgc3RhcnRSb3csIGVuZFJvdykge1xuICAgIGlmIChzdGFydFJvdyA9PT0gdW5kZWZpbmVkKSBzdGFydFJvdyA9IDA7XG4gICAgaWYgKGVuZFJvdyA9PT0gdW5kZWZpbmVkKSBlbmRSb3cgPSB0aGlzLnJvd3MgLSAxO1xuICAgIGlmIChcbiAgICAgIHN0YXJ0Um93ID4gZW5kUm93IHx8XG4gICAgICBzdGFydFJvdyA8IDAgfHxcbiAgICAgIHN0YXJ0Um93ID49IHRoaXMucm93cyB8fFxuICAgICAgZW5kUm93IDwgMCB8fFxuICAgICAgZW5kUm93ID49IHRoaXMucm93c1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0FyZ3VtZW50IG91dCBvZiByYW5nZScpO1xuICAgIH1cblxuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KGVuZFJvdyAtIHN0YXJ0Um93ICsgMSwgaW5kaWNlcy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IHN0YXJ0Um93OyBqIDw9IGVuZFJvdzsgaisrKSB7XG4gICAgICAgIGlmIChpbmRpY2VzW2ldIDwgMCB8fCBpbmRpY2VzW2ldID49IHRoaXMuY29sdW1ucykge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBDb2x1bW4gaW5kZXggb3V0IG9mIHJhbmdlOiAke2luZGljZXNbaV19YCk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3TWF0cml4LnNldChqIC0gc3RhcnRSb3csIGksIHRoaXMuZ2V0KGosIGluZGljZXNbaV0pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHNldFN1Yk1hdHJpeChtYXRyaXgsIHN0YXJ0Um93LCBzdGFydENvbHVtbikge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmIChtYXRyaXguaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgbGV0IGVuZFJvdyA9IHN0YXJ0Um93ICsgbWF0cml4LnJvd3MgLSAxO1xuICAgIGxldCBlbmRDb2x1bW4gPSBzdGFydENvbHVtbiArIG1hdHJpeC5jb2x1bW5zIC0gMTtcbiAgICBjaGVja1JhbmdlKHRoaXMsIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KHN0YXJ0Um93ICsgaSwgc3RhcnRDb2x1bW4gKyBqLCBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZWxlY3Rpb24ocm93SW5kaWNlcywgY29sdW1uSW5kaWNlcykge1xuICAgIGNoZWNrUm93SW5kaWNlcyh0aGlzLCByb3dJbmRpY2VzKTtcbiAgICBjaGVja0NvbHVtbkluZGljZXModGhpcywgY29sdW1uSW5kaWNlcyk7XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgocm93SW5kaWNlcy5sZW5ndGgsIGNvbHVtbkluZGljZXMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd0luZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCByb3dJbmRleCA9IHJvd0luZGljZXNbaV07XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbkluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgbGV0IGNvbHVtbkluZGV4ID0gY29sdW1uSW5kaWNlc1tqXTtcbiAgICAgICAgbmV3TWF0cml4LnNldChpLCBqLCB0aGlzLmdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHRyYWNlKCkge1xuICAgIGxldCBtaW4gPSBNYXRoLm1pbih0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgbGV0IHRyYWNlID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbjsgaSsrKSB7XG4gICAgICB0cmFjZSArPSB0aGlzLmdldChpLCBpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYWNlO1xuICB9XG5cbiAgY2xvbmUoKSB7XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgodGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRoaXMucm93czsgcm93KyspIHtcbiAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgbmV3TWF0cml4LnNldChyb3csIGNvbHVtbiwgdGhpcy5nZXQocm93LCBjb2x1bW4pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHN1bShieSkge1xuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICAgIHJldHVybiBzdW1CeVJvdyh0aGlzKTtcbiAgICAgIGNhc2UgJ2NvbHVtbic6XG4gICAgICAgIHJldHVybiBzdW1CeUNvbHVtbih0aGlzKTtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gc3VtQWxsKHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBwcm9kdWN0KGJ5KSB7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93JzpcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RCeVJvdyh0aGlzKTtcbiAgICAgIGNhc2UgJ2NvbHVtbic6XG4gICAgICAgIHJldHVybiBwcm9kdWN0QnlDb2x1bW4odGhpcyk7XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RBbGwodGhpcyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIG1lYW4oYnkpIHtcbiAgICBjb25zdCBzdW0gPSB0aGlzLnN1bShieSk7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICAgICAgc3VtW2ldIC89IHRoaXMuY29sdW1ucztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICAgICAgc3VtW2ldIC89IHRoaXMucm93cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiBzdW0gLyB0aGlzLnNpemU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHZhcmlhbmNlKGJ5LCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIGJ5ID09PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9ucyA9IGJ5O1xuICAgICAgYnkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyB1bmJpYXNlZCA9IHRydWUsIG1lYW4gPSB0aGlzLm1lYW4oYnkpIH0gPSBvcHRpb25zO1xuICAgIGlmICh0eXBlb2YgdW5iaWFzZWQgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndW5iaWFzZWQgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgICB9XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBpZiAoIWlzQW55QXJyYXkobWVhbikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtZWFuIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFuY2VCeVJvdyh0aGlzLCB1bmJpYXNlZCwgbWVhbik7XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGlmICghaXNBbnlBcnJheShtZWFuKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21lYW4gbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YXJpYW5jZUJ5Q29sdW1uKHRoaXMsIHVuYmlhc2VkLCBtZWFuKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICAgIGlmICh0eXBlb2YgbWVhbiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtZWFuIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFuY2VBbGwodGhpcywgdW5iaWFzZWQsIG1lYW4pO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBzdGFuZGFyZERldmlhdGlvbihieSwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgYnkgPT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb25zID0gYnk7XG4gICAgICBieSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgdmFyaWFuY2UgPSB0aGlzLnZhcmlhbmNlKGJ5LCBvcHRpb25zKTtcbiAgICBpZiAoYnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIE1hdGguc3FydCh2YXJpYW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFyaWFuY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyaWFuY2VbaV0gPSBNYXRoLnNxcnQodmFyaWFuY2VbaV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhcmlhbmNlO1xuICAgIH1cbiAgfVxuXG4gIGNlbnRlcihieSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBieSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbnMgPSBieTtcbiAgICAgIGJ5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgY2VudGVyID0gdGhpcy5tZWFuKGJ5KSB9ID0gb3B0aW9ucztcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGlmICghaXNBbnlBcnJheShjZW50ZXIpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2VudGVyIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBjZW50ZXJCeVJvdyh0aGlzLCBjZW50ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgaWYgKCFpc0FueUFycmF5KGNlbnRlcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjZW50ZXIgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIGNlbnRlckJ5Q29sdW1uKHRoaXMsIGNlbnRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjZW50ZXIgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2VudGVyIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICAgICAgfVxuICAgICAgICBjZW50ZXJBbGwodGhpcywgY2VudGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHNjYWxlKGJ5LCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIGJ5ID09PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9ucyA9IGJ5O1xuICAgICAgYnkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgbGV0IHNjYWxlID0gb3B0aW9ucy5zY2FsZTtcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGlmIChzY2FsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NhbGUgPSBnZXRTY2FsZUJ5Um93KHRoaXMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0FueUFycmF5KHNjYWxlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NjYWxlIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBzY2FsZUJ5Um93KHRoaXMsIHNjYWxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGlmIChzY2FsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NhbGUgPSBnZXRTY2FsZUJ5Q29sdW1uKHRoaXMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0FueUFycmF5KHNjYWxlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NjYWxlIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBzY2FsZUJ5Q29sdW1uKHRoaXMsIHNjYWxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBjYXNlIHVuZGVmaW5lZDoge1xuICAgICAgICBpZiAoc2NhbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjYWxlID0gZ2V0U2NhbGVBbGwodGhpcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNjYWxlICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NjYWxlIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICAgICAgfVxuICAgICAgICBzY2FsZUFsbCh0aGlzLCBzY2FsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZyhvcHRpb25zKSB7XG4gICAgcmV0dXJuIGluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyh0aGlzLCBvcHRpb25zKTtcbiAgfVxufVxuXG5BYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUua2xhc3MgPSAnTWF0cml4JztcbmlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJykge1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGVbU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0gPVxuICAgIGluc3BlY3RNYXRyaXg7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVOdW1iZXJzKGEsIGIpIHtcbiAgcmV0dXJuIGEgLSBiO1xufVxuXG5mdW5jdGlvbiBpc0FycmF5T2ZOdW1iZXJzKGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5ldmVyeSgoZWxlbWVudCkgPT4ge1xuICAgIHJldHVybiB0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcic7XG4gIH0pO1xufVxuXG4vLyBTeW5vbnltc1xuQWJzdHJhY3RNYXRyaXgucmFuZG9tID0gQWJzdHJhY3RNYXRyaXgucmFuZDtcbkFic3RyYWN0TWF0cml4LnJhbmRvbUludCA9IEFic3RyYWN0TWF0cml4LnJhbmRJbnQ7XG5BYnN0cmFjdE1hdHJpeC5kaWFnb25hbCA9IEFic3RyYWN0TWF0cml4LmRpYWc7XG5BYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGlhZ29uYWwgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGlhZztcbkFic3RyYWN0TWF0cml4LmlkZW50aXR5ID0gQWJzdHJhY3RNYXRyaXguZXllO1xuQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm5lZ2F0ZSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5uZWc7XG5BYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUudGVuc29yUHJvZHVjdCA9XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5rcm9uZWNrZXJQcm9kdWN0O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXRyaXggZXh0ZW5kcyBBYnN0cmFjdE1hdHJpeCB7XG4gIGNvbnN0cnVjdG9yKG5Sb3dzLCBuQ29sdW1ucykge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKE1hdHJpeC5pc01hdHJpeChuUm93cykpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdHJ1Y3Rvci1yZXR1cm5cbiAgICAgIHJldHVybiBuUm93cy5jbG9uZSgpO1xuICAgIH0gZWxzZSBpZiAoTnVtYmVyLmlzSW50ZWdlcihuUm93cykgJiYgblJvd3MgPj0gMCkge1xuICAgICAgLy8gQ3JlYXRlIGFuIGVtcHR5IG1hdHJpeFxuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihuQ29sdW1ucykgJiYgbkNvbHVtbnMgPj0gMCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5Sb3dzOyBpKyspIHtcbiAgICAgICAgICB0aGlzLmRhdGEucHVzaChuZXcgRmxvYXQ2NEFycmF5KG5Db2x1bW5zKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25Db2x1bW5zIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0FueUFycmF5KG5Sb3dzKSkge1xuICAgICAgLy8gQ29weSB0aGUgdmFsdWVzIGZyb20gdGhlIDJEIGFycmF5XG4gICAgICBjb25zdCBhcnJheURhdGEgPSBuUm93cztcbiAgICAgIG5Sb3dzID0gYXJyYXlEYXRhLmxlbmd0aDtcbiAgICAgIG5Db2x1bW5zID0gblJvd3MgPyBhcnJheURhdGFbMF0ubGVuZ3RoIDogMDtcbiAgICAgIGlmICh0eXBlb2YgbkNvbHVtbnMgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgJ0RhdGEgbXVzdCBiZSBhIDJEIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnQnLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5Sb3dzOyBpKyspIHtcbiAgICAgICAgaWYgKGFycmF5RGF0YVtpXS5sZW5ndGggIT09IG5Db2x1bW5zKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luY29uc2lzdGVudCBhcnJheSBkaW1lbnNpb25zJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0FycmF5T2ZOdW1iZXJzKGFycmF5RGF0YVtpXSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnB1dCBkYXRhIGNvbnRhaW5zIG5vbi1udW1lcmljIHZhbHVlcycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0YS5wdXNoKEZsb2F0NjRBcnJheS5mcm9tKGFycmF5RGF0YVtpXSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAnRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciBvciBhbiBhcnJheScsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnJvd3MgPSBuUm93cztcbiAgICB0aGlzLmNvbHVtbnMgPSBuQ29sdW1ucztcbiAgfVxuXG4gIHNldChyb3dJbmRleCwgY29sdW1uSW5kZXgsIHZhbHVlKSB7XG4gICAgdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF07XG4gIH1cblxuICByZW1vdmVSb3coaW5kZXgpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIGluZGV4KTtcbiAgICB0aGlzLmRhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnJvd3MgLT0gMTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFJvdyhpbmRleCwgYXJyYXkpIHtcbiAgICBpZiAoYXJyYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYXJyYXkgPSBpbmRleDtcbiAgICAgIGluZGV4ID0gdGhpcy5yb3dzO1xuICAgIH1cbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIGluZGV4LCB0cnVlKTtcbiAgICBhcnJheSA9IEZsb2F0NjRBcnJheS5mcm9tKGNoZWNrUm93VmVjdG9yKHRoaXMsIGFycmF5KSk7XG4gICAgdGhpcy5kYXRhLnNwbGljZShpbmRleCwgMCwgYXJyYXkpO1xuICAgIHRoaXMucm93cyArPSAxO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlQ29sdW1uKGluZGV4KSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29uc3QgbmV3Um93ID0gbmV3IEZsb2F0NjRBcnJheSh0aGlzLmNvbHVtbnMgLSAxKTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaW5kZXg7IGorKykge1xuICAgICAgICBuZXdSb3dbal0gPSB0aGlzLmRhdGFbaV1bal07XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBqID0gaW5kZXggKyAxOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgbmV3Um93W2ogLSAxXSA9IHRoaXMuZGF0YVtpXVtqXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YVtpXSA9IG5ld1JvdztcbiAgICB9XG4gICAgdGhpcy5jb2x1bW5zIC09IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRDb2x1bW4oaW5kZXgsIGFycmF5KSB7XG4gICAgaWYgKHR5cGVvZiBhcnJheSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGFycmF5ID0gaW5kZXg7XG4gICAgICBpbmRleCA9IHRoaXMuY29sdW1ucztcbiAgICB9XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCwgdHJ1ZSk7XG4gICAgYXJyYXkgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCBhcnJheSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29uc3QgbmV3Um93ID0gbmV3IEZsb2F0NjRBcnJheSh0aGlzLmNvbHVtbnMgKyAxKTtcbiAgICAgIGxldCBqID0gMDtcbiAgICAgIGZvciAoOyBqIDwgaW5kZXg7IGorKykge1xuICAgICAgICBuZXdSb3dbal0gPSB0aGlzLmRhdGFbaV1bal07XG4gICAgICB9XG4gICAgICBuZXdSb3dbaisrXSA9IGFycmF5W2ldO1xuICAgICAgZm9yICg7IGogPCB0aGlzLmNvbHVtbnMgKyAxOyBqKyspIHtcbiAgICAgICAgbmV3Um93W2pdID0gdGhpcy5kYXRhW2ldW2ogLSAxXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YVtpXSA9IG5ld1JvdztcbiAgICB9XG4gICAgdGhpcy5jb2x1bW5zICs9IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuaW5zdGFsbE1hdGhPcGVyYXRpb25zKEFic3RyYWN0TWF0cml4LCBNYXRyaXgpO1xuIiwiaW1wb3J0IHsgbmV3QXJyYXkgfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3VtQnlSb3cobWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXgucm93cyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2ldICs9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW1CeUNvbHVtbihtYXRyaXgpIHtcbiAgbGV0IHN1bSA9IG5ld0FycmF5KG1hdHJpeC5jb2x1bW5zKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgKytqKSB7XG4gICAgICBzdW1bal0gKz0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN1bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1bUFsbChtYXRyaXgpIHtcbiAgbGV0IHYgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIHYgKz0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QnlSb3cobWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXgucm93cywgMSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2ldICo9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QnlDb2x1bW4obWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXguY29sdW1ucywgMSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2pdICo9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QWxsKG1hdHJpeCkge1xuICBsZXQgdiA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgdiAqPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhbmNlQnlSb3cobWF0cml4LCB1bmJpYXNlZCwgbWVhbikge1xuICBjb25zdCByb3dzID0gbWF0cml4LnJvd3M7XG4gIGNvbnN0IGNvbHMgPSBtYXRyaXguY29sdW1ucztcbiAgY29uc3QgdmFyaWFuY2UgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgIGxldCBzdW0xID0gMDtcbiAgICBsZXQgc3VtMiA9IDA7XG4gICAgbGV0IHggPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sczsgaisrKSB7XG4gICAgICB4ID0gbWF0cml4LmdldChpLCBqKSAtIG1lYW5baV07XG4gICAgICBzdW0xICs9IHg7XG4gICAgICBzdW0yICs9IHggKiB4O1xuICAgIH1cbiAgICBpZiAodW5iaWFzZWQpIHtcbiAgICAgIHZhcmlhbmNlLnB1c2goKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gY29scykgLyAoY29scyAtIDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyaWFuY2UucHVzaCgoc3VtMiAtIChzdW0xICogc3VtMSkgLyBjb2xzKSAvIGNvbHMpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFyaWFuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYW5jZUJ5Q29sdW1uKG1hdHJpeCwgdW5iaWFzZWQsIG1lYW4pIHtcbiAgY29uc3Qgcm93cyA9IG1hdHJpeC5yb3dzO1xuICBjb25zdCBjb2xzID0gbWF0cml4LmNvbHVtbnM7XG4gIGNvbnN0IHZhcmlhbmNlID0gW107XG5cbiAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHtcbiAgICBsZXQgc3VtMSA9IDA7XG4gICAgbGV0IHN1bTIgPSAwO1xuICAgIGxldCB4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgeCA9IG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuW2pdO1xuICAgICAgc3VtMSArPSB4O1xuICAgICAgc3VtMiArPSB4ICogeDtcbiAgICB9XG4gICAgaWYgKHVuYmlhc2VkKSB7XG4gICAgICB2YXJpYW5jZS5wdXNoKChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIHJvd3MpIC8gKHJvd3MgLSAxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhcmlhbmNlLnB1c2goKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gcm93cykgLyByb3dzKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhcmlhbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFuY2VBbGwobWF0cml4LCB1bmJpYXNlZCwgbWVhbikge1xuICBjb25zdCByb3dzID0gbWF0cml4LnJvd3M7XG4gIGNvbnN0IGNvbHMgPSBtYXRyaXguY29sdW1ucztcbiAgY29uc3Qgc2l6ZSA9IHJvd3MgKiBjb2xzO1xuXG4gIGxldCBzdW0xID0gMDtcbiAgbGV0IHN1bTIgPSAwO1xuICBsZXQgeCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHtcbiAgICAgIHggPSBtYXRyaXguZ2V0KGksIGopIC0gbWVhbjtcbiAgICAgIHN1bTEgKz0geDtcbiAgICAgIHN1bTIgKz0geCAqIHg7XG4gICAgfVxuICB9XG4gIGlmICh1bmJpYXNlZCkge1xuICAgIHJldHVybiAoc3VtMiAtIChzdW0xICogc3VtMSkgLyBzaXplKSAvIChzaXplIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIHNpemUpIC8gc2l6ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2VudGVyQnlSb3cobWF0cml4LCBtZWFuKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC0gbWVhbltpXSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjZW50ZXJCeUNvbHVtbihtYXRyaXgsIG1lYW4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuW2pdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNlbnRlckFsbChtYXRyaXgsIG1lYW4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQnlSb3cobWF0cml4KSB7XG4gIGNvbnN0IHNjYWxlID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgc3VtICs9IE1hdGgucG93KG1hdHJpeC5nZXQoaSwgaiksIDIpIC8gKG1hdHJpeC5jb2x1bW5zIC0gMSk7XG4gICAgfVxuICAgIHNjYWxlLnB1c2goTWF0aC5zcXJ0KHN1bSkpO1xuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlQnlSb3cobWF0cml4LCBzY2FsZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAvIHNjYWxlW2ldKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQnlDb2x1bW4obWF0cml4KSB7XG4gIGNvbnN0IHNjYWxlID0gW107XG4gIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgICAgc3VtICs9IE1hdGgucG93KG1hdHJpeC5nZXQoaSwgaiksIDIpIC8gKG1hdHJpeC5yb3dzIC0gMSk7XG4gICAgfVxuICAgIHNjYWxlLnB1c2goTWF0aC5zcXJ0KHN1bSkpO1xuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlQnlDb2x1bW4obWF0cml4LCBzY2FsZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAvIHNjYWxlW2pdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQWxsKG1hdHJpeCkge1xuICBjb25zdCBkaXZpZGVyID0gbWF0cml4LnNpemUgLSAxO1xuICBsZXQgc3VtID0gMDtcbiAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgICBzdW0gKz0gTWF0aC5wb3cobWF0cml4LmdldChpLCBqKSwgMikgLyBkaXZpZGVyO1xuICAgIH1cbiAgfVxuICByZXR1cm4gTWF0aC5zcXJ0KHN1bSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZUFsbChtYXRyaXgsIHNjYWxlKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC8gc2NhbGUpO1xuICAgIH1cbiAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxNYXRoT3BlcmF0aW9ucyhBYnN0cmFjdE1hdHJpeCwgTWF0cml4KSB7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuYWRkUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuYWRkTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFkZFMgPSBmdW5jdGlvbiBhZGRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFkZE0gPSBmdW5jdGlvbiBhZGRNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKyBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYWRkID0gZnVuY3Rpb24gYWRkKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hZGQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuc3ViUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuc3ViTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YlMgPSBmdW5jdGlvbiBzdWJTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1Yk0gPSBmdW5jdGlvbiBzdWJNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLSBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc3ViID0gZnVuY3Rpb24gc3ViKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zdWIodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3VidHJhY3QgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3VidHJhY3RTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YlM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJ0cmFjdE0gPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViTTtcbiAgQWJzdHJhY3RNYXRyaXguc3VidHJhY3QgPSBBYnN0cmFjdE1hdHJpeC5zdWI7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5tdWxTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5tdWxNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsUyA9IGZ1bmN0aW9uIG11bFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICogdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsTSA9IGZ1bmN0aW9uIG11bE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5tdWwgPSBmdW5jdGlvbiBtdWwobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4Lm11bCh2YWx1ZSk7XG4gIH07XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWx0aXBseSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWw7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWx0aXBseVMgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsUztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bHRpcGx5TSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWxNO1xuICBBYnN0cmFjdE1hdHJpeC5tdWx0aXBseSA9IEFic3RyYWN0TWF0cml4Lm11bDtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gZGl2KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLmRpdlModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLmRpdk0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZTID0gZnVuY3Rpb24gZGl2Uyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLyB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZNID0gZnVuY3Rpb24gZGl2TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC8gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmRpdiA9IGZ1bmN0aW9uIGRpdihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguZGl2KHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdmlkZSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXY7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZpZGVTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdlM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZpZGVNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdk07XG4gIEFic3RyYWN0TWF0cml4LmRpdmlkZSA9IEFic3RyYWN0TWF0cml4LmRpdjtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLm1vZFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLm1vZE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2RTID0gZnVuY3Rpb24gbW9kUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgJSB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2RNID0gZnVuY3Rpb24gbW9kTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICUgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4Lm1vZCA9IGZ1bmN0aW9uIG1vZChtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubW9kKHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZHVsdXMgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kdWx1c1MgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kUztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZHVsdXNNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZE07XG4gIEFic3RyYWN0TWF0cml4Lm1vZHVsdXMgPSBBYnN0cmFjdE1hdHJpeC5tb2Q7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5hbmRTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5hbmRNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYW5kUyA9IGZ1bmN0aW9uIGFuZFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICYgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYW5kTSA9IGZ1bmN0aW9uIGFuZE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAmIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hbmQgPSBmdW5jdGlvbiBhbmQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFuZCh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMub3JTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5vck0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5vclMgPSBmdW5jdGlvbiBvclModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIHwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUub3JNID0gZnVuY3Rpb24gb3JNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgfCBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgub3IgPSBmdW5jdGlvbiBvcihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgub3IodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMueG9yUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMueG9yTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnhvclMgPSBmdW5jdGlvbiB4b3JTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSBeIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnhvck0gPSBmdW5jdGlvbiB4b3JNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgXiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgueG9yID0gZnVuY3Rpb24geG9yKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC54b3IodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sZWZ0U2hpZnQgPSBmdW5jdGlvbiBsZWZ0U2hpZnQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMubGVmdFNoaWZ0Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMubGVmdFNoaWZ0TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxlZnRTaGlmdFMgPSBmdW5jdGlvbiBsZWZ0U2hpZnRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA8PCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sZWZ0U2hpZnRNID0gZnVuY3Rpb24gbGVmdFNoaWZ0TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIDw8IG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sZWZ0U2hpZnQgPSBmdW5jdGlvbiBsZWZ0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxlZnRTaGlmdCh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQgPSBmdW5jdGlvbiBzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTID0gZnVuY3Rpb24gc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopID4+IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNID0gZnVuY3Rpb24gc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+PiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdCA9IGZ1bmN0aW9uIHNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0ID0gZnVuY3Rpb24gcmlnaHRTaGlmdCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5yaWdodFNoaWZ0Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMucmlnaHRTaGlmdE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0UyA9IGZ1bmN0aW9uIHJpZ2h0U2hpZnRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+Pj4gdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdE0gPSBmdW5jdGlvbiByaWdodFNoaWZ0TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopID4+PiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucmlnaHRTaGlmdCA9IGZ1bmN0aW9uIHJpZ2h0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnJpZ2h0U2hpZnQodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0ID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnQ7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnRTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnRTO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0TSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0TTtcbiAgQWJzdHJhY3RNYXRyaXguemVyb0ZpbGxSaWdodFNoaWZ0ID0gQWJzdHJhY3RNYXRyaXgucmlnaHRTaGlmdDtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubm90ID0gZnVuY3Rpb24gbm90KCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgfih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5ub3QgPSBmdW5jdGlvbiBub3QobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubm90KCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uIGFicygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYWJzKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFicyA9IGZ1bmN0aW9uIGFicyhtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hYnMoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYWNvcyA9IGZ1bmN0aW9uIGFjb3MoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmFjb3ModGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYWNvcyA9IGZ1bmN0aW9uIGFjb3MobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYWNvcygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hY29zaCA9IGZ1bmN0aW9uIGFjb3NoKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hY29zaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hY29zaCA9IGZ1bmN0aW9uIGFjb3NoKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFjb3NoKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFzaW4gPSBmdW5jdGlvbiBhc2luKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hc2luKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFzaW4gPSBmdW5jdGlvbiBhc2luKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFzaW4oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYXNpbmggPSBmdW5jdGlvbiBhc2luaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYXNpbmgodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYXNpbmggPSBmdW5jdGlvbiBhc2luaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hc2luaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hdGFuID0gZnVuY3Rpb24gYXRhbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYXRhbih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hdGFuID0gZnVuY3Rpb24gYXRhbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hdGFuKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmF0YW5oID0gZnVuY3Rpb24gYXRhbmgoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmF0YW5oKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmF0YW5oID0gZnVuY3Rpb24gYXRhbmgobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYXRhbmgoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY2JydCA9IGZ1bmN0aW9uIGNicnQoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNicnQodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY2JydCA9IGZ1bmN0aW9uIGNicnQobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY2JydCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jZWlsID0gZnVuY3Rpb24gY2VpbCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY2VpbCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jZWlsID0gZnVuY3Rpb24gY2VpbChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jZWlsKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmNsejMyID0gZnVuY3Rpb24gY2x6MzIoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNsejMyKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmNsejMyID0gZnVuY3Rpb24gY2x6MzIobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY2x6MzIoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY29zID0gZnVuY3Rpb24gY29zKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5jb3ModGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY29zID0gZnVuY3Rpb24gY29zKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmNvcygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jb3NoID0gZnVuY3Rpb24gY29zaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY29zaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jb3NoID0gZnVuY3Rpb24gY29zaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jb3NoKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmV4cCA9IGZ1bmN0aW9uIGV4cCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZXhwKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmV4cCA9IGZ1bmN0aW9uIGV4cChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5leHAoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZXhwbTEgPSBmdW5jdGlvbiBleHBtMSgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZXhwbTEodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguZXhwbTEgPSBmdW5jdGlvbiBleHBtMShtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5leHBtMSgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5mbG9vciA9IGZ1bmN0aW9uIGZsb29yKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5mbG9vcih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5mbG9vciA9IGZ1bmN0aW9uIGZsb29yKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmZsb29yKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmZyb3VuZCA9IGZ1bmN0aW9uIGZyb3VuZCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZnJvdW5kKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmZyb3VuZCA9IGZ1bmN0aW9uIGZyb3VuZChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5mcm91bmQoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubG9nID0gZnVuY3Rpb24gbG9nKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2codGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubG9nID0gZnVuY3Rpb24gbG9nKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sb2cxcCA9IGZ1bmN0aW9uIGxvZzFwKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2cxcCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sb2cxcCA9IGZ1bmN0aW9uIGxvZzFwKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZzFwKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxvZzEwID0gZnVuY3Rpb24gbG9nMTAoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmxvZzEwKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmxvZzEwID0gZnVuY3Rpb24gbG9nMTAobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubG9nMTAoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubG9nMiA9IGZ1bmN0aW9uIGxvZzIoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmxvZzIodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubG9nMiA9IGZ1bmN0aW9uIGxvZzIobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubG9nMigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yb3VuZCA9IGZ1bmN0aW9uIHJvdW5kKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5yb3VuZCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5yb3VuZCA9IGZ1bmN0aW9uIHJvdW5kKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnJvdW5kKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zaWduKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNpZ24gPSBmdW5jdGlvbiBzaWduKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpZ24oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc2luID0gZnVuY3Rpb24gc2luKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zaW4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc2luID0gZnVuY3Rpb24gc2luKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaW5oID0gZnVuY3Rpb24gc2luaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguc2luaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5zaW5oID0gZnVuY3Rpb24gc2luaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zaW5oKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0KCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zcXJ0KHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNxcnQgPSBmdW5jdGlvbiBzcXJ0KG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNxcnQoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUudGFuID0gZnVuY3Rpb24gdGFuKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC50YW4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgudGFuID0gZnVuY3Rpb24gdGFuKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnRhbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS50YW5oID0gZnVuY3Rpb24gdGFuaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgudGFuaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC50YW5oID0gZnVuY3Rpb24gdGFuaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC50YW5oKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnRydW5jID0gZnVuY3Rpb24gdHJ1bmMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnRydW5jKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnRydW5jID0gZnVuY3Rpb24gdHJ1bmMobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgudHJ1bmMoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wb3cgPSBmdW5jdGlvbiBwb3cobWF0cml4LCBhcmcwKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgucG93KGFyZzApO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3codmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMucG93Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMucG93TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnBvd1MgPSBmdW5jdGlvbiBwb3dTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnBvdyh0aGlzLmdldChpLCBqKSwgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnBvd00gPSBmdW5jdGlvbiBwb3dNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5wb3codGhpcy5nZXQoaSwgaiksIG1hdHJpeC5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBBYnN0cmFjdE1hdHJpeCB9IGZyb20gJy4uL21hdHJpeCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdyYXBwZXJNYXRyaXgyRCBleHRlbmRzIEFic3RyYWN0TWF0cml4IHtcbiAgY29uc3RydWN0b3IoZGF0YSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLnJvd3MgPSBkYXRhLmxlbmd0aDtcbiAgICB0aGlzLmNvbHVtbnMgPSBkYXRhWzBdLmxlbmd0aDtcbiAgfVxuXG4gIHNldChyb3dJbmRleCwgY29sdW1uSW5kZXgsIHZhbHVlKSB7XG4gICAgdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF07XG4gIH1cbn1cbiIsImltcG9ydCBNYXRyaXggZnJvbSAnLi4vbWF0cml4JztcbmltcG9ydCBXcmFwcGVyTWF0cml4MkQgZnJvbSAnLi4vd3JhcC9XcmFwcGVyTWF0cml4MkQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMdURlY29tcG9zaXRpb24ge1xuICBjb25zdHJ1Y3RvcihtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgobWF0cml4KTtcblxuICAgIGxldCBsdSA9IG1hdHJpeC5jbG9uZSgpO1xuICAgIGxldCByb3dzID0gbHUucm93cztcbiAgICBsZXQgY29sdW1ucyA9IGx1LmNvbHVtbnM7XG4gICAgbGV0IHBpdm90VmVjdG9yID0gbmV3IEZsb2F0NjRBcnJheShyb3dzKTtcbiAgICBsZXQgcGl2b3RTaWduID0gMTtcbiAgICBsZXQgaSwgaiwgaywgcCwgcywgdCwgdjtcbiAgICBsZXQgTFVjb2xqLCBrbWF4O1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgcGl2b3RWZWN0b3JbaV0gPSBpO1xuICAgIH1cblxuICAgIExVY29saiA9IG5ldyBGbG9hdDY0QXJyYXkocm93cyk7XG5cbiAgICBmb3IgKGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIExVY29saltpXSA9IGx1LmdldChpLCBqKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBrbWF4ID0gTWF0aC5taW4oaSwgaik7XG4gICAgICAgIHMgPSAwO1xuICAgICAgICBmb3IgKGsgPSAwOyBrIDwga21heDsgaysrKSB7XG4gICAgICAgICAgcyArPSBsdS5nZXQoaSwgaykgKiBMVWNvbGpba107XG4gICAgICAgIH1cbiAgICAgICAgTFVjb2xqW2ldIC09IHM7XG4gICAgICAgIGx1LnNldChpLCBqLCBMVWNvbGpbaV0pO1xuICAgICAgfVxuXG4gICAgICBwID0gajtcbiAgICAgIGZvciAoaSA9IGogKyAxOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhMVWNvbGpbaV0pID4gTWF0aC5hYnMoTFVjb2xqW3BdKSkge1xuICAgICAgICAgIHAgPSBpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwICE9PSBqKSB7XG4gICAgICAgIGZvciAoayA9IDA7IGsgPCBjb2x1bW5zOyBrKyspIHtcbiAgICAgICAgICB0ID0gbHUuZ2V0KHAsIGspO1xuICAgICAgICAgIGx1LnNldChwLCBrLCBsdS5nZXQoaiwgaykpO1xuICAgICAgICAgIGx1LnNldChqLCBrLCB0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHYgPSBwaXZvdFZlY3RvcltwXTtcbiAgICAgICAgcGl2b3RWZWN0b3JbcF0gPSBwaXZvdFZlY3RvcltqXTtcbiAgICAgICAgcGl2b3RWZWN0b3Jbal0gPSB2O1xuXG4gICAgICAgIHBpdm90U2lnbiA9IC1waXZvdFNpZ247XG4gICAgICB9XG5cbiAgICAgIGlmIChqIDwgcm93cyAmJiBsdS5nZXQoaiwgaikgIT09IDApIHtcbiAgICAgICAgZm9yIChpID0gaiArIDE7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgICBsdS5zZXQoaSwgaiwgbHUuZ2V0KGksIGopIC8gbHUuZ2V0KGosIGopKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuTFUgPSBsdTtcbiAgICB0aGlzLnBpdm90VmVjdG9yID0gcGl2b3RWZWN0b3I7XG4gICAgdGhpcy5waXZvdFNpZ24gPSBwaXZvdFNpZ247XG4gIH1cblxuICBpc1Npbmd1bGFyKCkge1xuICAgIGxldCBkYXRhID0gdGhpcy5MVTtcbiAgICBsZXQgY29sID0gZGF0YS5jb2x1bW5zO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sOyBqKyspIHtcbiAgICAgIGlmIChkYXRhLmdldChqLCBqKSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc29sdmUodmFsdWUpIHtcbiAgICB2YWx1ZSA9IE1hdHJpeC5jaGVja01hdHJpeCh2YWx1ZSk7XG5cbiAgICBsZXQgbHUgPSB0aGlzLkxVO1xuICAgIGxldCByb3dzID0gbHUucm93cztcblxuICAgIGlmIChyb3dzICE9PSB2YWx1ZS5yb3dzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWF0cml4IGRpbWVuc2lvbnMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNTaW5ndWxhcigpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xVIG1hdHJpeCBpcyBzaW5ndWxhcicpO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IHZhbHVlLmNvbHVtbnM7XG4gICAgbGV0IFggPSB2YWx1ZS5zdWJNYXRyaXhSb3codGhpcy5waXZvdFZlY3RvciwgMCwgY291bnQgLSAxKTtcbiAgICBsZXQgY29sdW1ucyA9IGx1LmNvbHVtbnM7XG4gICAgbGV0IGksIGosIGs7XG5cbiAgICBmb3IgKGsgPSAwOyBrIDwgY29sdW1uczsgaysrKSB7XG4gICAgICBmb3IgKGkgPSBrICsgMTsgaSA8IGNvbHVtbnM7IGkrKykge1xuICAgICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICAgIFguc2V0KGksIGosIFguZ2V0KGksIGopIC0gWC5nZXQoaywgaikgKiBsdS5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoayA9IGNvbHVtbnMgLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgWC5zZXQoaywgaiwgWC5nZXQoaywgaikgLyBsdS5nZXQoaywgaykpO1xuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGs7IGkrKykge1xuICAgICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICAgIFguc2V0KGksIGosIFguZ2V0KGksIGopIC0gWC5nZXQoaywgaikgKiBsdS5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IGRldGVybWluYW50KCkge1xuICAgIGxldCBkYXRhID0gdGhpcy5MVTtcbiAgICBpZiAoIWRhdGEuaXNTcXVhcmUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggbXVzdCBiZSBzcXVhcmUnKTtcbiAgICB9XG4gICAgbGV0IGRldGVybWluYW50ID0gdGhpcy5waXZvdFNpZ247XG4gICAgbGV0IGNvbCA9IGRhdGEuY29sdW1ucztcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbDsgaisrKSB7XG4gICAgICBkZXRlcm1pbmFudCAqPSBkYXRhLmdldChqLCBqKTtcbiAgICB9XG4gICAgcmV0dXJuIGRldGVybWluYW50O1xuICB9XG5cbiAgZ2V0IGxvd2VyVHJpYW5ndWxhck1hdHJpeCgpIHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuTFU7XG4gICAgbGV0IHJvd3MgPSBkYXRhLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBkYXRhLmNvbHVtbnM7XG4gICAgbGV0IFggPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBpZiAoaSA+IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBkYXRhLmdldChpLCBqKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gaikge1xuICAgICAgICAgIFguc2V0KGksIGosIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFguc2V0KGksIGosIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IHVwcGVyVHJpYW5ndWxhck1hdHJpeCgpIHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuTFU7XG4gICAgbGV0IHJvd3MgPSBkYXRhLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBkYXRhLmNvbHVtbnM7XG4gICAgbGV0IFggPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBpZiAoaSA8PSBqKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgZGF0YS5nZXQoaSwgaikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFguc2V0KGksIGosIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IHBpdm90UGVybXV0YXRpb25WZWN0b3IoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5waXZvdFZlY3Rvcik7XG4gIH1cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBoeXBvdGVudXNlKGEsIGIpIHtcbiAgbGV0IHIgPSAwO1xuICBpZiAoTWF0aC5hYnMoYSkgPiBNYXRoLmFicyhiKSkge1xuICAgIHIgPSBiIC8gYTtcbiAgICByZXR1cm4gTWF0aC5hYnMoYSkgKiBNYXRoLnNxcnQoMSArIHIgKiByKTtcbiAgfVxuICBpZiAoYiAhPT0gMCkge1xuICAgIHIgPSBhIC8gYjtcbiAgICByZXR1cm4gTWF0aC5hYnMoYikgKiBNYXRoLnNxcnQoMSArIHIgKiByKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbiIsImltcG9ydCBNYXRyaXggZnJvbSAnLi4vbWF0cml4JztcbmltcG9ydCBXcmFwcGVyTWF0cml4MkQgZnJvbSAnLi4vd3JhcC9XcmFwcGVyTWF0cml4MkQnO1xuXG5pbXBvcnQgeyBoeXBvdGVudXNlIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUXJEZWNvbXBvc2l0aW9uIHtcbiAgY29uc3RydWN0b3IodmFsdWUpIHtcbiAgICB2YWx1ZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeCh2YWx1ZSk7XG5cbiAgICBsZXQgcXIgPSB2YWx1ZS5jbG9uZSgpO1xuICAgIGxldCBtID0gdmFsdWUucm93cztcbiAgICBsZXQgbiA9IHZhbHVlLmNvbHVtbnM7XG4gICAgbGV0IHJkaWFnID0gbmV3IEZsb2F0NjRBcnJheShuKTtcbiAgICBsZXQgaSwgaiwgaywgcztcblxuICAgIGZvciAoayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgIGxldCBucm0gPSAwO1xuICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICBucm0gPSBoeXBvdGVudXNlKG5ybSwgcXIuZ2V0KGksIGspKTtcbiAgICAgIH1cbiAgICAgIGlmIChucm0gIT09IDApIHtcbiAgICAgICAgaWYgKHFyLmdldChrLCBrKSA8IDApIHtcbiAgICAgICAgICBucm0gPSAtbnJtO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBxci5zZXQoaSwgaywgcXIuZ2V0KGksIGspIC8gbnJtKTtcbiAgICAgICAgfVxuICAgICAgICBxci5zZXQoaywgaywgcXIuZ2V0KGssIGspICsgMSk7XG4gICAgICAgIGZvciAoaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgcyA9IDA7XG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgcyArPSBxci5nZXQoaSwgaykgKiBxci5nZXQoaSwgaik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMgPSAtcyAvIHFyLmdldChrLCBrKTtcbiAgICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBxci5zZXQoaSwgaiwgcXIuZ2V0KGksIGopICsgcyAqIHFyLmdldChpLCBrKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZGlhZ1trXSA9IC1ucm07XG4gICAgfVxuXG4gICAgdGhpcy5RUiA9IHFyO1xuICAgIHRoaXMuUmRpYWcgPSByZGlhZztcbiAgfVxuXG4gIHNvbHZlKHZhbHVlKSB7XG4gICAgdmFsdWUgPSBNYXRyaXguY2hlY2tNYXRyaXgodmFsdWUpO1xuXG4gICAgbGV0IHFyID0gdGhpcy5RUjtcbiAgICBsZXQgbSA9IHFyLnJvd3M7XG5cbiAgICBpZiAodmFsdWUucm93cyAhPT0gbSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggcm93IGRpbWVuc2lvbnMgbXVzdCBhZ3JlZScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNGdWxsUmFuaygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHJpeCBpcyByYW5rIGRlZmljaWVudCcpO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IHZhbHVlLmNvbHVtbnM7XG4gICAgbGV0IFggPSB2YWx1ZS5jbG9uZSgpO1xuICAgIGxldCBuID0gcXIuY29sdW1ucztcbiAgICBsZXQgaSwgaiwgaywgcztcblxuICAgIGZvciAoayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgIHMgPSAwO1xuICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgcyArPSBxci5nZXQoaSwgaykgKiBYLmdldChpLCBqKTtcbiAgICAgICAgfVxuICAgICAgICBzID0gLXMgLyBxci5nZXQoaywgayk7XG4gICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSArIHMgKiBxci5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoayA9IG4gLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgWC5zZXQoaywgaiwgWC5nZXQoaywgaikgLyB0aGlzLlJkaWFnW2tdKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBrOyBpKyspIHtcbiAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSAtIFguZ2V0KGssIGopICogcXIuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBYLnN1Yk1hdHJpeCgwLCBuIC0gMSwgMCwgY291bnQgLSAxKTtcbiAgfVxuXG4gIGlzRnVsbFJhbmsoKSB7XG4gICAgbGV0IGNvbHVtbnMgPSB0aGlzLlFSLmNvbHVtbnM7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLlJkaWFnW2ldID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgdXBwZXJUcmlhbmd1bGFyTWF0cml4KCkge1xuICAgIGxldCBxciA9IHRoaXMuUVI7XG4gICAgbGV0IG4gPSBxci5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeChuLCBuKTtcbiAgICBsZXQgaSwgajtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGlmIChpIDwgaikge1xuICAgICAgICAgIFguc2V0KGksIGosIHFyLmdldChpLCBqKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gaikge1xuICAgICAgICAgIFguc2V0KGksIGosIHRoaXMuUmRpYWdbaV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFguc2V0KGksIGosIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IG9ydGhvZ29uYWxNYXRyaXgoKSB7XG4gICAgbGV0IHFyID0gdGhpcy5RUjtcbiAgICBsZXQgcm93cyA9IHFyLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBxci5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBsZXQgaSwgaiwgaywgcztcblxuICAgIGZvciAoayA9IGNvbHVtbnMgLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBYLnNldChpLCBrLCAwKTtcbiAgICAgIH1cbiAgICAgIFguc2V0KGssIGssIDEpO1xuICAgICAgZm9yIChqID0gazsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBpZiAocXIuZ2V0KGssIGspICE9PSAwKSB7XG4gICAgICAgICAgcyA9IDA7XG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICAgICAgcyArPSBxci5nZXQoaSwgaykgKiBYLmdldChpLCBqKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzID0gLXMgLyBxci5nZXQoaywgayk7XG5cbiAgICAgICAgICBmb3IgKGkgPSBrOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSArIHMgKiBxci5nZXQoaSwgaykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxufVxuIiwiaW1wb3J0IE1hdHJpeCBmcm9tICcuLi9tYXRyaXgnO1xuaW1wb3J0IFdyYXBwZXJNYXRyaXgyRCBmcm9tICcuLi93cmFwL1dyYXBwZXJNYXRyaXgyRCc7XG5cbmltcG9ydCB7IGh5cG90ZW51c2UgfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHZhbHVlLCBvcHRpb25zID0ge30pIHtcbiAgICB2YWx1ZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeCh2YWx1ZSk7XG5cbiAgICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHJpeCBtdXN0IGJlIG5vbi1lbXB0eScpO1xuICAgIH1cblxuICAgIGxldCBtID0gdmFsdWUucm93cztcbiAgICBsZXQgbiA9IHZhbHVlLmNvbHVtbnM7XG5cbiAgICBjb25zdCB7XG4gICAgICBjb21wdXRlTGVmdFNpbmd1bGFyVmVjdG9ycyA9IHRydWUsXG4gICAgICBjb21wdXRlUmlnaHRTaW5ndWxhclZlY3RvcnMgPSB0cnVlLFxuICAgICAgYXV0b1RyYW5zcG9zZSA9IGZhbHNlLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgbGV0IHdhbnR1ID0gQm9vbGVhbihjb21wdXRlTGVmdFNpbmd1bGFyVmVjdG9ycyk7XG4gICAgbGV0IHdhbnR2ID0gQm9vbGVhbihjb21wdXRlUmlnaHRTaW5ndWxhclZlY3RvcnMpO1xuXG4gICAgbGV0IHN3YXBwZWQgPSBmYWxzZTtcbiAgICBsZXQgYTtcbiAgICBpZiAobSA8IG4pIHtcbiAgICAgIGlmICghYXV0b1RyYW5zcG9zZSkge1xuICAgICAgICBhID0gdmFsdWUuY2xvbmUoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdDb21wdXRpbmcgU1ZEIG9uIGEgbWF0cml4IHdpdGggbW9yZSBjb2x1bW5zIHRoYW4gcm93cy4gQ29uc2lkZXIgZW5hYmxpbmcgYXV0b1RyYW5zcG9zZScsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhID0gdmFsdWUudHJhbnNwb3NlKCk7XG4gICAgICAgIG0gPSBhLnJvd3M7XG4gICAgICAgIG4gPSBhLmNvbHVtbnM7XG4gICAgICAgIHN3YXBwZWQgPSB0cnVlO1xuICAgICAgICBsZXQgYXV4ID0gd2FudHU7XG4gICAgICAgIHdhbnR1ID0gd2FudHY7XG4gICAgICAgIHdhbnR2ID0gYXV4O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhID0gdmFsdWUuY2xvbmUoKTtcbiAgICB9XG5cbiAgICBsZXQgbnUgPSBNYXRoLm1pbihtLCBuKTtcbiAgICBsZXQgbmkgPSBNYXRoLm1pbihtICsgMSwgbik7XG4gICAgbGV0IHMgPSBuZXcgRmxvYXQ2NEFycmF5KG5pKTtcbiAgICBsZXQgVSA9IG5ldyBNYXRyaXgobSwgbnUpO1xuICAgIGxldCBWID0gbmV3IE1hdHJpeChuLCBuKTtcblxuICAgIGxldCBlID0gbmV3IEZsb2F0NjRBcnJheShuKTtcbiAgICBsZXQgd29yayA9IG5ldyBGbG9hdDY0QXJyYXkobSk7XG5cbiAgICBsZXQgc2kgPSBuZXcgRmxvYXQ2NEFycmF5KG5pKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5pOyBpKyspIHNpW2ldID0gaTtcblxuICAgIGxldCBuY3QgPSBNYXRoLm1pbihtIC0gMSwgbik7XG4gICAgbGV0IG5ydCA9IE1hdGgubWF4KDAsIE1hdGgubWluKG4gLSAyLCBtKSk7XG4gICAgbGV0IG1yYyA9IE1hdGgubWF4KG5jdCwgbnJ0KTtcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbXJjOyBrKyspIHtcbiAgICAgIGlmIChrIDwgbmN0KSB7XG4gICAgICAgIHNba10gPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgIHNba10gPSBoeXBvdGVudXNlKHNba10sIGEuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc1trXSAhPT0gMCkge1xuICAgICAgICAgIGlmIChhLmdldChrLCBrKSA8IDApIHtcbiAgICAgICAgICAgIHNba10gPSAtc1trXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIGEuc2V0KGksIGssIGEuZ2V0KGksIGspIC8gc1trXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGEuc2V0KGssIGssIGEuZ2V0KGssIGspICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgc1trXSA9IC1zW2tdO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBuOyBqKyspIHtcbiAgICAgICAgaWYgKGsgPCBuY3QgJiYgc1trXSAhPT0gMCkge1xuICAgICAgICAgIGxldCB0ID0gMDtcbiAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgdCArPSBhLmdldChpLCBrKSAqIGEuZ2V0KGksIGopO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0ID0gLXQgLyBhLmdldChrLCBrKTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgYS5zZXQoaSwgaiwgYS5nZXQoaSwgaikgKyB0ICogYS5nZXQoaSwgaykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlW2pdID0gYS5nZXQoaywgaik7XG4gICAgICB9XG5cbiAgICAgIGlmICh3YW50dSAmJiBrIDwgbmN0KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgVS5zZXQoaSwgaywgYS5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChrIDwgbnJ0KSB7XG4gICAgICAgIGVba10gPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBlW2tdID0gaHlwb3RlbnVzZShlW2tdLCBlW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZVtrXSAhPT0gMCkge1xuICAgICAgICAgIGlmIChlW2sgKyAxXSA8IDApIHtcbiAgICAgICAgICAgIGVba10gPSAwIC0gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBlW2ldIC89IGVba107XG4gICAgICAgICAgfVxuICAgICAgICAgIGVbayArIDFdICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgZVtrXSA9IC1lW2tdO1xuICAgICAgICBpZiAoayArIDEgPCBtICYmIGVba10gIT09IDApIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHdvcmtbaV0gPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICB3b3JrW2ldICs9IGVbal0gKiBhLmdldChpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdCA9IC1lW2pdIC8gZVtrICsgMV07XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgYS5zZXQoaSwgaiwgYS5nZXQoaSwgaikgKyB0ICogd29ya1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3YW50dikge1xuICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgVi5zZXQoaSwgaywgZVtpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHAgPSBNYXRoLm1pbihuLCBtICsgMSk7XG4gICAgaWYgKG5jdCA8IG4pIHtcbiAgICAgIHNbbmN0XSA9IGEuZ2V0KG5jdCwgbmN0KTtcbiAgICB9XG4gICAgaWYgKG0gPCBwKSB7XG4gICAgICBzW3AgLSAxXSA9IDA7XG4gICAgfVxuICAgIGlmIChucnQgKyAxIDwgcCkge1xuICAgICAgZVtucnRdID0gYS5nZXQobnJ0LCBwIC0gMSk7XG4gICAgfVxuICAgIGVbcCAtIDFdID0gMDtcblxuICAgIGlmICh3YW50dSkge1xuICAgICAgZm9yIChsZXQgaiA9IG5jdDsgaiA8IG51OyBqKyspIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBVLnNldChpLCBqLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBVLnNldChqLCBqLCAxKTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGsgPSBuY3QgLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgICBpZiAoc1trXSAhPT0gMCkge1xuICAgICAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG51OyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgIHQgKz0gVS5nZXQoaSwgaykgKiBVLmdldChpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQgPSAtdCAvIFUuZ2V0KGssIGspO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgVS5zZXQoaSwgaiwgVS5nZXQoaSwgaikgKyB0ICogVS5nZXQoaSwgaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgVS5zZXQoaSwgaywgLVUuZ2V0KGksIGspKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgVS5zZXQoaywgaywgMSArIFUuZ2V0KGssIGspKTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGsgLSAxOyBpKyspIHtcbiAgICAgICAgICAgIFUuc2V0KGksIGssIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgVS5zZXQoaSwgaywgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFUuc2V0KGssIGssIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHdhbnR2KSB7XG4gICAgICBmb3IgKGxldCBrID0gbiAtIDE7IGsgPj0gMDsgay0tKSB7XG4gICAgICAgIGlmIChrIDwgbnJ0ICYmIGVba10gIT09IDApIHtcbiAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICB0ICs9IFYuZ2V0KGksIGspICogVi5nZXQoaSwgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ID0gLXQgLyBWLmdldChrICsgMSwgayk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgVi5zZXQoaSwgaiwgVi5nZXQoaSwgaikgKyB0ICogVi5nZXQoaSwgaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIFYuc2V0KGksIGssIDApO1xuICAgICAgICB9XG4gICAgICAgIFYuc2V0KGssIGssIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwcCA9IHAgLSAxO1xuICAgIGxldCBpdGVyID0gMDtcbiAgICBsZXQgZXBzID0gTnVtYmVyLkVQU0lMT047XG4gICAgd2hpbGUgKHAgPiAwKSB7XG4gICAgICBsZXQgaywga2FzZTtcbiAgICAgIGZvciAoayA9IHAgLSAyOyBrID49IC0xOyBrLS0pIHtcbiAgICAgICAgaWYgKGsgPT09IC0xKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxwaGEgPVxuICAgICAgICAgIE51bWJlci5NSU5fVkFMVUUgKyBlcHMgKiBNYXRoLmFicyhzW2tdICsgTWF0aC5hYnMoc1trICsgMV0pKTtcbiAgICAgICAgaWYgKE1hdGguYWJzKGVba10pIDw9IGFscGhhIHx8IE51bWJlci5pc05hTihlW2tdKSkge1xuICAgICAgICAgIGVba10gPSAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoayA9PT0gcCAtIDIpIHtcbiAgICAgICAga2FzZSA9IDQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQga3M7XG4gICAgICAgIGZvciAoa3MgPSBwIC0gMTsga3MgPj0gazsga3MtLSkge1xuICAgICAgICAgIGlmIChrcyA9PT0gaykge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIChrcyAhPT0gcCA/IE1hdGguYWJzKGVba3NdKSA6IDApICtcbiAgICAgICAgICAgIChrcyAhPT0gayArIDEgPyBNYXRoLmFicyhlW2tzIC0gMV0pIDogMCk7XG4gICAgICAgICAgaWYgKE1hdGguYWJzKHNba3NdKSA8PSBlcHMgKiB0KSB7XG4gICAgICAgICAgICBzW2tzXSA9IDA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtzID09PSBrKSB7XG4gICAgICAgICAga2FzZSA9IDM7XG4gICAgICAgIH0gZWxzZSBpZiAoa3MgPT09IHAgLSAxKSB7XG4gICAgICAgICAga2FzZSA9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2FzZSA9IDI7XG4gICAgICAgICAgayA9IGtzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGsrKztcblxuICAgICAgc3dpdGNoIChrYXNlKSB7XG4gICAgICAgIGNhc2UgMToge1xuICAgICAgICAgIGxldCBmID0gZVtwIC0gMl07XG4gICAgICAgICAgZVtwIC0gMl0gPSAwO1xuICAgICAgICAgIGZvciAobGV0IGogPSBwIC0gMjsgaiA+PSBrOyBqLS0pIHtcbiAgICAgICAgICAgIGxldCB0ID0gaHlwb3RlbnVzZShzW2pdLCBmKTtcbiAgICAgICAgICAgIGxldCBjcyA9IHNbal0gLyB0O1xuICAgICAgICAgICAgbGV0IHNuID0gZiAvIHQ7XG4gICAgICAgICAgICBzW2pdID0gdDtcbiAgICAgICAgICAgIGlmIChqICE9PSBrKSB7XG4gICAgICAgICAgICAgIGYgPSAtc24gKiBlW2ogLSAxXTtcbiAgICAgICAgICAgICAgZVtqIC0gMV0gPSBjcyAqIGVbaiAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhbnR2KSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IGNzICogVi5nZXQoaSwgaikgKyBzbiAqIFYuZ2V0KGksIHAgLSAxKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBwIC0gMSwgLXNuICogVi5nZXQoaSwgaikgKyBjcyAqIFYuZ2V0KGksIHAgLSAxKSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaiwgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAyOiB7XG4gICAgICAgICAgbGV0IGYgPSBlW2sgLSAxXTtcbiAgICAgICAgICBlW2sgLSAxXSA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGs7IGogPCBwOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gaHlwb3RlbnVzZShzW2pdLCBmKTtcbiAgICAgICAgICAgIGxldCBjcyA9IHNbal0gLyB0O1xuICAgICAgICAgICAgbGV0IHNuID0gZiAvIHQ7XG4gICAgICAgICAgICBzW2pdID0gdDtcbiAgICAgICAgICAgIGYgPSAtc24gKiBlW2pdO1xuICAgICAgICAgICAgZVtqXSA9IGNzICogZVtqXTtcbiAgICAgICAgICAgIGlmICh3YW50dSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBjcyAqIFUuZ2V0KGksIGopICsgc24gKiBVLmdldChpLCBrIC0gMSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgayAtIDEsIC1zbiAqIFUuZ2V0KGksIGopICsgY3MgKiBVLmdldChpLCBrIC0gMSkpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGosIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMzoge1xuICAgICAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5tYXgoXG4gICAgICAgICAgICBNYXRoLmFicyhzW3AgLSAxXSksXG4gICAgICAgICAgICBNYXRoLmFicyhzW3AgLSAyXSksXG4gICAgICAgICAgICBNYXRoLmFicyhlW3AgLSAyXSksXG4gICAgICAgICAgICBNYXRoLmFicyhzW2tdKSxcbiAgICAgICAgICAgIE1hdGguYWJzKGVba10pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3Qgc3AgPSBzW3AgLSAxXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IHNwbTEgPSBzW3AgLSAyXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IGVwbTEgPSBlW3AgLSAyXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IHNrID0gc1trXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IGVrID0gZVtrXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IGIgPSAoKHNwbTEgKyBzcCkgKiAoc3BtMSAtIHNwKSArIGVwbTEgKiBlcG0xKSAvIDI7XG4gICAgICAgICAgY29uc3QgYyA9IHNwICogZXBtMSAqIChzcCAqIGVwbTEpO1xuICAgICAgICAgIGxldCBzaGlmdCA9IDA7XG4gICAgICAgICAgaWYgKGIgIT09IDAgfHwgYyAhPT0gMCkge1xuICAgICAgICAgICAgaWYgKGIgPCAwKSB7XG4gICAgICAgICAgICAgIHNoaWZ0ID0gMCAtIE1hdGguc3FydChiICogYiArIGMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2hpZnQgPSBNYXRoLnNxcnQoYiAqIGIgKyBjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNoaWZ0ID0gYyAvIChiICsgc2hpZnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZiA9IChzayArIHNwKSAqIChzayAtIHNwKSArIHNoaWZ0O1xuICAgICAgICAgIGxldCBnID0gc2sgKiBlaztcbiAgICAgICAgICBmb3IgKGxldCBqID0gazsgaiA8IHAgLSAxOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gaHlwb3RlbnVzZShmLCBnKTtcbiAgICAgICAgICAgIGlmICh0ID09PSAwKSB0ID0gTnVtYmVyLk1JTl9WQUxVRTtcbiAgICAgICAgICAgIGxldCBjcyA9IGYgLyB0O1xuICAgICAgICAgICAgbGV0IHNuID0gZyAvIHQ7XG4gICAgICAgICAgICBpZiAoaiAhPT0gaykge1xuICAgICAgICAgICAgICBlW2ogLSAxXSA9IHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmID0gY3MgKiBzW2pdICsgc24gKiBlW2pdO1xuICAgICAgICAgICAgZVtqXSA9IGNzICogZVtqXSAtIHNuICogc1tqXTtcbiAgICAgICAgICAgIGcgPSBzbiAqIHNbaiArIDFdO1xuICAgICAgICAgICAgc1tqICsgMV0gPSBjcyAqIHNbaiArIDFdO1xuICAgICAgICAgICAgaWYgKHdhbnR2KSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IGNzICogVi5nZXQoaSwgaikgKyBzbiAqIFYuZ2V0KGksIGogKyAxKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBqICsgMSwgLXNuICogVi5nZXQoaSwgaikgKyBjcyAqIFYuZ2V0KGksIGogKyAxKSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaiwgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQgPSBoeXBvdGVudXNlKGYsIGcpO1xuICAgICAgICAgICAgaWYgKHQgPT09IDApIHQgPSBOdW1iZXIuTUlOX1ZBTFVFO1xuICAgICAgICAgICAgY3MgPSBmIC8gdDtcbiAgICAgICAgICAgIHNuID0gZyAvIHQ7XG4gICAgICAgICAgICBzW2pdID0gdDtcbiAgICAgICAgICAgIGYgPSBjcyAqIGVbal0gKyBzbiAqIHNbaiArIDFdO1xuICAgICAgICAgICAgc1tqICsgMV0gPSAtc24gKiBlW2pdICsgY3MgKiBzW2ogKyAxXTtcbiAgICAgICAgICAgIGcgPSBzbiAqIGVbaiArIDFdO1xuICAgICAgICAgICAgZVtqICsgMV0gPSBjcyAqIGVbaiArIDFdO1xuICAgICAgICAgICAgaWYgKHdhbnR1ICYmIGogPCBtIC0gMSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBjcyAqIFUuZ2V0KGksIGopICsgc24gKiBVLmdldChpLCBqICsgMSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgaiArIDEsIC1zbiAqIFUuZ2V0KGksIGopICsgY3MgKiBVLmdldChpLCBqICsgMSkpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGosIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVbcCAtIDJdID0gZjtcbiAgICAgICAgICBpdGVyID0gaXRlciArIDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSA0OiB7XG4gICAgICAgICAgaWYgKHNba10gPD0gMCkge1xuICAgICAgICAgICAgc1trXSA9IHNba10gPCAwID8gLXNba10gOiAwO1xuICAgICAgICAgICAgaWYgKHdhbnR2KSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHBwOyBpKyspIHtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBrLCAtVi5nZXQoaSwgaykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChrIDwgcHApIHtcbiAgICAgICAgICAgIGlmIChzW2tdID49IHNbayArIDFdKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHQgPSBzW2tdO1xuICAgICAgICAgICAgc1trXSA9IHNbayArIDFdO1xuICAgICAgICAgICAgc1trICsgMV0gPSB0O1xuICAgICAgICAgICAgaWYgKHdhbnR2ICYmIGsgPCBuIC0gMSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBWLmdldChpLCBrICsgMSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgayArIDEsIFYuZ2V0KGksIGspKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBrLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhbnR1ICYmIGsgPCBtIC0gMSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBVLmdldChpLCBrICsgMSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgayArIDEsIFUuZ2V0KGksIGspKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBrLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaysrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVyID0gMDtcbiAgICAgICAgICBwLS07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm8gZGVmYXVsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzd2FwcGVkKSB7XG4gICAgICBsZXQgdG1wID0gVjtcbiAgICAgIFYgPSBVO1xuICAgICAgVSA9IHRtcDtcbiAgICB9XG5cbiAgICB0aGlzLm0gPSBtO1xuICAgIHRoaXMubiA9IG47XG4gICAgdGhpcy5zID0gcztcbiAgICB0aGlzLlUgPSBVO1xuICAgIHRoaXMuViA9IFY7XG4gIH1cblxuICBzb2x2ZSh2YWx1ZSkge1xuICAgIGxldCBZID0gdmFsdWU7XG4gICAgbGV0IGUgPSB0aGlzLnRocmVzaG9sZDtcbiAgICBsZXQgc2NvbHMgPSB0aGlzLnMubGVuZ3RoO1xuICAgIGxldCBMcyA9IE1hdHJpeC56ZXJvcyhzY29scywgc2NvbHMpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY29sczsgaSsrKSB7XG4gICAgICBpZiAoTWF0aC5hYnModGhpcy5zW2ldKSA8PSBlKSB7XG4gICAgICAgIExzLnNldChpLCBpLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIExzLnNldChpLCBpLCAxIC8gdGhpcy5zW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgVSA9IHRoaXMuVTtcbiAgICBsZXQgViA9IHRoaXMucmlnaHRTaW5ndWxhclZlY3RvcnM7XG5cbiAgICBsZXQgVkwgPSBWLm1tdWwoTHMpO1xuICAgIGxldCB2cm93cyA9IFYucm93cztcbiAgICBsZXQgdXJvd3MgPSBVLnJvd3M7XG4gICAgbGV0IFZMVSA9IE1hdHJpeC56ZXJvcyh2cm93cywgdXJvd3MpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHVyb3dzOyBqKyspIHtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc2NvbHM7IGsrKykge1xuICAgICAgICAgIHN1bSArPSBWTC5nZXQoaSwgaykgKiBVLmdldChqLCBrKTtcbiAgICAgICAgfVxuICAgICAgICBWTFUuc2V0KGksIGosIHN1bSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFZMVS5tbXVsKFkpO1xuICB9XG5cbiAgc29sdmVGb3JEaWFnb25hbCh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLnNvbHZlKE1hdHJpeC5kaWFnKHZhbHVlKSk7XG4gIH1cblxuICBpbnZlcnNlKCkge1xuICAgIGxldCBWID0gdGhpcy5WO1xuICAgIGxldCBlID0gdGhpcy50aHJlc2hvbGQ7XG4gICAgbGV0IHZyb3dzID0gVi5yb3dzO1xuICAgIGxldCB2Y29scyA9IFYuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgodnJvd3MsIHRoaXMucy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHZjb2xzOyBqKyspIHtcbiAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuc1tqXSkgPiBlKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgVi5nZXQoaSwgaikgLyB0aGlzLnNbal0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IFUgPSB0aGlzLlU7XG5cbiAgICBsZXQgdXJvd3MgPSBVLnJvd3M7XG4gICAgbGV0IHVjb2xzID0gVS5jb2x1bW5zO1xuICAgIGxldCBZID0gbmV3IE1hdHJpeCh2cm93cywgdXJvd3MpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHVyb3dzOyBqKyspIHtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgdWNvbHM7IGsrKykge1xuICAgICAgICAgIHN1bSArPSBYLmdldChpLCBrKSAqIFUuZ2V0KGosIGspO1xuICAgICAgICB9XG4gICAgICAgIFkuc2V0KGksIGosIHN1bSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFk7XG4gIH1cblxuICBnZXQgY29uZGl0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnNbMF0gLyB0aGlzLnNbTWF0aC5taW4odGhpcy5tLCB0aGlzLm4pIC0gMV07XG4gIH1cblxuICBnZXQgbm9ybTIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc1swXTtcbiAgfVxuXG4gIGdldCByYW5rKCkge1xuICAgIGxldCB0b2wgPSBNYXRoLm1heCh0aGlzLm0sIHRoaXMubikgKiB0aGlzLnNbMF0gKiBOdW1iZXIuRVBTSUxPTjtcbiAgICBsZXQgciA9IDA7XG4gICAgbGV0IHMgPSB0aGlzLnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGlpID0gcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7XG4gICAgICBpZiAoc1tpXSA+IHRvbCkge1xuICAgICAgICByKys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgZ2V0IGRpYWdvbmFsKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucyk7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCkge1xuICAgIHJldHVybiAoTnVtYmVyLkVQU0lMT04gLyAyKSAqIE1hdGgubWF4KHRoaXMubSwgdGhpcy5uKSAqIHRoaXMuc1swXTtcbiAgfVxuXG4gIGdldCBsZWZ0U2luZ3VsYXJWZWN0b3JzKCkge1xuICAgIHJldHVybiB0aGlzLlU7XG4gIH1cblxuICBnZXQgcmlnaHRTaW5ndWxhclZlY3RvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuVjtcbiAgfVxuXG4gIGdldCBkaWFnb25hbE1hdHJpeCgpIHtcbiAgICByZXR1cm4gTWF0cml4LmRpYWcodGhpcy5zKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgaW52ZXJzZSwgTWF0cml4IH0gZnJvbSAnbWwtbWF0cml4JztcblxuLyoqXG4gKiBEaWZmZXJlbmNlIG9mIHRoZSBtYXRyaXggZnVuY3Rpb24gb3ZlciB0aGUgcGFyYW1ldGVyc1xuICogQGlnbm9yZVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBldmFsdWF0ZWREYXRhIC0gQXJyYXkgb2YgcHJldmlvdXMgZXZhbHVhdGVkIGZ1bmN0aW9uIHZhbHVlc1xuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwYXJhbXMgLSBBcnJheSBvZiBwcmV2aW91cyBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBAcGFyYW0ge251bWJlcn0gZ3JhZGllbnREaWZmZXJlbmNlIC0gQWRqdXN0bWVudCBmb3IgZGVjcmVhc2UgdGhlIGRhbXBpbmcgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwYXJhbUZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHJldHVybiB7TWF0cml4fVxuICovXG5mdW5jdGlvbiBncmFkaWVudEZ1bmN0aW9uKFxuICBkYXRhLFxuICBldmFsdWF0ZWREYXRhLFxuICBwYXJhbXMsXG4gIGdyYWRpZW50RGlmZmVyZW5jZSxcbiAgcGFyYW1GdW5jdGlvbixcbikge1xuICBjb25zdCBuID0gcGFyYW1zLmxlbmd0aDtcbiAgY29uc3QgbSA9IGRhdGEueC5sZW5ndGg7XG5cbiAgbGV0IGFucyA9IG5ldyBBcnJheShuKTtcblxuICBmb3IgKGxldCBwYXJhbSA9IDA7IHBhcmFtIDwgbjsgcGFyYW0rKykge1xuICAgIGFuc1twYXJhbV0gPSBuZXcgQXJyYXkobSk7XG4gICAgbGV0IGF1eFBhcmFtcyA9IHBhcmFtcy5zbGljZSgpO1xuICAgIGF1eFBhcmFtc1twYXJhbV0gKz0gZ3JhZGllbnREaWZmZXJlbmNlO1xuICAgIGxldCBmdW5jUGFyYW0gPSBwYXJhbUZ1bmN0aW9uKGF1eFBhcmFtcyk7XG5cbiAgICBmb3IgKGxldCBwb2ludCA9IDA7IHBvaW50IDwgbTsgcG9pbnQrKykge1xuICAgICAgYW5zW3BhcmFtXVtwb2ludF0gPSBldmFsdWF0ZWREYXRhW3BvaW50XSAtIGZ1bmNQYXJhbShkYXRhLnhbcG9pbnRdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBNYXRyaXgoYW5zKTtcbn1cblxuLyoqXG4gKiBNYXRyaXggZnVuY3Rpb24gb3ZlciB0aGUgc2FtcGxlc1xuICogQGlnbm9yZVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBldmFsdWF0ZWREYXRhIC0gQXJyYXkgb2YgcHJldmlvdXMgZXZhbHVhdGVkIGZ1bmN0aW9uIHZhbHVlc1xuICogQHJldHVybiB7TWF0cml4fVxuICovXG5mdW5jdGlvbiBtYXRyaXhGdW5jdGlvbihkYXRhLCBldmFsdWF0ZWREYXRhKSB7XG4gIGNvbnN0IG0gPSBkYXRhLngubGVuZ3RoO1xuXG4gIGxldCBhbnMgPSBuZXcgQXJyYXkobSk7XG5cbiAgZm9yIChsZXQgcG9pbnQgPSAwOyBwb2ludCA8IG07IHBvaW50KyspIHtcbiAgICBhbnNbcG9pbnRdID0gW2RhdGEueVtwb2ludF0gLSBldmFsdWF0ZWREYXRhW3BvaW50XV07XG4gIH1cblxuICByZXR1cm4gbmV3IE1hdHJpeChhbnMpO1xufVxuXG4vKipcbiAqIEl0ZXJhdGlvbiBmb3IgTGV2ZW5iZXJnLU1hcnF1YXJkdFxuICogQGlnbm9yZVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwYXJhbXMgLSBBcnJheSBvZiBwcmV2aW91cyBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBAcGFyYW0ge251bWJlcn0gZGFtcGluZyAtIExldmVuYmVyZy1NYXJxdWFyZHQgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge251bWJlcn0gZ3JhZGllbnREaWZmZXJlbmNlIC0gQWRqdXN0bWVudCBmb3IgZGVjcmVhc2UgdGhlIGRhbXBpbmcgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwYXJhbWV0ZXJpemVkRnVuY3Rpb24gLSBUaGUgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHdpdGggdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlIGFzIGEgcGFyYW1ldGVyXG4gKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGVwKFxuICBkYXRhLFxuICBwYXJhbXMsXG4gIGRhbXBpbmcsXG4gIGdyYWRpZW50RGlmZmVyZW5jZSxcbiAgcGFyYW1ldGVyaXplZEZ1bmN0aW9uLFxuKSB7XG4gIGxldCB2YWx1ZSA9IGRhbXBpbmcgKiBncmFkaWVudERpZmZlcmVuY2UgKiBncmFkaWVudERpZmZlcmVuY2U7XG4gIGxldCBpZGVudGl0eSA9IE1hdHJpeC5leWUocGFyYW1zLmxlbmd0aCwgcGFyYW1zLmxlbmd0aCwgdmFsdWUpO1xuXG4gIGNvbnN0IGZ1bmMgPSBwYXJhbWV0ZXJpemVkRnVuY3Rpb24ocGFyYW1zKTtcblxuICBsZXQgZXZhbHVhdGVkRGF0YSA9IG5ldyBGbG9hdDY0QXJyYXkoZGF0YS54Lmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS54Lmxlbmd0aDsgaSsrKSB7XG4gICAgZXZhbHVhdGVkRGF0YVtpXSA9IGZ1bmMoZGF0YS54W2ldKTtcbiAgfVxuXG4gIGxldCBncmFkaWVudEZ1bmMgPSBncmFkaWVudEZ1bmN0aW9uKFxuICAgIGRhdGEsXG4gICAgZXZhbHVhdGVkRGF0YSxcbiAgICBwYXJhbXMsXG4gICAgZ3JhZGllbnREaWZmZXJlbmNlLFxuICAgIHBhcmFtZXRlcml6ZWRGdW5jdGlvbixcbiAgKTtcbiAgbGV0IG1hdHJpeEZ1bmMgPSBtYXRyaXhGdW5jdGlvbihkYXRhLCBldmFsdWF0ZWREYXRhKTtcbiAgbGV0IGludmVyc2VNYXRyaXggPSBpbnZlcnNlKFxuICAgIGlkZW50aXR5LmFkZChncmFkaWVudEZ1bmMubW11bChncmFkaWVudEZ1bmMudHJhbnNwb3NlKCkpKSxcbiAgKTtcblxuICBwYXJhbXMgPSBuZXcgTWF0cml4KFtwYXJhbXNdKTtcbiAgcGFyYW1zID0gcGFyYW1zLnN1YihcbiAgICBpbnZlcnNlTWF0cml4XG4gICAgICAubW11bChncmFkaWVudEZ1bmMpXG4gICAgICAubW11bChtYXRyaXhGdW5jKVxuICAgICAgLm11bChncmFkaWVudERpZmZlcmVuY2UpXG4gICAgICAudHJhbnNwb3NlKCksXG4gICk7XG5cbiAgcmV0dXJuIHBhcmFtcy50bzFEQXJyYXkoKTtcbn1cbiIsImltcG9ydCBMdURlY29tcG9zaXRpb24gZnJvbSAnLi9kYy9sdSc7XG5pbXBvcnQgUXJEZWNvbXBvc2l0aW9uIGZyb20gJy4vZGMvcXInO1xuaW1wb3J0IFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uIGZyb20gJy4vZGMvc3ZkJztcbmltcG9ydCBNYXRyaXggZnJvbSAnLi9tYXRyaXgnO1xuaW1wb3J0IFdyYXBwZXJNYXRyaXgyRCBmcm9tICcuL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuZXhwb3J0IGZ1bmN0aW9uIGludmVyc2UobWF0cml4LCB1c2VTVkQgPSBmYWxzZSkge1xuICBtYXRyaXggPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgaWYgKHVzZVNWRCkge1xuICAgIHJldHVybiBuZXcgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24obWF0cml4KS5pbnZlcnNlKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHNvbHZlKG1hdHJpeCwgTWF0cml4LmV5ZShtYXRyaXgucm93cykpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb2x2ZShsZWZ0SGFuZFNpZGUsIHJpZ2h0SGFuZFNpZGUsIHVzZVNWRCA9IGZhbHNlKSB7XG4gIGxlZnRIYW5kU2lkZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeChsZWZ0SGFuZFNpZGUpO1xuICByaWdodEhhbmRTaWRlID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KHJpZ2h0SGFuZFNpZGUpO1xuICBpZiAodXNlU1ZEKSB7XG4gICAgcmV0dXJuIG5ldyBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbihsZWZ0SGFuZFNpZGUpLnNvbHZlKHJpZ2h0SGFuZFNpZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsZWZ0SGFuZFNpZGUuaXNTcXVhcmUoKVxuICAgICAgPyBuZXcgTHVEZWNvbXBvc2l0aW9uKGxlZnRIYW5kU2lkZSkuc29sdmUocmlnaHRIYW5kU2lkZSlcbiAgICAgIDogbmV3IFFyRGVjb21wb3NpdGlvbihsZWZ0SGFuZFNpZGUpLnNvbHZlKHJpZ2h0SGFuZFNpZGUpO1xuICB9XG59XG4iLCJpbXBvcnQgaXNBcnJheSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG5pbXBvcnQgZXJyb3JDYWxjdWxhdGlvbiBmcm9tICcuL2Vycm9yQ2FsY3VsYXRpb24nO1xuaW1wb3J0IHN0ZXAgZnJvbSAnLi9zdGVwJztcblxuLyoqXG4gKiBDdXJ2ZSBmaXR0aW5nIGFsZ29yaXRobVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtmdW5jdGlvbn0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIE9wdGlvbnMgb2JqZWN0XG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuZGFtcGluZ10gLSBMZXZlbmJlcmctTWFycXVhcmR0IHBhcmFtZXRlclxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmdyYWRpZW50RGlmZmVyZW5jZSA9IDEwZS0yXSAtIEFkanVzdG1lbnQgZm9yIGRlY3JlYXNlIHRoZSBkYW1waW5nIHBhcmFtZXRlclxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5taW5WYWx1ZXNdIC0gTWluaW11bSBhbGxvd2VkIHZhbHVlcyBmb3IgcGFyYW1ldGVyc1xuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5tYXhWYWx1ZXNdIC0gTWF4aW11bSBhbGxvd2VkIHZhbHVlcyBmb3IgcGFyYW1ldGVyc1xuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5pbml0aWFsVmFsdWVzXSAtIEFycmF5IG9mIGluaXRpYWwgcGFyYW1ldGVyIHZhbHVlc1xuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heEl0ZXJhdGlvbnMgPSAxMDBdIC0gTWF4aW11bSBvZiBhbGxvd2VkIGl0ZXJhdGlvbnNcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5lcnJvclRvbGVyYW5jZSA9IDEwZS0zXSAtIE1pbmltdW0gdW5jZXJ0YWludHkgYWxsb3dlZCBmb3IgZWFjaCBwb2ludFxuICogQHJldHVybiB7e3BhcmFtZXRlclZhbHVlczogQXJyYXk8bnVtYmVyPiwgcGFyYW1ldGVyRXJyb3I6IG51bWJlciwgaXRlcmF0aW9uczogbnVtYmVyfX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGV2ZW5iZXJnTWFycXVhcmR0KFxuICBkYXRhLFxuICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4gIG9wdGlvbnMgPSB7fSxcbikge1xuICBsZXQge1xuICAgIG1heEl0ZXJhdGlvbnMgPSAxMDAsXG4gICAgZ3JhZGllbnREaWZmZXJlbmNlID0gMTBlLTIsXG4gICAgZGFtcGluZyA9IDAsXG4gICAgZXJyb3JUb2xlcmFuY2UgPSAxMGUtMyxcbiAgICBtaW5WYWx1ZXMsXG4gICAgbWF4VmFsdWVzLFxuICAgIGluaXRpYWxWYWx1ZXMsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGlmIChkYW1waW5nIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYW1waW5nIG9wdGlvbiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gIH0gZWxzZSBpZiAoIWRhdGEueCB8fCAhZGF0YS55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGF0YSBwYXJhbWV0ZXIgbXVzdCBoYXZlIHggYW5kIHkgZWxlbWVudHMnKTtcbiAgfSBlbHNlIGlmIChcbiAgICAhaXNBcnJheShkYXRhLngpIHx8XG4gICAgZGF0YS54Lmxlbmd0aCA8IDIgfHxcbiAgICAhaXNBcnJheShkYXRhLnkpIHx8XG4gICAgZGF0YS55Lmxlbmd0aCA8IDJcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1RoZSBkYXRhIHBhcmFtZXRlciBlbGVtZW50cyBtdXN0IGJlIGFuIGFycmF5IHdpdGggbW9yZSB0aGFuIDIgcG9pbnRzJyxcbiAgICApO1xuICB9IGVsc2UgaWYgKGRhdGEueC5sZW5ndGggIT09IGRhdGEueS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYXRhIHBhcmFtZXRlciBlbGVtZW50cyBtdXN0IGhhdmUgdGhlIHNhbWUgc2l6ZScpO1xuICB9XG5cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIGluaXRpYWxWYWx1ZXMgfHwgbmV3IEFycmF5KHBhcmFtZXRlcml6ZWRGdW5jdGlvbi5sZW5ndGgpLmZpbGwoMSk7XG4gIGxldCBwYXJMZW4gPSBwYXJhbWV0ZXJzLmxlbmd0aDtcbiAgbWF4VmFsdWVzID0gbWF4VmFsdWVzIHx8IG5ldyBBcnJheShwYXJMZW4pLmZpbGwoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpO1xuICBtaW5WYWx1ZXMgPSBtaW5WYWx1ZXMgfHwgbmV3IEFycmF5KHBhckxlbikuZmlsbChOdW1iZXIuTUlOX1NBRkVfSU5URUdFUik7XG5cbiAgaWYgKG1heFZhbHVlcy5sZW5ndGggIT09IG1pblZhbHVlcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21pblZhbHVlcyBhbmQgbWF4VmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgc2l6ZScpO1xuICB9XG5cbiAgaWYgKCFpc0FycmF5KHBhcmFtZXRlcnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbml0aWFsVmFsdWVzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGxldCBlcnJvciA9IGVycm9yQ2FsY3VsYXRpb24oZGF0YSwgcGFyYW1ldGVycywgcGFyYW1ldGVyaXplZEZ1bmN0aW9uKTtcblxuICBsZXQgY29udmVyZ2VkID0gZXJyb3IgPD0gZXJyb3JUb2xlcmFuY2U7XG5cbiAgbGV0IGl0ZXJhdGlvbjtcbiAgZm9yIChpdGVyYXRpb24gPSAwOyBpdGVyYXRpb24gPCBtYXhJdGVyYXRpb25zICYmICFjb252ZXJnZWQ7IGl0ZXJhdGlvbisrKSB7XG4gICAgcGFyYW1ldGVycyA9IHN0ZXAoXG4gICAgICBkYXRhLFxuICAgICAgcGFyYW1ldGVycyxcbiAgICAgIGRhbXBpbmcsXG4gICAgICBncmFkaWVudERpZmZlcmVuY2UsXG4gICAgICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4gICAgKTtcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcGFyTGVuOyBrKyspIHtcbiAgICAgIHBhcmFtZXRlcnNba10gPSBNYXRoLm1pbihcbiAgICAgICAgTWF0aC5tYXgobWluVmFsdWVzW2tdLCBwYXJhbWV0ZXJzW2tdKSxcbiAgICAgICAgbWF4VmFsdWVzW2tdLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBlcnJvciA9IGVycm9yQ2FsY3VsYXRpb24oZGF0YSwgcGFyYW1ldGVycywgcGFyYW1ldGVyaXplZEZ1bmN0aW9uKTtcbiAgICBpZiAoaXNOYU4oZXJyb3IpKSBicmVhaztcbiAgICBjb252ZXJnZWQgPSBlcnJvciA8PSBlcnJvclRvbGVyYW5jZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGFyYW1ldGVyVmFsdWVzOiBwYXJhbWV0ZXJzLFxuICAgIHBhcmFtZXRlckVycm9yOiBlcnJvcixcbiAgICBpdGVyYXRpb25zOiBpdGVyYXRpb24sXG4gIH07XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB1dGlscyA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi91dGlsc1wiKSk7XG5mdW5jdGlvbiBtYWtlSGVhcChuUG9pbnRzLCBzaXplKSB7XG4gICAgdmFyIG1ha2VBcnJheXMgPSBmdW5jdGlvbiAoZmlsbFZhbHVlKSB7XG4gICAgICAgIHJldHVybiB1dGlscy5lbXB0eShuUG9pbnRzKS5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHV0aWxzLmZpbGxlZChzaXplLCBmaWxsVmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHZhciBoZWFwID0gW107XG4gICAgaGVhcC5wdXNoKG1ha2VBcnJheXMoLTEpKTtcbiAgICBoZWFwLnB1c2gobWFrZUFycmF5cyhJbmZpbml0eSkpO1xuICAgIGhlYXAucHVzaChtYWtlQXJyYXlzKDApKTtcbiAgICByZXR1cm4gaGVhcDtcbn1cbmV4cG9ydHMubWFrZUhlYXAgPSBtYWtlSGVhcDtcbmZ1bmN0aW9uIHJlamVjdGlvblNhbXBsZShuU2FtcGxlcywgcG9vbFNpemUsIHJhbmRvbSkge1xuICAgIHZhciByZXN1bHQgPSB1dGlscy56ZXJvcyhuU2FtcGxlcyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuU2FtcGxlczsgaSsrKSB7XG4gICAgICAgIHZhciByZWplY3RTYW1wbGUgPSB0cnVlO1xuICAgICAgICB2YXIgaiA9IDA7XG4gICAgICAgIHdoaWxlIChyZWplY3RTYW1wbGUpIHtcbiAgICAgICAgICAgIGogPSB1dGlscy50YXVSYW5kSW50KHBvb2xTaXplLCByYW5kb20pO1xuICAgICAgICAgICAgdmFyIGJyb2tlbiA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBpOyBrKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gcmVzdWx0W2tdKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyb2tlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYnJva2VuKVxuICAgICAgICAgICAgICAgIHJlamVjdFNhbXBsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFtpXSA9IGo7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLnJlamVjdGlvblNhbXBsZSA9IHJlamVjdGlvblNhbXBsZTtcbmZ1bmN0aW9uIGhlYXBQdXNoKGhlYXAsIHJvdywgd2VpZ2h0LCBpbmRleCwgZmxhZykge1xuICAgIHJvdyA9IE1hdGguZmxvb3Iocm93KTtcbiAgICB2YXIgaW5kaWNlcyA9IGhlYXBbMF1bcm93XTtcbiAgICB2YXIgd2VpZ2h0cyA9IGhlYXBbMV1bcm93XTtcbiAgICB2YXIgaXNOZXcgPSBoZWFwWzJdW3Jvd107XG4gICAgaWYgKHdlaWdodCA+PSB3ZWlnaHRzWzBdKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSBpbmRpY2VzW2ldKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5jaGVja2VkSGVhcFB1c2goaGVhcCwgcm93LCB3ZWlnaHQsIGluZGV4LCBmbGFnKTtcbn1cbmV4cG9ydHMuaGVhcFB1c2ggPSBoZWFwUHVzaDtcbmZ1bmN0aW9uIHVuY2hlY2tlZEhlYXBQdXNoKGhlYXAsIHJvdywgd2VpZ2h0LCBpbmRleCwgZmxhZykge1xuICAgIHZhciBpbmRpY2VzID0gaGVhcFswXVtyb3ddO1xuICAgIHZhciB3ZWlnaHRzID0gaGVhcFsxXVtyb3ddO1xuICAgIHZhciBpc05ldyA9IGhlYXBbMl1bcm93XTtcbiAgICBpZiAod2VpZ2h0ID49IHdlaWdodHNbMF0pIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHdlaWdodHNbMF0gPSB3ZWlnaHQ7XG4gICAgaW5kaWNlc1swXSA9IGluZGV4O1xuICAgIGlzTmV3WzBdID0gZmxhZztcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGlTd2FwID0gMDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgaWMxID0gMiAqIGkgKyAxO1xuICAgICAgICB2YXIgaWMyID0gaWMxICsgMTtcbiAgICAgICAgdmFyIGhlYXBTaGFwZTIgPSBoZWFwWzBdWzBdLmxlbmd0aDtcbiAgICAgICAgaWYgKGljMSA+PSBoZWFwU2hhcGUyKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpYzIgPj0gaGVhcFNoYXBlMikge1xuICAgICAgICAgICAgaWYgKHdlaWdodHNbaWMxXSA+IHdlaWdodCkge1xuICAgICAgICAgICAgICAgIGlTd2FwID0gaWMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAod2VpZ2h0c1tpYzFdID49IHdlaWdodHNbaWMyXSkge1xuICAgICAgICAgICAgaWYgKHdlaWdodCA8IHdlaWdodHNbaWMxXSkge1xuICAgICAgICAgICAgICAgIGlTd2FwID0gaWMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAod2VpZ2h0IDwgd2VpZ2h0c1tpYzJdKSB7XG4gICAgICAgICAgICAgICAgaVN3YXAgPSBpYzI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB3ZWlnaHRzW2ldID0gd2VpZ2h0c1tpU3dhcF07XG4gICAgICAgIGluZGljZXNbaV0gPSBpbmRpY2VzW2lTd2FwXTtcbiAgICAgICAgaXNOZXdbaV0gPSBpc05ld1tpU3dhcF07XG4gICAgICAgIGkgPSBpU3dhcDtcbiAgICB9XG4gICAgd2VpZ2h0c1tpXSA9IHdlaWdodDtcbiAgICBpbmRpY2VzW2ldID0gaW5kZXg7XG4gICAgaXNOZXdbaV0gPSBmbGFnO1xuICAgIHJldHVybiAxO1xufVxuZXhwb3J0cy51bmNoZWNrZWRIZWFwUHVzaCA9IHVuY2hlY2tlZEhlYXBQdXNoO1xuZnVuY3Rpb24gYnVpbGRDYW5kaWRhdGVzKGN1cnJlbnRHcmFwaCwgblZlcnRpY2VzLCBuTmVpZ2hib3JzLCBtYXhDYW5kaWRhdGVzLCByYW5kb20pIHtcbiAgICB2YXIgY2FuZGlkYXRlTmVpZ2hib3JzID0gbWFrZUhlYXAoblZlcnRpY2VzLCBtYXhDYW5kaWRhdGVzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5WZXJ0aWNlczsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbk5laWdoYm9yczsgaisrKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudEdyYXBoWzBdW2ldW2pdIDwgMCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGlkeCA9IGN1cnJlbnRHcmFwaFswXVtpXVtqXTtcbiAgICAgICAgICAgIHZhciBpc24gPSBjdXJyZW50R3JhcGhbMl1baV1bal07XG4gICAgICAgICAgICB2YXIgZCA9IHV0aWxzLnRhdVJhbmQocmFuZG9tKTtcbiAgICAgICAgICAgIGhlYXBQdXNoKGNhbmRpZGF0ZU5laWdoYm9ycywgaSwgZCwgaWR4LCBpc24pO1xuICAgICAgICAgICAgaGVhcFB1c2goY2FuZGlkYXRlTmVpZ2hib3JzLCBpZHgsIGQsIGksIGlzbik7XG4gICAgICAgICAgICBjdXJyZW50R3JhcGhbMl1baV1bal0gPSAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjYW5kaWRhdGVOZWlnaGJvcnM7XG59XG5leHBvcnRzLmJ1aWxkQ2FuZGlkYXRlcyA9IGJ1aWxkQ2FuZGlkYXRlcztcbmZ1bmN0aW9uIGRlaGVhcFNvcnQoaGVhcCkge1xuICAgIHZhciBpbmRpY2VzID0gaGVhcFswXTtcbiAgICB2YXIgd2VpZ2h0cyA9IGhlYXBbMV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBpbmRIZWFwID0gaW5kaWNlc1tpXTtcbiAgICAgICAgdmFyIGRpc3RIZWFwID0gd2VpZ2h0c1tpXTtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbmRIZWFwLmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgICAgICAgdmFyIGluZEhlYXBJbmRleCA9IGluZEhlYXAubGVuZ3RoIC0gaiAtIDE7XG4gICAgICAgICAgICB2YXIgZGlzdEhlYXBJbmRleCA9IGRpc3RIZWFwLmxlbmd0aCAtIGogLSAxO1xuICAgICAgICAgICAgdmFyIHRlbXAxID0gaW5kSGVhcFswXTtcbiAgICAgICAgICAgIGluZEhlYXBbMF0gPSBpbmRIZWFwW2luZEhlYXBJbmRleF07XG4gICAgICAgICAgICBpbmRIZWFwW2luZEhlYXBJbmRleF0gPSB0ZW1wMTtcbiAgICAgICAgICAgIHZhciB0ZW1wMiA9IGRpc3RIZWFwWzBdO1xuICAgICAgICAgICAgZGlzdEhlYXBbMF0gPSBkaXN0SGVhcFtkaXN0SGVhcEluZGV4XTtcbiAgICAgICAgICAgIGRpc3RIZWFwW2Rpc3RIZWFwSW5kZXhdID0gdGVtcDI7XG4gICAgICAgICAgICBzaWZ0RG93bihkaXN0SGVhcCwgaW5kSGVhcCwgZGlzdEhlYXBJbmRleCwgMCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgaW5kaWNlczogaW5kaWNlcywgd2VpZ2h0czogd2VpZ2h0cyB9O1xufVxuZXhwb3J0cy5kZWhlYXBTb3J0ID0gZGVoZWFwU29ydDtcbmZ1bmN0aW9uIHNpZnREb3duKGhlYXAxLCBoZWFwMiwgY2VpbGluZywgZWx0KSB7XG4gICAgd2hpbGUgKGVsdCAqIDIgKyAxIDwgY2VpbGluZykge1xuICAgICAgICB2YXIgbGVmdENoaWxkID0gZWx0ICogMiArIDE7XG4gICAgICAgIHZhciByaWdodENoaWxkID0gbGVmdENoaWxkICsgMTtcbiAgICAgICAgdmFyIHN3YXAgPSBlbHQ7XG4gICAgICAgIGlmIChoZWFwMVtzd2FwXSA8IGhlYXAxW2xlZnRDaGlsZF0pIHtcbiAgICAgICAgICAgIHN3YXAgPSBsZWZ0Q2hpbGQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJpZ2h0Q2hpbGQgPCBjZWlsaW5nICYmIGhlYXAxW3N3YXBdIDwgaGVhcDFbcmlnaHRDaGlsZF0pIHtcbiAgICAgICAgICAgIHN3YXAgPSByaWdodENoaWxkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzd2FwID09PSBlbHQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHRlbXAxID0gaGVhcDFbZWx0XTtcbiAgICAgICAgICAgIGhlYXAxW2VsdF0gPSBoZWFwMVtzd2FwXTtcbiAgICAgICAgICAgIGhlYXAxW3N3YXBdID0gdGVtcDE7XG4gICAgICAgICAgICB2YXIgdGVtcDIgPSBoZWFwMltlbHRdO1xuICAgICAgICAgICAgaGVhcDJbZWx0XSA9IGhlYXAyW3N3YXBdO1xuICAgICAgICAgICAgaGVhcDJbc3dhcF0gPSB0ZW1wMjtcbiAgICAgICAgICAgIGVsdCA9IHN3YXA7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBzbWFsbGVzdEZsYWdnZWQoaGVhcCwgcm93KSB7XG4gICAgdmFyIGluZCA9IGhlYXBbMF1bcm93XTtcbiAgICB2YXIgZGlzdCA9IGhlYXBbMV1bcm93XTtcbiAgICB2YXIgZmxhZyA9IGhlYXBbMl1bcm93XTtcbiAgICB2YXIgbWluRGlzdCA9IEluZmluaXR5O1xuICAgIHZhciByZXN1bHRJbmRleCA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpID4gaW5kLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmbGFnW2ldID09PSAxICYmIGRpc3RbaV0gPCBtaW5EaXN0KSB7XG4gICAgICAgICAgICBtaW5EaXN0ID0gZGlzdFtpXTtcbiAgICAgICAgICAgIHJlc3VsdEluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocmVzdWx0SW5kZXggPj0gMCkge1xuICAgICAgICBmbGFnW3Jlc3VsdEluZGV4XSA9IDA7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKGluZFtyZXN1bHRJbmRleF0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbn1cbmV4cG9ydHMuc21hbGxlc3RGbGFnZ2VkID0gc21hbGxlc3RGbGFnZ2VkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdW1hcF8xID0gcmVxdWlyZShcIi4vdW1hcFwiKTtcbmV4cG9ydHMuVU1BUCA9IHVtYXBfMS5VTUFQO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbiAobykge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG59O1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcbiAgICByZXN1bHRbXCJkZWZhdWx0XCJdID0gbW9kO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIF9hO1xudmFyIHV0aWxzID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3V0aWxzXCIpKTtcbnZhciBTcGFyc2VNYXRyaXggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWx1ZXMsIGRpbXMpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLm5Sb3dzID0gMDtcbiAgICAgICAgdGhpcy5uQ29scyA9IDA7XG4gICAgICAgIGlmIChyb3dzLmxlbmd0aCAhPT0gY29scy5sZW5ndGggfHwgcm93cy5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncm93cywgY29scyBhbmQgdmFsdWVzIGFycmF5cyBtdXN0IGFsbCBoYXZlIHRoZSBzYW1lIGxlbmd0aCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMublJvd3MgPSBkaW1zWzBdO1xuICAgICAgICB0aGlzLm5Db2xzID0gZGltc1sxXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciByb3cgPSByb3dzW2ldO1xuICAgICAgICAgICAgdmFyIGNvbCA9IGNvbHNbaV07XG4gICAgICAgICAgICB0aGlzLmNoZWNrRGltcyhyb3csIGNvbCk7XG4gICAgICAgICAgICB2YXIga2V5ID0gdGhpcy5tYWtlS2V5KHJvdywgY29sKTtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zZXQoa2V5LCB7IHZhbHVlOiB2YWx1ZXNbaV0sIHJvdzogcm93LCBjb2w6IGNvbCB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLm1ha2VLZXkgPSBmdW5jdGlvbiAocm93LCBjb2wpIHtcbiAgICAgICAgcmV0dXJuIHJvdyArIFwiOlwiICsgY29sO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5jaGVja0RpbXMgPSBmdW5jdGlvbiAocm93LCBjb2wpIHtcbiAgICAgICAgdmFyIHdpdGhpbkJvdW5kcyA9IHJvdyA8IHRoaXMublJvd3MgJiYgY29sIDwgdGhpcy5uQ29scztcbiAgICAgICAgaWYgKCF3aXRoaW5Cb3VuZHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncm93IGFuZC9vciBjb2wgc3BlY2lmaWVkIG91dHNpZGUgb2YgbWF0cml4IGRpbWVuc2lvbnMnKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAocm93LCBjb2wsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2hlY2tEaW1zKHJvdywgY29sKTtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMubWFrZUtleShyb3csIGNvbCk7XG4gICAgICAgIGlmICghdGhpcy5lbnRyaWVzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc2V0KGtleSwgeyB2YWx1ZTogdmFsdWUsIHJvdzogcm93LCBjb2w6IGNvbCB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5nZXQoa2V5KS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChyb3csIGNvbCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgIGlmIChkZWZhdWx0VmFsdWUgPT09IHZvaWQgMCkgeyBkZWZhdWx0VmFsdWUgPSAwOyB9XG4gICAgICAgIHRoaXMuY2hlY2tEaW1zKHJvdywgY29sKTtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMubWFrZUtleShyb3csIGNvbCk7XG4gICAgICAgIGlmICh0aGlzLmVudHJpZXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMuZ2V0KGtleSkudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldEFsbCA9IGZ1bmN0aW9uIChvcmRlcmVkKSB7XG4gICAgICAgIGlmIChvcmRlcmVkID09PSB2b2lkIDApIHsgb3JkZXJlZCA9IHRydWU7IH1cbiAgICAgICAgdmFyIHJvd0NvbFZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJvd0NvbFZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChvcmRlcmVkKSB7XG4gICAgICAgICAgICByb3dDb2xWYWx1ZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIGlmIChhLnJvdyA9PT0gYi5yb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY29sIC0gYi5jb2w7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5yb3cgLSBiLnJvdztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93Q29sVmFsdWVzO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5nZXREaW1zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMublJvd3MsIHRoaXMubkNvbHNdO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5nZXRSb3dzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwga2V5ID0gX2JbMF0sIHZhbHVlID0gX2JbMV07XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUucm93O1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuZ2V0Q29scyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciBfYiA9IF9fcmVhZChfYSwgMiksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmNvbDtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldFZhbHVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciBfYiA9IF9fcmVhZChfYSwgMiksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChmbikge1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIGZuKHZhbHVlLnZhbHVlLCB2YWx1ZS5yb3csIHZhbHVlLmNvbCk7IH0pO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5tYXAgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgdmFyIHZhbHMgPSBbXTtcbiAgICAgICAgdGhpcy5lbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YWxzLnB1c2goZm4odmFsdWUudmFsdWUsIHZhbHVlLnJvdywgdmFsdWUuY29sKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZGltcyA9IFt0aGlzLm5Sb3dzLCB0aGlzLm5Db2xzXTtcbiAgICAgICAgcmV0dXJuIG5ldyBTcGFyc2VNYXRyaXgodGhpcy5nZXRSb3dzKCksIHRoaXMuZ2V0Q29scygpLCB2YWxzLCBkaW1zKTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHJvd3MgPSB1dGlscy5lbXB0eSh0aGlzLm5Sb3dzKTtcbiAgICAgICAgdmFyIG91dHB1dCA9IHJvd3MubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB1dGlscy56ZXJvcyhfdGhpcy5uQ29scyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIG91dHB1dFt2YWx1ZS5yb3ddW3ZhbHVlLmNvbF0gPSB2YWx1ZS52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfTtcbiAgICByZXR1cm4gU3BhcnNlTWF0cml4O1xufSgpKTtcbmV4cG9ydHMuU3BhcnNlTWF0cml4ID0gU3BhcnNlTWF0cml4O1xuZnVuY3Rpb24gdHJhbnNwb3NlKG1hdHJpeCkge1xuICAgIHZhciBjb2xzID0gW107XG4gICAgdmFyIHJvd3MgPSBbXTtcbiAgICB2YXIgdmFscyA9IFtdO1xuICAgIG1hdHJpeC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgcm93LCBjb2wpIHtcbiAgICAgICAgY29scy5wdXNoKHJvdyk7XG4gICAgICAgIHJvd3MucHVzaChjb2wpO1xuICAgICAgICB2YWxzLnB1c2godmFsdWUpO1xuICAgIH0pO1xuICAgIHZhciBkaW1zID0gW21hdHJpeC5uQ29scywgbWF0cml4Lm5Sb3dzXTtcbiAgICByZXR1cm4gbmV3IFNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBkaW1zKTtcbn1cbmV4cG9ydHMudHJhbnNwb3NlID0gdHJhbnNwb3NlO1xuZnVuY3Rpb24gaWRlbnRpdHkoc2l6ZSkge1xuICAgIHZhciBfYSA9IF9fcmVhZChzaXplLCAxKSwgcm93cyA9IF9hWzBdO1xuICAgIHZhciBtYXRyaXggPSBuZXcgU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIHNpemUpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIG1hdHJpeC5zZXQoaSwgaSwgMSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG5leHBvcnRzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG5mdW5jdGlvbiBwYWlyd2lzZU11bHRpcGx5KGEsIGIpIHtcbiAgICByZXR1cm4gZWxlbWVudFdpc2UoYSwgYiwgZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIHggKiB5OyB9KTtcbn1cbmV4cG9ydHMucGFpcndpc2VNdWx0aXBseSA9IHBhaXJ3aXNlTXVsdGlwbHk7XG5mdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBlbGVtZW50V2lzZShhLCBiLCBmdW5jdGlvbiAoeCwgeSkgeyByZXR1cm4geCArIHk7IH0pO1xufVxuZXhwb3J0cy5hZGQgPSBhZGQ7XG5mdW5jdGlvbiBzdWJ0cmFjdChhLCBiKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRXaXNlKGEsIGIsIGZ1bmN0aW9uICh4LCB5KSB7IHJldHVybiB4IC0geTsgfSk7XG59XG5leHBvcnRzLnN1YnRyYWN0ID0gc3VidHJhY3Q7XG5mdW5jdGlvbiBtYXhpbXVtKGEsIGIpIHtcbiAgICByZXR1cm4gZWxlbWVudFdpc2UoYSwgYiwgZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuICh4ID4geSA/IHggOiB5KTsgfSk7XG59XG5leHBvcnRzLm1heGltdW0gPSBtYXhpbXVtO1xuZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXIoYSwgc2NhbGFyKSB7XG4gICAgcmV0dXJuIGEubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgKiBzY2FsYXI7XG4gICAgfSk7XG59XG5leHBvcnRzLm11bHRpcGx5U2NhbGFyID0gbXVsdGlwbHlTY2FsYXI7XG5mdW5jdGlvbiBlbGltaW5hdGVaZXJvcyhtKSB7XG4gICAgdmFyIHplcm9JbmRpY2VzID0gbmV3IFNldCgpO1xuICAgIHZhciB2YWx1ZXMgPSBtLmdldFZhbHVlcygpO1xuICAgIHZhciByb3dzID0gbS5nZXRSb3dzKCk7XG4gICAgdmFyIGNvbHMgPSBtLmdldENvbHMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodmFsdWVzW2ldID09PSAwKSB7XG4gICAgICAgICAgICB6ZXJvSW5kaWNlcy5hZGQoaSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIHJlbW92ZUJ5WmVyb0luZGV4ID0gZnVuY3Rpb24gKF8sIGluZGV4KSB7IHJldHVybiAhemVyb0luZGljZXMuaGFzKGluZGV4KTsgfTtcbiAgICB2YXIgbmV4dFZhbHVlcyA9IHZhbHVlcy5maWx0ZXIocmVtb3ZlQnlaZXJvSW5kZXgpO1xuICAgIHZhciBuZXh0Um93cyA9IHJvd3MuZmlsdGVyKHJlbW92ZUJ5WmVyb0luZGV4KTtcbiAgICB2YXIgbmV4dENvbHMgPSBjb2xzLmZpbHRlcihyZW1vdmVCeVplcm9JbmRleCk7XG4gICAgcmV0dXJuIG5ldyBTcGFyc2VNYXRyaXgobmV4dFJvd3MsIG5leHRDb2xzLCBuZXh0VmFsdWVzLCBtLmdldERpbXMoKSk7XG59XG5leHBvcnRzLmVsaW1pbmF0ZVplcm9zID0gZWxpbWluYXRlWmVyb3M7XG5mdW5jdGlvbiBub3JtYWxpemUobSwgbm9ybVR5cGUpIHtcbiAgICBpZiAobm9ybVR5cGUgPT09IHZvaWQgMCkgeyBub3JtVHlwZSA9IFwibDJcIjsgfVxuICAgIHZhciBlXzEsIF9hO1xuICAgIHZhciBub3JtRm4gPSBub3JtRm5zW25vcm1UeXBlXTtcbiAgICB2YXIgY29sc0J5Um93ID0gbmV3IE1hcCgpO1xuICAgIG0uZm9yRWFjaChmdW5jdGlvbiAoXywgcm93LCBjb2wpIHtcbiAgICAgICAgdmFyIGNvbHMgPSBjb2xzQnlSb3cuZ2V0KHJvdykgfHwgW107XG4gICAgICAgIGNvbHMucHVzaChjb2wpO1xuICAgICAgICBjb2xzQnlSb3cuc2V0KHJvdywgY29scyk7XG4gICAgfSk7XG4gICAgdmFyIG5leHRNYXRyaXggPSBuZXcgU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIG0uZ2V0RGltcygpKTtcbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgdmFyIGNvbHMgPSBjb2xzQnlSb3cuZ2V0KHJvdykuc29ydCgpO1xuICAgICAgICB2YXIgdmFscyA9IGNvbHMubWFwKGZ1bmN0aW9uIChjb2wpIHsgcmV0dXJuIG0uZ2V0KHJvdywgY29sKTsgfSk7XG4gICAgICAgIHZhciBub3JtID0gbm9ybUZuKHZhbHMpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vcm0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG5leHRNYXRyaXguc2V0KHJvdywgY29sc1tpXSwgbm9ybVtpXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMoY29sc0J5Um93LmtleXMoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciByb3cgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgIF9sb29wXzEocm93KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIG5leHRNYXRyaXg7XG59XG5leHBvcnRzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTtcbnZhciBub3JtRm5zID0gKF9hID0ge30sXG4gICAgX2FbXCJtYXhcIl0gPSBmdW5jdGlvbiAoeHMpIHtcbiAgICAgICAgdmFyIG1heCA9IC1JbmZpbml0eTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbWF4ID0geHNbaV0gPiBtYXggPyB4c1tpXSA6IG1heDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geHMubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4IC8gbWF4OyB9KTtcbiAgICB9LFxuICAgIF9hW1wibDFcIl0gPSBmdW5jdGlvbiAoeHMpIHtcbiAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHN1bSArPSB4c1tpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geHMubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4IC8gc3VtOyB9KTtcbiAgICB9LFxuICAgIF9hW1wibDJcIl0gPSBmdW5jdGlvbiAoeHMpIHtcbiAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHN1bSArPSBNYXRoLnBvdyh4c1tpXSwgMik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHhzLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHgsIDIpIC8gc3VtKTsgfSk7XG4gICAgfSxcbiAgICBfYSk7XG5mdW5jdGlvbiBlbGVtZW50V2lzZShhLCBiLCBvcCkge1xuICAgIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICAgIHZhciByb3dzID0gW107XG4gICAgdmFyIGNvbHMgPSBbXTtcbiAgICB2YXIgdmFscyA9IFtdO1xuICAgIHZhciBvcGVyYXRlID0gZnVuY3Rpb24gKHJvdywgY29sKSB7XG4gICAgICAgIHJvd3MucHVzaChyb3cpO1xuICAgICAgICBjb2xzLnB1c2goY29sKTtcbiAgICAgICAgdmFyIG5leHRWYWx1ZSA9IG9wKGEuZ2V0KHJvdywgY29sKSwgYi5nZXQocm93LCBjb2wpKTtcbiAgICAgICAgdmFscy5wdXNoKG5leHRWYWx1ZSk7XG4gICAgfTtcbiAgICB2YXIgdmFsdWVzQSA9IGEuZ2V0VmFsdWVzKCk7XG4gICAgdmFyIHJvd3NBID0gYS5nZXRSb3dzKCk7XG4gICAgdmFyIGNvbHNBID0gYS5nZXRDb2xzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXNBLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByb3cgPSByb3dzQVtpXTtcbiAgICAgICAgdmFyIGNvbCA9IGNvbHNBW2ldO1xuICAgICAgICB2YXIga2V5ID0gcm93ICsgXCI6XCIgKyBjb2w7XG4gICAgICAgIHZpc2l0ZWQuYWRkKGtleSk7XG4gICAgICAgIG9wZXJhdGUocm93LCBjb2wpO1xuICAgIH1cbiAgICB2YXIgdmFsdWVzQiA9IGIuZ2V0VmFsdWVzKCk7XG4gICAgdmFyIHJvd3NCID0gYi5nZXRSb3dzKCk7XG4gICAgdmFyIGNvbHNCID0gYi5nZXRDb2xzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXNCLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByb3cgPSByb3dzQltpXTtcbiAgICAgICAgdmFyIGNvbCA9IGNvbHNCW2ldO1xuICAgICAgICB2YXIga2V5ID0gcm93ICsgXCI6XCIgKyBjb2w7XG4gICAgICAgIGlmICh2aXNpdGVkLmhhcyhrZXkpKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIG9wZXJhdGUocm93LCBjb2wpO1xuICAgIH1cbiAgICB2YXIgZGltcyA9IFthLm5Sb3dzLCBhLm5Db2xzXTtcbiAgICByZXR1cm4gbmV3IFNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBkaW1zKTtcbn1cbmZ1bmN0aW9uIGdldENTUih4KSB7XG4gICAgdmFyIGVudHJpZXMgPSBbXTtcbiAgICB4LmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCByb3csIGNvbCkge1xuICAgICAgICBlbnRyaWVzLnB1c2goeyB2YWx1ZTogdmFsdWUsIHJvdzogcm93LCBjb2w6IGNvbCB9KTtcbiAgICB9KTtcbiAgICBlbnRyaWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgaWYgKGEucm93ID09PSBiLnJvdykge1xuICAgICAgICAgICAgcmV0dXJuIGEuY29sIC0gYi5jb2w7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYS5yb3cgLSBiLnJvdztcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBpbmRpY2VzID0gW107XG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIHZhciBpbmRwdHIgPSBbXTtcbiAgICB2YXIgY3VycmVudFJvdyA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgX2EgPSBlbnRyaWVzW2ldLCByb3cgPSBfYS5yb3csIGNvbCA9IF9hLmNvbCwgdmFsdWUgPSBfYS52YWx1ZTtcbiAgICAgICAgaWYgKHJvdyAhPT0gY3VycmVudFJvdykge1xuICAgICAgICAgICAgY3VycmVudFJvdyA9IHJvdztcbiAgICAgICAgICAgIGluZHB0ci5wdXNoKGkpO1xuICAgICAgICB9XG4gICAgICAgIGluZGljZXMucHVzaChjb2wpO1xuICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7IGluZGljZXM6IGluZGljZXMsIHZhbHVlczogdmFsdWVzLCBpbmRwdHI6IGluZHB0ciB9O1xufVxuZXhwb3J0cy5nZXRDU1IgPSBnZXRDU1I7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uIChvKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbn07XG52YXIgX19pbXBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydFN0YXIpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xuICAgIHJlc3VsdFtcImRlZmF1bHRcIl0gPSBtb2Q7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaGVhcCA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9oZWFwXCIpKTtcbnZhciBtYXRyaXggPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vbWF0cml4XCIpKTtcbnZhciB0cmVlID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3RyZWVcIikpO1xudmFyIHV0aWxzID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3V0aWxzXCIpKTtcbmZ1bmN0aW9uIG1ha2VOTkRlc2NlbnQoZGlzdGFuY2VGbiwgcmFuZG9tKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5ORGVzY2VudChkYXRhLCBsZWFmQXJyYXksIG5OZWlnaGJvcnMsIG5JdGVycywgbWF4Q2FuZGlkYXRlcywgZGVsdGEsIHJobywgcnBUcmVlSW5pdCkge1xuICAgICAgICBpZiAobkl0ZXJzID09PSB2b2lkIDApIHsgbkl0ZXJzID0gMTA7IH1cbiAgICAgICAgaWYgKG1heENhbmRpZGF0ZXMgPT09IHZvaWQgMCkgeyBtYXhDYW5kaWRhdGVzID0gNTA7IH1cbiAgICAgICAgaWYgKGRlbHRhID09PSB2b2lkIDApIHsgZGVsdGEgPSAwLjAwMTsgfVxuICAgICAgICBpZiAocmhvID09PSB2b2lkIDApIHsgcmhvID0gMC41OyB9XG4gICAgICAgIGlmIChycFRyZWVJbml0ID09PSB2b2lkIDApIHsgcnBUcmVlSW5pdCA9IHRydWU7IH1cbiAgICAgICAgdmFyIG5WZXJ0aWNlcyA9IGRhdGEubGVuZ3RoO1xuICAgICAgICB2YXIgY3VycmVudEdyYXBoID0gaGVhcC5tYWtlSGVhcChkYXRhLmxlbmd0aCwgbk5laWdoYm9ycyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGluZGljZXMgPSBoZWFwLnJlamVjdGlvblNhbXBsZShuTmVpZ2hib3JzLCBkYXRhLmxlbmd0aCwgcmFuZG9tKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW5kaWNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBkID0gZGlzdGFuY2VGbihkYXRhW2ldLCBkYXRhW2luZGljZXNbal1dKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgaSwgZCwgaW5kaWNlc1tqXSwgMSk7XG4gICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGluZGljZXNbal0sIGQsIGksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChycFRyZWVJbml0KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGxlYWZBcnJheS5sZW5ndGg7IG4rKykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVhZkFycmF5W25dLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZWFmQXJyYXlbbl1baV0gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBsZWFmQXJyYXlbbl0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZWFmQXJyYXlbbl1bal0gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtsZWFmQXJyYXlbbl1baV1dLCBkYXRhW2xlYWZBcnJheVtuXVtqXV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGxlYWZBcnJheVtuXVtpXSwgZCwgbGVhZkFycmF5W25dW2pdLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAuaGVhcFB1c2goY3VycmVudEdyYXBoLCBsZWFmQXJyYXlbbl1bal0sIGQsIGxlYWZBcnJheVtuXVtpXSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBuSXRlcnM7IG4rKykge1xuICAgICAgICAgICAgdmFyIGNhbmRpZGF0ZU5laWdoYm9ycyA9IGhlYXAuYnVpbGRDYW5kaWRhdGVzKGN1cnJlbnRHcmFwaCwgblZlcnRpY2VzLCBuTmVpZ2hib3JzLCBtYXhDYW5kaWRhdGVzLCByYW5kb20pO1xuICAgICAgICAgICAgdmFyIGMgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuVmVydGljZXM7IGkrKykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbWF4Q2FuZGlkYXRlczsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwID0gTWF0aC5mbG9vcihjYW5kaWRhdGVOZWlnaGJvcnNbMF1baV1bal0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAocCA8IDAgfHwgdXRpbHMudGF1UmFuZChyYW5kb20pIDwgcmhvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IG1heENhbmRpZGF0ZXM7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHEgPSBNYXRoLmZsb29yKGNhbmRpZGF0ZU5laWdoYm9yc1swXVtpXVtrXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2ogPSBjYW5kaWRhdGVOZWlnaGJvcnNbMl1baV1bal07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2sgPSBjYW5kaWRhdGVOZWlnaGJvcnNbMl1baV1ba107XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocSA8IDAgfHwgKCFjaiAmJiAhY2spKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtwXSwgZGF0YVtxXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjICs9IGhlYXAuaGVhcFB1c2goY3VycmVudEdyYXBoLCBwLCBkLCBxLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgKz0gaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIHEsIGQsIHAsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPD0gZGVsdGEgKiBuTmVpZ2hib3JzICogZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgc29ydGVkID0gaGVhcC5kZWhlYXBTb3J0KGN1cnJlbnRHcmFwaCk7XG4gICAgICAgIHJldHVybiBzb3J0ZWQ7XG4gICAgfTtcbn1cbmV4cG9ydHMubWFrZU5ORGVzY2VudCA9IG1ha2VOTkRlc2NlbnQ7XG5mdW5jdGlvbiBtYWtlSW5pdGlhbGl6YXRpb25zKGRpc3RhbmNlRm4pIHtcbiAgICBmdW5jdGlvbiBpbml0RnJvbVJhbmRvbShuTmVpZ2hib3JzLCBkYXRhLCBxdWVyeVBvaW50cywgX2hlYXAsIHJhbmRvbSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5UG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgaW5kaWNlcyA9IHV0aWxzLnJlamVjdGlvblNhbXBsZShuTmVpZ2hib3JzLCBkYXRhLmxlbmd0aCwgcmFuZG9tKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW5kaWNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChpbmRpY2VzW2pdIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBkaXN0YW5jZUZuKGRhdGFbaW5kaWNlc1tqXV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKF9oZWFwLCBpLCBkLCBpbmRpY2VzW2pdLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpbml0RnJvbVRyZWUoX3RyZWUsIGRhdGEsIHF1ZXJ5UG9pbnRzLCBfaGVhcCwgcmFuZG9tKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBpbmRpY2VzID0gdHJlZS5zZWFyY2hGbGF0VHJlZShxdWVyeVBvaW50c1tpXSwgX3RyZWUsIHJhbmRvbSk7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kaWNlc1tqXSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtpbmRpY2VzW2pdXSwgcXVlcnlQb2ludHNbaV0pO1xuICAgICAgICAgICAgICAgIGhlYXAuaGVhcFB1c2goX2hlYXAsIGksIGQsIGluZGljZXNbal0sIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHsgaW5pdEZyb21SYW5kb206IGluaXRGcm9tUmFuZG9tLCBpbml0RnJvbVRyZWU6IGluaXRGcm9tVHJlZSB9O1xufVxuZXhwb3J0cy5tYWtlSW5pdGlhbGl6YXRpb25zID0gbWFrZUluaXRpYWxpemF0aW9ucztcbmZ1bmN0aW9uIG1ha2VJbml0aWFsaXplZE5OU2VhcmNoKGRpc3RhbmNlRm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbm5TZWFyY2hGbihkYXRhLCBncmFwaCwgaW5pdGlhbGl6YXRpb24sIHF1ZXJ5UG9pbnRzKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB2YXIgX2IgPSBtYXRyaXguZ2V0Q1NSKGdyYXBoKSwgaW5kaWNlcyA9IF9iLmluZGljZXMsIGluZHB0ciA9IF9iLmluZHB0cjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHRyaWVkID0gbmV3IFNldChpbml0aWFsaXphdGlvblswXVtpXSk7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIHZhciB2ZXJ0ZXggPSBoZWFwLnNtYWxsZXN0RmxhZ2dlZChpbml0aWFsaXphdGlvbiwgaSk7XG4gICAgICAgICAgICAgICAgaWYgKHZlcnRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBjYW5kaWRhdGVzID0gaW5kaWNlcy5zbGljZShpbmRwdHJbdmVydGV4XSwgaW5kcHRyW3ZlcnRleCArIDFdKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjYW5kaWRhdGVzXzEgPSBfX3ZhbHVlcyhjYW5kaWRhdGVzKSwgY2FuZGlkYXRlc18xXzEgPSBjYW5kaWRhdGVzXzEubmV4dCgpOyAhY2FuZGlkYXRlc18xXzEuZG9uZTsgY2FuZGlkYXRlc18xXzEgPSBjYW5kaWRhdGVzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2FuZGlkYXRlID0gY2FuZGlkYXRlc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09PSB2ZXJ0ZXggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPT09IC0xIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZWQuaGFzKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZGlzdGFuY2VGbihkYXRhW2NhbmRpZGF0ZV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAudW5jaGVja2VkSGVhcFB1c2goaW5pdGlhbGl6YXRpb24sIGksIGQsIGNhbmRpZGF0ZSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmllZC5hZGQoY2FuZGlkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNfMV8xICYmICFjYW5kaWRhdGVzXzFfMS5kb25lICYmIChfYSA9IGNhbmRpZGF0ZXNfMS5yZXR1cm4pKSBfYS5jYWxsKGNhbmRpZGF0ZXNfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5pdGlhbGl6YXRpb247XG4gICAgfTtcbn1cbmV4cG9ydHMubWFrZUluaXRpYWxpemVkTk5TZWFyY2ggPSBtYWtlSW5pdGlhbGl6ZWROTlNlYXJjaDtcbmZ1bmN0aW9uIGluaXRpYWxpemVTZWFyY2goZm9yZXN0LCBkYXRhLCBxdWVyeVBvaW50cywgbk5laWdoYm9ycywgaW5pdEZyb21SYW5kb20sIGluaXRGcm9tVHJlZSwgcmFuZG9tKSB7XG4gICAgdmFyIGVfMiwgX2E7XG4gICAgdmFyIHJlc3VsdHMgPSBoZWFwLm1ha2VIZWFwKHF1ZXJ5UG9pbnRzLmxlbmd0aCwgbk5laWdoYm9ycyk7XG4gICAgaW5pdEZyb21SYW5kb20obk5laWdoYm9ycywgZGF0YSwgcXVlcnlQb2ludHMsIHJlc3VsdHMsIHJhbmRvbSk7XG4gICAgaWYgKGZvcmVzdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgZm9yZXN0XzEgPSBfX3ZhbHVlcyhmb3Jlc3QpLCBmb3Jlc3RfMV8xID0gZm9yZXN0XzEubmV4dCgpOyAhZm9yZXN0XzFfMS5kb25lOyBmb3Jlc3RfMV8xID0gZm9yZXN0XzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRyZWVfMSA9IGZvcmVzdF8xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgaW5pdEZyb21UcmVlKHRyZWVfMSwgZGF0YSwgcXVlcnlQb2ludHMsIHJlc3VsdHMsIHJhbmRvbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChmb3Jlc3RfMV8xICYmICFmb3Jlc3RfMV8xLmRvbmUgJiYgKF9hID0gZm9yZXN0XzEucmV0dXJuKSkgX2EuY2FsbChmb3Jlc3RfMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG59XG5leHBvcnRzLmluaXRpYWxpemVTZWFyY2ggPSBpbml0aWFsaXplU2VhcmNoO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWQgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB1dGlscyA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi91dGlsc1wiKSk7XG52YXIgRmxhdFRyZWUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZsYXRUcmVlKGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcykge1xuICAgICAgICB0aGlzLmh5cGVycGxhbmVzID0gaHlwZXJwbGFuZXM7XG4gICAgICAgIHRoaXMub2Zmc2V0cyA9IG9mZnNldHM7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgICAgdGhpcy5pbmRpY2VzID0gaW5kaWNlcztcbiAgICB9XG4gICAgcmV0dXJuIEZsYXRUcmVlO1xufSgpKTtcbmV4cG9ydHMuRmxhdFRyZWUgPSBGbGF0VHJlZTtcbmZ1bmN0aW9uIG1ha2VGb3Jlc3QoZGF0YSwgbk5laWdoYm9ycywgblRyZWVzLCByYW5kb20pIHtcbiAgICB2YXIgbGVhZlNpemUgPSBNYXRoLm1heCgxMCwgbk5laWdoYm9ycyk7XG4gICAgdmFyIHRyZWVzID0gdXRpbHNcbiAgICAgICAgLnJhbmdlKG5UcmVlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoXywgaSkgeyByZXR1cm4gbWFrZVRyZWUoZGF0YSwgbGVhZlNpemUsIGksIHJhbmRvbSk7IH0pO1xuICAgIHZhciBmb3Jlc3QgPSB0cmVlcy5tYXAoZnVuY3Rpb24gKHRyZWUpIHsgcmV0dXJuIGZsYXR0ZW5UcmVlKHRyZWUsIGxlYWZTaXplKTsgfSk7XG4gICAgcmV0dXJuIGZvcmVzdDtcbn1cbmV4cG9ydHMubWFrZUZvcmVzdCA9IG1ha2VGb3Jlc3Q7XG5mdW5jdGlvbiBtYWtlVHJlZShkYXRhLCBsZWFmU2l6ZSwgbiwgcmFuZG9tKSB7XG4gICAgaWYgKGxlYWZTaXplID09PSB2b2lkIDApIHsgbGVhZlNpemUgPSAzMDsgfVxuICAgIHZhciBpbmRpY2VzID0gdXRpbHMucmFuZ2UoZGF0YS5sZW5ndGgpO1xuICAgIHZhciB0cmVlID0gbWFrZUV1Y2xpZGVhblRyZWUoZGF0YSwgaW5kaWNlcywgbGVhZlNpemUsIG4sIHJhbmRvbSk7XG4gICAgcmV0dXJuIHRyZWU7XG59XG5mdW5jdGlvbiBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzLCBsZWFmU2l6ZSwgcSwgcmFuZG9tKSB7XG4gICAgaWYgKGxlYWZTaXplID09PSB2b2lkIDApIHsgbGVhZlNpemUgPSAzMDsgfVxuICAgIGlmIChpbmRpY2VzLmxlbmd0aCA+IGxlYWZTaXplKSB7XG4gICAgICAgIHZhciBzcGxpdFJlc3VsdHMgPSBldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQoZGF0YSwgaW5kaWNlcywgcmFuZG9tKTtcbiAgICAgICAgdmFyIGluZGljZXNMZWZ0ID0gc3BsaXRSZXN1bHRzLmluZGljZXNMZWZ0LCBpbmRpY2VzUmlnaHQgPSBzcGxpdFJlc3VsdHMuaW5kaWNlc1JpZ2h0LCBoeXBlcnBsYW5lID0gc3BsaXRSZXN1bHRzLmh5cGVycGxhbmUsIG9mZnNldCA9IHNwbGl0UmVzdWx0cy5vZmZzZXQ7XG4gICAgICAgIHZhciBsZWZ0Q2hpbGQgPSBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzTGVmdCwgbGVhZlNpemUsIHEgKyAxLCByYW5kb20pO1xuICAgICAgICB2YXIgcmlnaHRDaGlsZCA9IG1ha2VFdWNsaWRlYW5UcmVlKGRhdGEsIGluZGljZXNSaWdodCwgbGVhZlNpemUsIHEgKyAxLCByYW5kb20pO1xuICAgICAgICB2YXIgbm9kZSA9IHsgbGVmdENoaWxkOiBsZWZ0Q2hpbGQsIHJpZ2h0Q2hpbGQ6IHJpZ2h0Q2hpbGQsIGlzTGVhZjogZmFsc2UsIGh5cGVycGxhbmU6IGh5cGVycGxhbmUsIG9mZnNldDogb2Zmc2V0IH07XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIG5vZGUgPSB7IGluZGljZXM6IGluZGljZXMsIGlzTGVhZjogdHJ1ZSB9O1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG59XG5mdW5jdGlvbiBldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQoZGF0YSwgaW5kaWNlcywgcmFuZG9tKSB7XG4gICAgdmFyIGRpbSA9IGRhdGFbMF0ubGVuZ3RoO1xuICAgIHZhciBsZWZ0SW5kZXggPSB1dGlscy50YXVSYW5kSW50KGluZGljZXMubGVuZ3RoLCByYW5kb20pO1xuICAgIHZhciByaWdodEluZGV4ID0gdXRpbHMudGF1UmFuZEludChpbmRpY2VzLmxlbmd0aCwgcmFuZG9tKTtcbiAgICByaWdodEluZGV4ICs9IGxlZnRJbmRleCA9PT0gcmlnaHRJbmRleCA/IDEgOiAwO1xuICAgIHJpZ2h0SW5kZXggPSByaWdodEluZGV4ICUgaW5kaWNlcy5sZW5ndGg7XG4gICAgdmFyIGxlZnQgPSBpbmRpY2VzW2xlZnRJbmRleF07XG4gICAgdmFyIHJpZ2h0ID0gaW5kaWNlc1tyaWdodEluZGV4XTtcbiAgICB2YXIgaHlwZXJwbGFuZU9mZnNldCA9IDA7XG4gICAgdmFyIGh5cGVycGxhbmVWZWN0b3IgPSB1dGlscy56ZXJvcyhkaW0pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaHlwZXJwbGFuZVZlY3Rvci5sZW5ndGg7IGkrKykge1xuICAgICAgICBoeXBlcnBsYW5lVmVjdG9yW2ldID0gZGF0YVtsZWZ0XVtpXSAtIGRhdGFbcmlnaHRdW2ldO1xuICAgICAgICBoeXBlcnBsYW5lT2Zmc2V0IC09XG4gICAgICAgICAgICAoaHlwZXJwbGFuZVZlY3RvcltpXSAqIChkYXRhW2xlZnRdW2ldICsgZGF0YVtyaWdodF1baV0pKSAvIDIuMDtcbiAgICB9XG4gICAgdmFyIG5MZWZ0ID0gMDtcbiAgICB2YXIgblJpZ2h0ID0gMDtcbiAgICB2YXIgc2lkZSA9IHV0aWxzLnplcm9zKGluZGljZXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG1hcmdpbiA9IGh5cGVycGxhbmVPZmZzZXQ7XG4gICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgIG1hcmdpbiArPSBoeXBlcnBsYW5lVmVjdG9yW2RdICogZGF0YVtpbmRpY2VzW2ldXVtkXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFyZ2luID09PSAwKSB7XG4gICAgICAgICAgICBzaWRlW2ldID0gdXRpbHMudGF1UmFuZEludCgyLCByYW5kb20pO1xuICAgICAgICAgICAgaWYgKHNpZGVbaV0gPT09IDApIHtcbiAgICAgICAgICAgICAgICBuTGVmdCArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgblJpZ2h0ICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWFyZ2luID4gMCkge1xuICAgICAgICAgICAgc2lkZVtpXSA9IDA7XG4gICAgICAgICAgICBuTGVmdCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2lkZVtpXSA9IDE7XG4gICAgICAgICAgICBuUmlnaHQgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgaW5kaWNlc0xlZnQgPSB1dGlscy56ZXJvcyhuTGVmdCk7XG4gICAgdmFyIGluZGljZXNSaWdodCA9IHV0aWxzLnplcm9zKG5SaWdodCk7XG4gICAgbkxlZnQgPSAwO1xuICAgIG5SaWdodCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWRlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChzaWRlW2ldID09PSAwKSB7XG4gICAgICAgICAgICBpbmRpY2VzTGVmdFtuTGVmdF0gPSBpbmRpY2VzW2ldO1xuICAgICAgICAgICAgbkxlZnQgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGluZGljZXNSaWdodFtuUmlnaHRdID0gaW5kaWNlc1tpXTtcbiAgICAgICAgICAgIG5SaWdodCArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGluZGljZXNMZWZ0OiBpbmRpY2VzTGVmdCxcbiAgICAgICAgaW5kaWNlc1JpZ2h0OiBpbmRpY2VzUmlnaHQsXG4gICAgICAgIGh5cGVycGxhbmU6IGh5cGVycGxhbmVWZWN0b3IsXG4gICAgICAgIG9mZnNldDogaHlwZXJwbGFuZU9mZnNldCxcbiAgICB9O1xufVxuZnVuY3Rpb24gZmxhdHRlblRyZWUodHJlZSwgbGVhZlNpemUpIHtcbiAgICB2YXIgbk5vZGVzID0gbnVtTm9kZXModHJlZSk7XG4gICAgdmFyIG5MZWF2ZXMgPSBudW1MZWF2ZXModHJlZSk7XG4gICAgdmFyIGh5cGVycGxhbmVzID0gdXRpbHNcbiAgICAgICAgLnJhbmdlKG5Ob2RlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiB1dGlscy56ZXJvcyh0cmVlLmh5cGVycGxhbmUgPyB0cmVlLmh5cGVycGxhbmUubGVuZ3RoIDogMCk7IH0pO1xuICAgIHZhciBvZmZzZXRzID0gdXRpbHMuemVyb3Mobk5vZGVzKTtcbiAgICB2YXIgY2hpbGRyZW4gPSB1dGlscy5yYW5nZShuTm9kZXMpLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiBbLTEsIC0xXTsgfSk7XG4gICAgdmFyIGluZGljZXMgPSB1dGlsc1xuICAgICAgICAucmFuZ2UobkxlYXZlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiB1dGlscy5yYW5nZShsZWFmU2l6ZSkubWFwKGZ1bmN0aW9uICgpIHsgcmV0dXJuIC0xOyB9KTsgfSk7XG4gICAgcmVjdXJzaXZlRmxhdHRlbih0cmVlLCBoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMsIDAsIDApO1xuICAgIHJldHVybiBuZXcgRmxhdFRyZWUoaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzKTtcbn1cbmZ1bmN0aW9uIHJlY3Vyc2l2ZUZsYXR0ZW4odHJlZSwgaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzLCBub2RlTnVtLCBsZWFmTnVtKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmICh0cmVlLmlzTGVhZikge1xuICAgICAgICBjaGlsZHJlbltub2RlTnVtXVswXSA9IC1sZWFmTnVtO1xuICAgICAgICAoX2EgPSBpbmRpY2VzW2xlYWZOdW1dKS5zcGxpY2UuYXBwbHkoX2EsIF9fc3ByZWFkKFswLCB0cmVlLmluZGljZXMubGVuZ3RoXSwgdHJlZS5pbmRpY2VzKSk7XG4gICAgICAgIGxlYWZOdW0gKz0gMTtcbiAgICAgICAgcmV0dXJuIHsgbm9kZU51bTogbm9kZU51bSwgbGVhZk51bTogbGVhZk51bSB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaHlwZXJwbGFuZXNbbm9kZU51bV0gPSB0cmVlLmh5cGVycGxhbmU7XG4gICAgICAgIG9mZnNldHNbbm9kZU51bV0gPSB0cmVlLm9mZnNldDtcbiAgICAgICAgY2hpbGRyZW5bbm9kZU51bV1bMF0gPSBub2RlTnVtICsgMTtcbiAgICAgICAgdmFyIG9sZE5vZGVOdW0gPSBub2RlTnVtO1xuICAgICAgICB2YXIgcmVzID0gcmVjdXJzaXZlRmxhdHRlbih0cmVlLmxlZnRDaGlsZCwgaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzLCBub2RlTnVtICsgMSwgbGVhZk51bSk7XG4gICAgICAgIG5vZGVOdW0gPSByZXMubm9kZU51bTtcbiAgICAgICAgbGVhZk51bSA9IHJlcy5sZWFmTnVtO1xuICAgICAgICBjaGlsZHJlbltvbGROb2RlTnVtXVsxXSA9IG5vZGVOdW0gKyAxO1xuICAgICAgICByZXMgPSByZWN1cnNpdmVGbGF0dGVuKHRyZWUucmlnaHRDaGlsZCwgaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzLCBub2RlTnVtICsgMSwgbGVhZk51bSk7XG4gICAgICAgIHJldHVybiB7IG5vZGVOdW06IHJlcy5ub2RlTnVtLCBsZWFmTnVtOiByZXMubGVhZk51bSB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIG51bU5vZGVzKHRyZWUpIHtcbiAgICBpZiAodHJlZS5pc0xlYWYpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMSArIG51bU5vZGVzKHRyZWUubGVmdENoaWxkKSArIG51bU5vZGVzKHRyZWUucmlnaHRDaGlsZCk7XG4gICAgfVxufVxuZnVuY3Rpb24gbnVtTGVhdmVzKHRyZWUpIHtcbiAgICBpZiAodHJlZS5pc0xlYWYpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVtTGVhdmVzKHRyZWUubGVmdENoaWxkKSArIG51bUxlYXZlcyh0cmVlLnJpZ2h0Q2hpbGQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1ha2VMZWFmQXJyYXkocnBGb3Jlc3QpIHtcbiAgICB2YXIgZV8xLCBfYTtcbiAgICBpZiAocnBGb3Jlc3QubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBycEZvcmVzdF8xID0gX192YWx1ZXMocnBGb3Jlc3QpLCBycEZvcmVzdF8xXzEgPSBycEZvcmVzdF8xLm5leHQoKTsgIXJwRm9yZXN0XzFfMS5kb25lOyBycEZvcmVzdF8xXzEgPSBycEZvcmVzdF8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciB0cmVlID0gcnBGb3Jlc3RfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoLmFwcGx5KG91dHB1dCwgX19zcHJlYWQodHJlZS5pbmRpY2VzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChycEZvcmVzdF8xXzEgJiYgIXJwRm9yZXN0XzFfMS5kb25lICYmIChfYSA9IHJwRm9yZXN0XzEucmV0dXJuKSkgX2EuY2FsbChycEZvcmVzdF8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtbLTFdXTtcbiAgICB9XG59XG5leHBvcnRzLm1ha2VMZWFmQXJyYXkgPSBtYWtlTGVhZkFycmF5O1xuZnVuY3Rpb24gc2VsZWN0U2lkZShoeXBlcnBsYW5lLCBvZmZzZXQsIHBvaW50LCByYW5kb20pIHtcbiAgICB2YXIgbWFyZ2luID0gb2Zmc2V0O1xuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgcG9pbnQubGVuZ3RoOyBkKyspIHtcbiAgICAgICAgbWFyZ2luICs9IGh5cGVycGxhbmVbZF0gKiBwb2ludFtkXTtcbiAgICB9XG4gICAgaWYgKG1hcmdpbiA9PT0gMCkge1xuICAgICAgICB2YXIgc2lkZSA9IHV0aWxzLnRhdVJhbmRJbnQoMiwgcmFuZG9tKTtcbiAgICAgICAgcmV0dXJuIHNpZGU7XG4gICAgfVxuICAgIGVsc2UgaWYgKG1hcmdpbiA+IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG59XG5mdW5jdGlvbiBzZWFyY2hGbGF0VHJlZShwb2ludCwgdHJlZSwgcmFuZG9tKSB7XG4gICAgdmFyIG5vZGUgPSAwO1xuICAgIHdoaWxlICh0cmVlLmNoaWxkcmVuW25vZGVdWzBdID4gMCkge1xuICAgICAgICB2YXIgc2lkZSA9IHNlbGVjdFNpZGUodHJlZS5oeXBlcnBsYW5lc1tub2RlXSwgdHJlZS5vZmZzZXRzW25vZGVdLCBwb2ludCwgcmFuZG9tKTtcbiAgICAgICAgaWYgKHNpZGUgPT09IDApIHtcbiAgICAgICAgICAgIG5vZGUgPSB0cmVlLmNoaWxkcmVuW25vZGVdWzBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbm9kZSA9IHRyZWUuY2hpbGRyZW5bbm9kZV1bMV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGluZGV4ID0gLTEgKiB0cmVlLmNoaWxkcmVuW25vZGVdWzBdO1xuICAgIHJldHVybiB0cmVlLmluZGljZXNbaW5kZXhdO1xufVxuZXhwb3J0cy5zZWFyY2hGbGF0VHJlZSA9IHNlYXJjaEZsYXRUcmVlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHJlc3VsdC52YWx1ZSk7IH0pLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fc3ByZWFkID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZCkgfHwgZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBoZWFwID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2hlYXBcIikpO1xudmFyIG1hdHJpeCA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9tYXRyaXhcIikpO1xudmFyIG5uRGVzY2VudCA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9ubl9kZXNjZW50XCIpKTtcbnZhciB0cmVlID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3RyZWVcIikpO1xudmFyIHV0aWxzID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3V0aWxzXCIpKTtcbnZhciBtbF9sZXZlbmJlcmdfbWFycXVhcmR0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1sLWxldmVuYmVyZy1tYXJxdWFyZHRcIikpO1xudmFyIFNNT09USF9LX1RPTEVSQU5DRSA9IDFlLTU7XG52YXIgTUlOX0tfRElTVF9TQ0FMRSA9IDFlLTM7XG52YXIgVU1BUCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gVU1BUChwYXJhbXMpIHtcbiAgICAgICAgaWYgKHBhcmFtcyA9PT0gdm9pZCAwKSB7IHBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMubGVhcm5pbmdSYXRlID0gMS4wO1xuICAgICAgICB0aGlzLmxvY2FsQ29ubmVjdGl2aXR5ID0gMS4wO1xuICAgICAgICB0aGlzLm1pbkRpc3QgPSAwLjE7XG4gICAgICAgIHRoaXMubkNvbXBvbmVudHMgPSAyO1xuICAgICAgICB0aGlzLm5FcG9jaHMgPSAwO1xuICAgICAgICB0aGlzLm5OZWlnaGJvcnMgPSAxNTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZVNhbXBsZVJhdGUgPSA1O1xuICAgICAgICB0aGlzLnJhbmRvbSA9IE1hdGgucmFuZG9tO1xuICAgICAgICB0aGlzLnJlcHVsc2lvblN0cmVuZ3RoID0gMS4wO1xuICAgICAgICB0aGlzLnNldE9wTWl4UmF0aW8gPSAxLjA7XG4gICAgICAgIHRoaXMuc3ByZWFkID0gMS4wO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybVF1ZXVlU2l6ZSA9IDQuMDtcbiAgICAgICAgdGhpcy50YXJnZXRNZXRyaWMgPSBcImNhdGVnb3JpY2FsXCI7XG4gICAgICAgIHRoaXMudGFyZ2V0V2VpZ2h0ID0gMC41O1xuICAgICAgICB0aGlzLnRhcmdldE5OZWlnaGJvcnMgPSB0aGlzLm5OZWlnaGJvcnM7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbiA9IGV1Y2xpZGVhbjtcbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucnBGb3Jlc3QgPSBbXTtcbiAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSBbXTtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZSA9IG5ldyBPcHRpbWl6YXRpb25TdGF0ZSgpO1xuICAgICAgICB2YXIgc2V0UGFyYW0gPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAocGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBfdGhpc1trZXldID0gcGFyYW1zW2tleV07XG4gICAgICAgIH07XG4gICAgICAgIHNldFBhcmFtKCdkaXN0YW5jZUZuJyk7XG4gICAgICAgIHNldFBhcmFtKCdsZWFybmluZ1JhdGUnKTtcbiAgICAgICAgc2V0UGFyYW0oJ2xvY2FsQ29ubmVjdGl2aXR5Jyk7XG4gICAgICAgIHNldFBhcmFtKCdtaW5EaXN0Jyk7XG4gICAgICAgIHNldFBhcmFtKCduQ29tcG9uZW50cycpO1xuICAgICAgICBzZXRQYXJhbSgnbkVwb2NocycpO1xuICAgICAgICBzZXRQYXJhbSgnbk5laWdoYm9ycycpO1xuICAgICAgICBzZXRQYXJhbSgnbmVnYXRpdmVTYW1wbGVSYXRlJyk7XG4gICAgICAgIHNldFBhcmFtKCdyYW5kb20nKTtcbiAgICAgICAgc2V0UGFyYW0oJ3JlcHVsc2lvblN0cmVuZ3RoJyk7XG4gICAgICAgIHNldFBhcmFtKCdzZXRPcE1peFJhdGlvJyk7XG4gICAgICAgIHNldFBhcmFtKCdzcHJlYWQnKTtcbiAgICAgICAgc2V0UGFyYW0oJ3RyYW5zZm9ybVF1ZXVlU2l6ZScpO1xuICAgIH1cbiAgICBVTUFQLnByb3RvdHlwZS5maXQgPSBmdW5jdGlvbiAoWCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVGaXQoWCk7XG4gICAgICAgIHRoaXMub3B0aW1pemVMYXlvdXQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1iZWRkaW5nO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuZml0QXN5bmMgPSBmdW5jdGlvbiAoWCwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKGNhbGxiYWNrID09PSB2b2lkIDApIHsgY2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpdChYKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgdGhpcy5vcHRpbWl6ZUxheW91dEFzeW5jKGNhbGxiYWNrKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiwgdGhpcy5lbWJlZGRpbmddO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnNldFN1cGVydmlzZWRQcm9qZWN0aW9uID0gZnVuY3Rpb24gKFksIHBhcmFtcykge1xuICAgICAgICBpZiAocGFyYW1zID09PSB2b2lkIDApIHsgcGFyYW1zID0ge307IH1cbiAgICAgICAgdGhpcy5ZID0gWTtcbiAgICAgICAgdGhpcy50YXJnZXRNZXRyaWMgPSBwYXJhbXMudGFyZ2V0TWV0cmljIHx8IHRoaXMudGFyZ2V0TWV0cmljO1xuICAgICAgICB0aGlzLnRhcmdldFdlaWdodCA9IHBhcmFtcy50YXJnZXRXZWlnaHQgfHwgdGhpcy50YXJnZXRXZWlnaHQ7XG4gICAgICAgIHRoaXMudGFyZ2V0Tk5laWdoYm9ycyA9IHBhcmFtcy50YXJnZXROTmVpZ2hib3JzIHx8IHRoaXMudGFyZ2V0Tk5laWdoYm9ycztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnNldFByZWNvbXB1dGVkS05OID0gZnVuY3Rpb24gKGtubkluZGljZXMsIGtubkRpc3RhbmNlcykge1xuICAgICAgICB0aGlzLmtubkluZGljZXMgPSBrbm5JbmRpY2VzO1xuICAgICAgICB0aGlzLmtubkRpc3RhbmNlcyA9IGtubkRpc3RhbmNlcztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmluaXRpYWxpemVGaXQgPSBmdW5jdGlvbiAoWCkge1xuICAgICAgICBpZiAoWC5sZW5ndGggPD0gdGhpcy5uTmVpZ2hib3JzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgZW5vdWdoIGRhdGEgcG9pbnRzIChcIiArIFgubGVuZ3RoICsgXCIpIHRvIGNyZWF0ZSBuTmVpZ2hib3JzOiBcIiArIHRoaXMubk5laWdoYm9ycyArIFwiLiAgQWRkIG1vcmUgZGF0YSBwb2ludHMgb3IgYWRqdXN0IHRoZSBjb25maWd1cmF0aW9uLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5YID09PSBYICYmIHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TkVwb2NocygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuWCA9IFg7XG4gICAgICAgIGlmICghdGhpcy5rbm5JbmRpY2VzICYmICF0aGlzLmtubkRpc3RhbmNlcykge1xuICAgICAgICAgICAgdmFyIGtublJlc3VsdHMgPSB0aGlzLm5lYXJlc3ROZWlnaGJvcnMoWCk7XG4gICAgICAgICAgICB0aGlzLmtubkluZGljZXMgPSBrbm5SZXN1bHRzLmtubkluZGljZXM7XG4gICAgICAgICAgICB0aGlzLmtubkRpc3RhbmNlcyA9IGtublJlc3VsdHMua25uRGlzdGFuY2VzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JhcGggPSB0aGlzLmZ1enp5U2ltcGxpY2lhbFNldChYLCB0aGlzLm5OZWlnaGJvcnMsIHRoaXMuc2V0T3BNaXhSYXRpbyk7XG4gICAgICAgIHRoaXMubWFrZVNlYXJjaEZucygpO1xuICAgICAgICB0aGlzLnNlYXJjaEdyYXBoID0gdGhpcy5tYWtlU2VhcmNoR3JhcGgoWCk7XG4gICAgICAgIHRoaXMucHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb24oKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5pbml0aWFsaXplU2ltcGxpY2lhbFNldEVtYmVkZGluZygpLCBoZWFkID0gX2EuaGVhZCwgdGFpbCA9IF9hLnRhaWwsIGVwb2Noc1BlclNhbXBsZSA9IF9hLmVwb2Noc1BlclNhbXBsZTtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5oZWFkID0gaGVhZDtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS50YWlsID0gdGFpbDtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5lcG9jaHNQZXJTYW1wbGUgPSBlcG9jaHNQZXJTYW1wbGU7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9wdGltaXphdGlvbigpO1xuICAgICAgICB0aGlzLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wKCk7XG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm1ha2VTZWFyY2hGbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IG5uRGVzY2VudC5tYWtlSW5pdGlhbGl6YXRpb25zKHRoaXMuZGlzdGFuY2VGbiksIGluaXRGcm9tVHJlZSA9IF9hLmluaXRGcm9tVHJlZSwgaW5pdEZyb21SYW5kb20gPSBfYS5pbml0RnJvbVJhbmRvbTtcbiAgICAgICAgdGhpcy5pbml0RnJvbVRyZWUgPSBpbml0RnJvbVRyZWU7XG4gICAgICAgIHRoaXMuaW5pdEZyb21SYW5kb20gPSBpbml0RnJvbVJhbmRvbTtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSBubkRlc2NlbnQubWFrZUluaXRpYWxpemVkTk5TZWFyY2godGhpcy5kaXN0YW5jZUZuKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm1ha2VTZWFyY2hHcmFwaCA9IGZ1bmN0aW9uIChYKSB7XG4gICAgICAgIHZhciBrbm5JbmRpY2VzID0gdGhpcy5rbm5JbmRpY2VzO1xuICAgICAgICB2YXIga25uRGlzdGFuY2VzID0gdGhpcy5rbm5EaXN0YW5jZXM7XG4gICAgICAgIHZhciBkaW1zID0gW1gubGVuZ3RoLCBYLmxlbmd0aF07XG4gICAgICAgIHZhciBzZWFyY2hHcmFwaCA9IG5ldyBtYXRyaXguU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIGRpbXMpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtubkluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBrbm4gPSBrbm5JbmRpY2VzW2ldO1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlcyA9IGtubkRpc3RhbmNlc1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwga25uLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5laWdoYm9yID0ga25uW2pdO1xuICAgICAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IGRpc3RhbmNlc1tqXTtcbiAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEdyYXBoLnNldChpLCBuZWlnaGJvciwgZGlzdGFuY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgdHJhbnNwb3NlID0gbWF0cml4LnRyYW5zcG9zZShzZWFyY2hHcmFwaCk7XG4gICAgICAgIHJldHVybiBtYXRyaXgubWF4aW11bShzZWFyY2hHcmFwaCwgdHJhbnNwb3NlKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uICh0b1RyYW5zZm9ybSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcmF3RGF0YSA9IHRoaXMuWDtcbiAgICAgICAgaWYgKHJhd0RhdGEgPT09IHVuZGVmaW5lZCB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBkYXRhIGhhcyBiZWVuIGZpdC4nKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbk5laWdoYm9ycyA9IE1hdGguZmxvb3IodGhpcy5uTmVpZ2hib3JzICogdGhpcy50cmFuc2Zvcm1RdWV1ZVNpemUpO1xuICAgICAgICBuTmVpZ2hib3JzID0gTWF0aC5taW4ocmF3RGF0YS5sZW5ndGgsIG5OZWlnaGJvcnMpO1xuICAgICAgICB2YXIgaW5pdCA9IG5uRGVzY2VudC5pbml0aWFsaXplU2VhcmNoKHRoaXMucnBGb3Jlc3QsIHJhd0RhdGEsIHRvVHJhbnNmb3JtLCBuTmVpZ2hib3JzLCB0aGlzLmluaXRGcm9tUmFuZG9tLCB0aGlzLmluaXRGcm9tVHJlZSwgdGhpcy5yYW5kb20pO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5zZWFyY2gocmF3RGF0YSwgdGhpcy5zZWFyY2hHcmFwaCwgaW5pdCwgdG9UcmFuc2Zvcm0pO1xuICAgICAgICB2YXIgX2EgPSBoZWFwLmRlaGVhcFNvcnQocmVzdWx0KSwgaW5kaWNlcyA9IF9hLmluZGljZXMsIGRpc3RhbmNlcyA9IF9hLndlaWdodHM7XG4gICAgICAgIGluZGljZXMgPSBpbmRpY2VzLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5zbGljZSgwLCBfdGhpcy5uTmVpZ2hib3JzKTsgfSk7XG4gICAgICAgIGRpc3RhbmNlcyA9IGRpc3RhbmNlcy5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHguc2xpY2UoMCwgX3RoaXMubk5laWdoYm9ycyk7IH0pO1xuICAgICAgICB2YXIgYWRqdXN0ZWRMb2NhbENvbm5lY3Rpdml0eSA9IE1hdGgubWF4KDAsIHRoaXMubG9jYWxDb25uZWN0aXZpdHkgLSAxKTtcbiAgICAgICAgdmFyIF9iID0gdGhpcy5zbW9vdGhLTk5EaXN0YW5jZShkaXN0YW5jZXMsIHRoaXMubk5laWdoYm9ycywgYWRqdXN0ZWRMb2NhbENvbm5lY3Rpdml0eSksIHNpZ21hcyA9IF9iLnNpZ21hcywgcmhvcyA9IF9iLnJob3M7XG4gICAgICAgIHZhciBfYyA9IHRoaXMuY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMoaW5kaWNlcywgZGlzdGFuY2VzLCBzaWdtYXMsIHJob3MpLCByb3dzID0gX2Mucm93cywgY29scyA9IF9jLmNvbHMsIHZhbHMgPSBfYy52YWxzO1xuICAgICAgICB2YXIgc2l6ZSA9IFt0b1RyYW5zZm9ybS5sZW5ndGgsIHJhd0RhdGEubGVuZ3RoXTtcbiAgICAgICAgdmFyIGdyYXBoID0gbmV3IG1hdHJpeC5TcGFyc2VNYXRyaXgocm93cywgY29scywgdmFscywgc2l6ZSk7XG4gICAgICAgIHZhciBub3JtZWQgPSBtYXRyaXgubm9ybWFsaXplKGdyYXBoLCBcImwxXCIpO1xuICAgICAgICB2YXIgY3NyTWF0cml4ID0gbWF0cml4LmdldENTUihub3JtZWQpO1xuICAgICAgICB2YXIgblBvaW50cyA9IHRvVHJhbnNmb3JtLmxlbmd0aDtcbiAgICAgICAgdmFyIGVJbmRpY2VzID0gdXRpbHMucmVzaGFwZTJkKGNzck1hdHJpeC5pbmRpY2VzLCBuUG9pbnRzLCB0aGlzLm5OZWlnaGJvcnMpO1xuICAgICAgICB2YXIgZVdlaWdodHMgPSB1dGlscy5yZXNoYXBlMmQoY3NyTWF0cml4LnZhbHVlcywgblBvaW50cywgdGhpcy5uTmVpZ2hib3JzKTtcbiAgICAgICAgdmFyIGVtYmVkZGluZyA9IGluaXRUcmFuc2Zvcm0oZUluZGljZXMsIGVXZWlnaHRzLCB0aGlzLmVtYmVkZGluZyk7XG4gICAgICAgIHZhciBuRXBvY2hzID0gdGhpcy5uRXBvY2hzXG4gICAgICAgICAgICA/IHRoaXMubkVwb2NocyAvIDNcbiAgICAgICAgICAgIDogZ3JhcGgublJvd3MgPD0gMTAwMDBcbiAgICAgICAgICAgICAgICA/IDEwMFxuICAgICAgICAgICAgICAgIDogMzA7XG4gICAgICAgIHZhciBncmFwaE1heCA9IGdyYXBoXG4gICAgICAgICAgICAuZ2V0VmFsdWVzKClcbiAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKG1heCwgdmFsKSB7IHJldHVybiAodmFsID4gbWF4ID8gdmFsIDogbWF4KTsgfSwgMCk7XG4gICAgICAgIGdyYXBoID0gZ3JhcGgubWFwKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gKHZhbHVlIDwgZ3JhcGhNYXggLyBuRXBvY2hzID8gMCA6IHZhbHVlKTsgfSk7XG4gICAgICAgIGdyYXBoID0gbWF0cml4LmVsaW1pbmF0ZVplcm9zKGdyYXBoKTtcbiAgICAgICAgdmFyIGVwb2Noc1BlclNhbXBsZSA9IHRoaXMubWFrZUVwb2Noc1BlclNhbXBsZShncmFwaC5nZXRWYWx1ZXMoKSwgbkVwb2Nocyk7XG4gICAgICAgIHZhciBoZWFkID0gZ3JhcGguZ2V0Um93cygpO1xuICAgICAgICB2YXIgdGFpbCA9IGdyYXBoLmdldENvbHMoKTtcbiAgICAgICAgdGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgaGVhZEVtYmVkZGluZzogZW1iZWRkaW5nLFxuICAgICAgICAgICAgdGFpbEVtYmVkZGluZzogdGhpcy5lbWJlZGRpbmcsXG4gICAgICAgICAgICBoZWFkOiBoZWFkLFxuICAgICAgICAgICAgdGFpbDogdGFpbCxcbiAgICAgICAgICAgIGN1cnJlbnRFcG9jaDogMCxcbiAgICAgICAgICAgIG5FcG9jaHM6IG5FcG9jaHMsXG4gICAgICAgICAgICBuVmVydGljZXM6IGdyYXBoLmdldERpbXMoKVsxXSxcbiAgICAgICAgICAgIGVwb2Noc1BlclNhbXBsZTogZXBvY2hzUGVyU2FtcGxlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpbWl6ZUxheW91dCgpO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUucHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIFkgPSBfYS5ZLCBYID0gX2EuWDtcbiAgICAgICAgaWYgKFkpIHtcbiAgICAgICAgICAgIGlmIChZLmxlbmd0aCAhPT0gWC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xlbmd0aCBvZiBYIGFuZCB5IG11c3QgYmUgZXF1YWwnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldE1ldHJpYyA9PT0gXCJjYXRlZ29yaWNhbFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIGx0ID0gdGhpcy50YXJnZXRXZWlnaHQgPCAxLjA7XG4gICAgICAgICAgICAgICAgdmFyIGZhckRpc3QgPSBsdCA/IDIuNSAqICgxLjAgLyAoMS4wIC0gdGhpcy50YXJnZXRXZWlnaHQpKSA6IDEuMGUxMjtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoID0gdGhpcy5jYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24odGhpcy5ncmFwaCwgWSwgZmFyRGlzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnN0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjdXJyZW50RXBvY2ggPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtcbiAgICAgICAgaWYgKGN1cnJlbnRFcG9jaCA8IHRoaXMuZ2V0TkVwb2NocygpKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmdldEVtYmVkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1iZWRkaW5nO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUubmVhcmVzdE5laWdoYm9ycyA9IGZ1bmN0aW9uIChYKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGRpc3RhbmNlRm4gPSBfYS5kaXN0YW5jZUZuLCBuTmVpZ2hib3JzID0gX2Eubk5laWdoYm9ycztcbiAgICAgICAgdmFyIGxvZzIgPSBmdW5jdGlvbiAobikgeyByZXR1cm4gTWF0aC5sb2cobikgLyBNYXRoLmxvZygyKTsgfTtcbiAgICAgICAgdmFyIG1ldHJpY05ORGVzY2VudCA9IG5uRGVzY2VudC5tYWtlTk5EZXNjZW50KGRpc3RhbmNlRm4sIHRoaXMucmFuZG9tKTtcbiAgICAgICAgdmFyIHJvdW5kID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09PSAwLjUgPyAwIDogTWF0aC5yb3VuZChuKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG5UcmVlcyA9IDUgKyBNYXRoLmZsb29yKHJvdW5kKE1hdGgucG93KFgubGVuZ3RoLCAwLjUpIC8gMjAuMCkpO1xuICAgICAgICB2YXIgbkl0ZXJzID0gTWF0aC5tYXgoNSwgTWF0aC5mbG9vcihNYXRoLnJvdW5kKGxvZzIoWC5sZW5ndGgpKSkpO1xuICAgICAgICB0aGlzLnJwRm9yZXN0ID0gdHJlZS5tYWtlRm9yZXN0KFgsIG5OZWlnaGJvcnMsIG5UcmVlcywgdGhpcy5yYW5kb20pO1xuICAgICAgICB2YXIgbGVhZkFycmF5ID0gdHJlZS5tYWtlTGVhZkFycmF5KHRoaXMucnBGb3Jlc3QpO1xuICAgICAgICB2YXIgX2IgPSBtZXRyaWNOTkRlc2NlbnQoWCwgbGVhZkFycmF5LCBuTmVpZ2hib3JzLCBuSXRlcnMpLCBpbmRpY2VzID0gX2IuaW5kaWNlcywgd2VpZ2h0cyA9IF9iLndlaWdodHM7XG4gICAgICAgIHJldHVybiB7IGtubkluZGljZXM6IGluZGljZXMsIGtubkRpc3RhbmNlczogd2VpZ2h0cyB9O1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuZnV6enlTaW1wbGljaWFsU2V0ID0gZnVuY3Rpb24gKFgsIG5OZWlnaGJvcnMsIHNldE9wTWl4UmF0aW8pIHtcbiAgICAgICAgaWYgKHNldE9wTWl4UmF0aW8gPT09IHZvaWQgMCkgeyBzZXRPcE1peFJhdGlvID0gMS4wOyB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIF9iID0gX2Eua25uSW5kaWNlcywga25uSW5kaWNlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iLCBfYyA9IF9hLmtubkRpc3RhbmNlcywga25uRGlzdGFuY2VzID0gX2MgPT09IHZvaWQgMCA/IFtdIDogX2MsIGxvY2FsQ29ubmVjdGl2aXR5ID0gX2EubG9jYWxDb25uZWN0aXZpdHk7XG4gICAgICAgIHZhciBfZCA9IHRoaXMuc21vb3RoS05ORGlzdGFuY2Uoa25uRGlzdGFuY2VzLCBuTmVpZ2hib3JzLCBsb2NhbENvbm5lY3Rpdml0eSksIHNpZ21hcyA9IF9kLnNpZ21hcywgcmhvcyA9IF9kLnJob3M7XG4gICAgICAgIHZhciBfZSA9IHRoaXMuY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMoa25uSW5kaWNlcywga25uRGlzdGFuY2VzLCBzaWdtYXMsIHJob3MpLCByb3dzID0gX2Uucm93cywgY29scyA9IF9lLmNvbHMsIHZhbHMgPSBfZS52YWxzO1xuICAgICAgICB2YXIgc2l6ZSA9IFtYLmxlbmd0aCwgWC5sZW5ndGhdO1xuICAgICAgICB2YXIgc3BhcnNlTWF0cml4ID0gbmV3IG1hdHJpeC5TcGFyc2VNYXRyaXgocm93cywgY29scywgdmFscywgc2l6ZSk7XG4gICAgICAgIHZhciB0cmFuc3Bvc2UgPSBtYXRyaXgudHJhbnNwb3NlKHNwYXJzZU1hdHJpeCk7XG4gICAgICAgIHZhciBwcm9kTWF0cml4ID0gbWF0cml4LnBhaXJ3aXNlTXVsdGlwbHkoc3BhcnNlTWF0cml4LCB0cmFuc3Bvc2UpO1xuICAgICAgICB2YXIgYSA9IG1hdHJpeC5zdWJ0cmFjdChtYXRyaXguYWRkKHNwYXJzZU1hdHJpeCwgdHJhbnNwb3NlKSwgcHJvZE1hdHJpeCk7XG4gICAgICAgIHZhciBiID0gbWF0cml4Lm11bHRpcGx5U2NhbGFyKGEsIHNldE9wTWl4UmF0aW8pO1xuICAgICAgICB2YXIgYyA9IG1hdHJpeC5tdWx0aXBseVNjYWxhcihwcm9kTWF0cml4LCAxLjAgLSBzZXRPcE1peFJhdGlvKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG1hdHJpeC5hZGQoYiwgYyk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5jYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24gPSBmdW5jdGlvbiAoc2ltcGxpY2lhbFNldCwgdGFyZ2V0LCBmYXJEaXN0LCB1bmtub3duRGlzdCkge1xuICAgICAgICBpZiAodW5rbm93bkRpc3QgPT09IHZvaWQgMCkgeyB1bmtub3duRGlzdCA9IDEuMDsgfVxuICAgICAgICB2YXIgaW50ZXJzZWN0aW9uID0gZmFzdEludGVyc2VjdGlvbihzaW1wbGljaWFsU2V0LCB0YXJnZXQsIHVua25vd25EaXN0LCBmYXJEaXN0KTtcbiAgICAgICAgaW50ZXJzZWN0aW9uID0gbWF0cml4LmVsaW1pbmF0ZVplcm9zKGludGVyc2VjdGlvbik7XG4gICAgICAgIHJldHVybiByZXNldExvY2FsQ29ubmVjdGl2aXR5KGludGVyc2VjdGlvbik7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5zbW9vdGhLTk5EaXN0YW5jZSA9IGZ1bmN0aW9uIChkaXN0YW5jZXMsIGssIGxvY2FsQ29ubmVjdGl2aXR5LCBuSXRlciwgYmFuZHdpZHRoKSB7XG4gICAgICAgIGlmIChsb2NhbENvbm5lY3Rpdml0eSA9PT0gdm9pZCAwKSB7IGxvY2FsQ29ubmVjdGl2aXR5ID0gMS4wOyB9XG4gICAgICAgIGlmIChuSXRlciA9PT0gdm9pZCAwKSB7IG5JdGVyID0gNjQ7IH1cbiAgICAgICAgaWYgKGJhbmR3aWR0aCA9PT0gdm9pZCAwKSB7IGJhbmR3aWR0aCA9IDEuMDsgfVxuICAgICAgICB2YXIgdGFyZ2V0ID0gKE1hdGgubG9nKGspIC8gTWF0aC5sb2coMikpICogYmFuZHdpZHRoO1xuICAgICAgICB2YXIgcmhvID0gdXRpbHMuemVyb3MoZGlzdGFuY2VzLmxlbmd0aCk7XG4gICAgICAgIHZhciByZXN1bHQgPSB1dGlscy56ZXJvcyhkaXN0YW5jZXMubGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXN0YW5jZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBsbyA9IDAuMDtcbiAgICAgICAgICAgIHZhciBoaSA9IEluZmluaXR5O1xuICAgICAgICAgICAgdmFyIG1pZCA9IDEuMDtcbiAgICAgICAgICAgIHZhciBpdGhEaXN0YW5jZXMgPSBkaXN0YW5jZXNbaV07XG4gICAgICAgICAgICB2YXIgbm9uWmVyb0Rpc3RzID0gaXRoRGlzdGFuY2VzLmZpbHRlcihmdW5jdGlvbiAoZCkgeyByZXR1cm4gZCA+IDAuMDsgfSk7XG4gICAgICAgICAgICBpZiAobm9uWmVyb0Rpc3RzLmxlbmd0aCA+PSBsb2NhbENvbm5lY3Rpdml0eSkge1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IE1hdGguZmxvb3IobG9jYWxDb25uZWN0aXZpdHkpO1xuICAgICAgICAgICAgICAgIHZhciBpbnRlcnBvbGF0aW9uID0gbG9jYWxDb25uZWN0aXZpdHkgLSBpbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJob1tpXSA9IG5vblplcm9EaXN0c1tpbmRleCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJwb2xhdGlvbiA+IFNNT09USF9LX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmhvW2ldICs9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwb2xhdGlvbiAqIChub25aZXJvRGlzdHNbaW5kZXhdIC0gbm9uWmVyb0Rpc3RzW2luZGV4IC0gMV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByaG9baV0gPSBpbnRlcnBvbGF0aW9uICogbm9uWmVyb0Rpc3RzWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG5vblplcm9EaXN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmhvW2ldID0gdXRpbHMubWF4KG5vblplcm9EaXN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5JdGVyOyBuKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcHN1bSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IGRpc3RhbmNlc1tpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlc1tpXVtqXSAtIHJob1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwc3VtICs9IE1hdGguZXhwKC0oZCAvIG1pZCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHN1bSArPSAxLjA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHBzdW0gLSB0YXJnZXQpIDwgU01PT1RIX0tfVE9MRVJBTkNFKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHN1bSA+IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICBoaSA9IG1pZDtcbiAgICAgICAgICAgICAgICAgICAgbWlkID0gKGxvICsgaGkpIC8gMi4wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG8gPSBtaWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoaSA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZCAqPSAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkID0gKGxvICsgaGkpIC8gMi4wO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W2ldID0gbWlkO1xuICAgICAgICAgICAgaWYgKHJob1tpXSA+IDAuMCkge1xuICAgICAgICAgICAgICAgIHZhciBtZWFuSXRoRGlzdGFuY2VzID0gdXRpbHMubWVhbihpdGhEaXN0YW5jZXMpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHRbaV0gPCBNSU5fS19ESVNUX1NDQUxFICogbWVhbkl0aERpc3RhbmNlcykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBNSU5fS19ESVNUX1NDQUxFICogbWVhbkl0aERpc3RhbmNlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgbWVhbkRpc3RhbmNlcyA9IHV0aWxzLm1lYW4oZGlzdGFuY2VzLm1hcCh1dGlscy5tZWFuKSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXSA8IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuRGlzdGFuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuRGlzdGFuY2VzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzaWdtYXM6IHJlc3VsdCwgcmhvczogcmhvIH07XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3RocyA9IGZ1bmN0aW9uIChrbm5JbmRpY2VzLCBrbm5EaXN0YW5jZXMsIHNpZ21hcywgcmhvcykge1xuICAgICAgICB2YXIgblNhbXBsZXMgPSBrbm5JbmRpY2VzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5OZWlnaGJvcnMgPSBrbm5JbmRpY2VzWzBdLmxlbmd0aDtcbiAgICAgICAgdmFyIHJvd3MgPSB1dGlscy56ZXJvcyhuU2FtcGxlcyAqIG5OZWlnaGJvcnMpO1xuICAgICAgICB2YXIgY29scyA9IHV0aWxzLnplcm9zKG5TYW1wbGVzICogbk5laWdoYm9ycyk7XG4gICAgICAgIHZhciB2YWxzID0gdXRpbHMuemVyb3MoblNhbXBsZXMgKiBuTmVpZ2hib3JzKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuU2FtcGxlczsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5OZWlnaGJvcnM7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSAwO1xuICAgICAgICAgICAgICAgIGlmIChrbm5JbmRpY2VzW2ldW2pdID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGtubkluZGljZXNbaV1bal0gPT09IGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gMC4wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChrbm5EaXN0YW5jZXNbaV1bal0gLSByaG9zW2ldIDw9IDAuMCkge1xuICAgICAgICAgICAgICAgICAgICB2YWwgPSAxLjA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YWwgPSBNYXRoLmV4cCgtKChrbm5EaXN0YW5jZXNbaV1bal0gLSByaG9zW2ldKSAvIHNpZ21hc1tpXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByb3dzW2kgKiBuTmVpZ2hib3JzICsgal0gPSBpO1xuICAgICAgICAgICAgICAgIGNvbHNbaSAqIG5OZWlnaGJvcnMgKyBqXSA9IGtubkluZGljZXNbaV1bal07XG4gICAgICAgICAgICAgICAgdmFsc1tpICogbk5laWdoYm9ycyArIGpdID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHJvd3M6IHJvd3MsIGNvbHM6IGNvbHMsIHZhbHM6IHZhbHMgfTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgbkVwb2NocyA9IHRoaXMuZ2V0TkVwb2NocygpO1xuICAgICAgICB2YXIgbkNvbXBvbmVudHMgPSB0aGlzLm5Db21wb25lbnRzO1xuICAgICAgICB2YXIgZ3JhcGhWYWx1ZXMgPSB0aGlzLmdyYXBoLmdldFZhbHVlcygpO1xuICAgICAgICB2YXIgZ3JhcGhNYXggPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBoVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBncmFwaFZhbHVlc1tpXTtcbiAgICAgICAgICAgIGlmIChncmFwaE1heCA8IGdyYXBoVmFsdWVzW2ldKSB7XG4gICAgICAgICAgICAgICAgZ3JhcGhNYXggPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IGdyYXBoTWF4IC8gbkVwb2Nocykge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSB1dGlscy56ZXJvcyhncmFwaC5uUm93cykubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB1dGlscy56ZXJvcyhuQ29tcG9uZW50cykubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXRpbHMudGF1UmFuZChfdGhpcy5yYW5kb20pICogMjAgKyAtMTA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB3ZWlnaHRzID0gW107XG4gICAgICAgIHZhciBoZWFkID0gW107XG4gICAgICAgIHZhciB0YWlsID0gW107XG4gICAgICAgIHZhciByb3dDb2xWYWx1ZXMgPSBncmFwaC5nZXRBbGwoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dDb2xWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBlbnRyeSA9IHJvd0NvbFZhbHVlc1tpXTtcbiAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHdlaWdodHMucHVzaChlbnRyeS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGFpbC5wdXNoKGVudHJ5LnJvdyk7XG4gICAgICAgICAgICAgICAgaGVhZC5wdXNoKGVudHJ5LmNvbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVwb2Noc1BlclNhbXBsZSA9IHRoaXMubWFrZUVwb2Noc1BlclNhbXBsZSh3ZWlnaHRzLCBuRXBvY2hzKTtcbiAgICAgICAgcmV0dXJuIHsgaGVhZDogaGVhZCwgdGFpbDogdGFpbCwgZXBvY2hzUGVyU2FtcGxlOiBlcG9jaHNQZXJTYW1wbGUgfTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm1ha2VFcG9jaHNQZXJTYW1wbGUgPSBmdW5jdGlvbiAod2VpZ2h0cywgbkVwb2Nocykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdXRpbHMuZmlsbGVkKHdlaWdodHMubGVuZ3RoLCAtMS4wKTtcbiAgICAgICAgdmFyIG1heCA9IHV0aWxzLm1heCh3ZWlnaHRzKTtcbiAgICAgICAgdmFyIG5TYW1wbGVzID0gd2VpZ2h0cy5tYXAoZnVuY3Rpb24gKHcpIHsgcmV0dXJuICh3IC8gbWF4KSAqIG5FcG9jaHM7IH0pO1xuICAgICAgICBuU2FtcGxlcy5mb3JFYWNoKGZ1bmN0aW9uIChuLCBpKSB7XG4gICAgICAgICAgICBpZiAobiA+IDApXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gbkVwb2NocyAvIG5TYW1wbGVzW2ldO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW1pemF0aW9uU3RhdGUsIHN0YXRlKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCByZXB1bHNpb25TdHJlbmd0aCA9IF9hLnJlcHVsc2lvblN0cmVuZ3RoLCBsZWFybmluZ1JhdGUgPSBfYS5sZWFybmluZ1JhdGUsIG5lZ2F0aXZlU2FtcGxlUmF0ZSA9IF9hLm5lZ2F0aXZlU2FtcGxlUmF0ZTtcbiAgICAgICAgdmFyIF9iID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZSwgZXBvY2hzUGVyU2FtcGxlID0gX2IuZXBvY2hzUGVyU2FtcGxlLCBoZWFkRW1iZWRkaW5nID0gX2IuaGVhZEVtYmVkZGluZywgdGFpbEVtYmVkZGluZyA9IF9iLnRhaWxFbWJlZGRpbmc7XG4gICAgICAgIHZhciBkaW0gPSBoZWFkRW1iZWRkaW5nWzBdLmxlbmd0aDtcbiAgICAgICAgdmFyIG1vdmVPdGhlciA9IGhlYWRFbWJlZGRpbmcubGVuZ3RoID09PSB0YWlsRW1iZWRkaW5nLmxlbmd0aDtcbiAgICAgICAgdmFyIGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlID0gZXBvY2hzUGVyU2FtcGxlLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSAvIG5lZ2F0aXZlU2FtcGxlUmF0ZTsgfSk7XG4gICAgICAgIHZhciBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlID0gX19zcHJlYWQoZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUpO1xuICAgICAgICB2YXIgZXBvY2hPZk5leHRTYW1wbGUgPSBfX3NwcmVhZChlcG9jaHNQZXJTYW1wbGUpO1xuICAgICAgICB0aGlzLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyh7XG4gICAgICAgICAgICBlcG9jaE9mTmV4dFNhbXBsZTogZXBvY2hPZk5leHRTYW1wbGUsXG4gICAgICAgICAgICBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlOiBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlLFxuICAgICAgICAgICAgZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGU6IGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlLFxuICAgICAgICAgICAgbW92ZU90aGVyOiBtb3ZlT3RoZXIsXG4gICAgICAgICAgICBpbml0aWFsQWxwaGE6IGxlYXJuaW5nUmF0ZSxcbiAgICAgICAgICAgIGFscGhhOiBsZWFybmluZ1JhdGUsXG4gICAgICAgICAgICBnYW1tYTogcmVwdWxzaW9uU3RyZW5ndGgsXG4gICAgICAgICAgICBkaW06IGRpbSxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5pbml0aWFsaXplT3B0aW1pemF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaGVhZEVtYmVkZGluZyA9IHRoaXMuZW1iZWRkaW5nO1xuICAgICAgICB2YXIgdGFpbEVtYmVkZGluZyA9IHRoaXMuZW1iZWRkaW5nO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLCBoZWFkID0gX2EuaGVhZCwgdGFpbCA9IF9hLnRhaWwsIGVwb2Noc1BlclNhbXBsZSA9IF9hLmVwb2Noc1BlclNhbXBsZTtcbiAgICAgICAgdmFyIG5FcG9jaHMgPSB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICAgICAgdmFyIG5WZXJ0aWNlcyA9IHRoaXMuZ3JhcGgubkNvbHM7XG4gICAgICAgIHZhciBfYiA9IGZpbmRBQlBhcmFtcyh0aGlzLnNwcmVhZCwgdGhpcy5taW5EaXN0KSwgYSA9IF9iLmEsIGIgPSBfYi5iO1xuICAgICAgICB0aGlzLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyh7XG4gICAgICAgICAgICBoZWFkRW1iZWRkaW5nOiBoZWFkRW1iZWRkaW5nLFxuICAgICAgICAgICAgdGFpbEVtYmVkZGluZzogdGFpbEVtYmVkZGluZyxcbiAgICAgICAgICAgIGhlYWQ6IGhlYWQsXG4gICAgICAgICAgICB0YWlsOiB0YWlsLFxuICAgICAgICAgICAgZXBvY2hzUGVyU2FtcGxlOiBlcG9jaHNQZXJTYW1wbGUsXG4gICAgICAgICAgICBhOiBhLFxuICAgICAgICAgICAgYjogYixcbiAgICAgICAgICAgIG5FcG9jaHM6IG5FcG9jaHMsXG4gICAgICAgICAgICBuVmVydGljZXM6IG5WZXJ0aWNlcyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5vcHRpbWl6ZUxheW91dFN0ZXAgPSBmdW5jdGlvbiAobikge1xuICAgICAgICB2YXIgb3B0aW1pemF0aW9uU3RhdGUgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlO1xuICAgICAgICB2YXIgaGVhZCA9IG9wdGltaXphdGlvblN0YXRlLmhlYWQsIHRhaWwgPSBvcHRpbWl6YXRpb25TdGF0ZS50YWlsLCBoZWFkRW1iZWRkaW5nID0gb3B0aW1pemF0aW9uU3RhdGUuaGVhZEVtYmVkZGluZywgdGFpbEVtYmVkZGluZyA9IG9wdGltaXphdGlvblN0YXRlLnRhaWxFbWJlZGRpbmcsIGVwb2Noc1BlclNhbXBsZSA9IG9wdGltaXphdGlvblN0YXRlLmVwb2Noc1BlclNhbXBsZSwgZXBvY2hPZk5leHRTYW1wbGUgPSBvcHRpbWl6YXRpb25TdGF0ZS5lcG9jaE9mTmV4dFNhbXBsZSwgZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSA9IG9wdGltaXphdGlvblN0YXRlLmVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUsIGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlID0gb3B0aW1pemF0aW9uU3RhdGUuZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUsIG1vdmVPdGhlciA9IG9wdGltaXphdGlvblN0YXRlLm1vdmVPdGhlciwgaW5pdGlhbEFscGhhID0gb3B0aW1pemF0aW9uU3RhdGUuaW5pdGlhbEFscGhhLCBhbHBoYSA9IG9wdGltaXphdGlvblN0YXRlLmFscGhhLCBnYW1tYSA9IG9wdGltaXphdGlvblN0YXRlLmdhbW1hLCBhID0gb3B0aW1pemF0aW9uU3RhdGUuYSwgYiA9IG9wdGltaXphdGlvblN0YXRlLmIsIGRpbSA9IG9wdGltaXphdGlvblN0YXRlLmRpbSwgbkVwb2NocyA9IG9wdGltaXphdGlvblN0YXRlLm5FcG9jaHMsIG5WZXJ0aWNlcyA9IG9wdGltaXphdGlvblN0YXRlLm5WZXJ0aWNlcztcbiAgICAgICAgdmFyIGNsaXBWYWx1ZSA9IDQuMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlcG9jaHNQZXJTYW1wbGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlcG9jaE9mTmV4dFNhbXBsZVtpXSA+IG4pIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBqID0gaGVhZFtpXTtcbiAgICAgICAgICAgIHZhciBrID0gdGFpbFtpXTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50ID0gaGVhZEVtYmVkZGluZ1tqXTtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IHRhaWxFbWJlZGRpbmdba107XG4gICAgICAgICAgICB2YXIgZGlzdFNxdWFyZWQgPSByRGlzdChjdXJyZW50LCBvdGhlcik7XG4gICAgICAgICAgICB2YXIgZ3JhZENvZWZmID0gMDtcbiAgICAgICAgICAgIGlmIChkaXN0U3F1YXJlZCA+IDApIHtcbiAgICAgICAgICAgICAgICBncmFkQ29lZmYgPSAtMi4wICogYSAqIGIgKiBNYXRoLnBvdyhkaXN0U3F1YXJlZCwgYiAtIDEuMCk7XG4gICAgICAgICAgICAgICAgZ3JhZENvZWZmIC89IGEgKiBNYXRoLnBvdyhkaXN0U3F1YXJlZCwgYikgKyAxLjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGdyYWREID0gY2xpcChncmFkQ29lZmYgKiAoY3VycmVudFtkXSAtIG90aGVyW2RdKSwgY2xpcFZhbHVlKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50W2RdICs9IGdyYWREICogYWxwaGE7XG4gICAgICAgICAgICAgICAgaWYgKG1vdmVPdGhlcikge1xuICAgICAgICAgICAgICAgICAgICBvdGhlcltkXSArPSAtZ3JhZEQgKiBhbHBoYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlcG9jaE9mTmV4dFNhbXBsZVtpXSArPSBlcG9jaHNQZXJTYW1wbGVbaV07XG4gICAgICAgICAgICB2YXIgbk5lZ1NhbXBsZXMgPSBNYXRoLmZsb29yKChuIC0gZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZVtpXSkgLyBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZVtpXSk7XG4gICAgICAgICAgICBmb3IgKHZhciBwID0gMDsgcCA8IG5OZWdTYW1wbGVzOyBwKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga18xID0gdXRpbHMudGF1UmFuZEludChuVmVydGljZXMsIHRoaXMucmFuZG9tKTtcbiAgICAgICAgICAgICAgICB2YXIgb3RoZXJfMSA9IHRhaWxFbWJlZGRpbmdba18xXTtcbiAgICAgICAgICAgICAgICB2YXIgZGlzdFNxdWFyZWRfMSA9IHJEaXN0KGN1cnJlbnQsIG90aGVyXzEpO1xuICAgICAgICAgICAgICAgIHZhciBncmFkQ29lZmZfMSA9IDAuMDtcbiAgICAgICAgICAgICAgICBpZiAoZGlzdFNxdWFyZWRfMSA+IDAuMCkge1xuICAgICAgICAgICAgICAgICAgICBncmFkQ29lZmZfMSA9IDIuMCAqIGdhbW1hICogYjtcbiAgICAgICAgICAgICAgICAgICAgZ3JhZENvZWZmXzEgLz1cbiAgICAgICAgICAgICAgICAgICAgICAgICgwLjAwMSArIGRpc3RTcXVhcmVkXzEpICogKGEgKiBNYXRoLnBvdyhkaXN0U3F1YXJlZF8xLCBiKSArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChqID09PSBrXzEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGdyYWREID0gNC4wO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JhZENvZWZmXzEgPiAwLjApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyYWREID0gY2xpcChncmFkQ29lZmZfMSAqIChjdXJyZW50W2RdIC0gb3RoZXJfMVtkXSksIGNsaXBWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFtkXSArPSBncmFkRCAqIGFscGhhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGVbaV0gKz0gbk5lZ1NhbXBsZXMgKiBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZVtpXTtcbiAgICAgICAgfVxuICAgICAgICBvcHRpbWl6YXRpb25TdGF0ZS5hbHBoYSA9IGluaXRpYWxBbHBoYSAqICgxLjAgLSBuIC8gbkVwb2Nocyk7XG4gICAgICAgIG9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCArPSAxO1xuICAgICAgICByZXR1cm4gaGVhZEVtYmVkZGluZztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm9wdGltaXplTGF5b3V0QXN5bmMgPSBmdW5jdGlvbiAoZXBvY2hDYWxsYmFjaykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoZXBvY2hDYWxsYmFjayA9PT0gdm9pZCAwKSB7IGVwb2NoQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9OyB9XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgc3RlcCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIG5FcG9jaHMsIGN1cnJlbnRFcG9jaCwgZXBvY2hDb21wbGV0ZWQsIHNob3VsZFN0b3AsIGlzRmluaXNoZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2EgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLCBuRXBvY2hzID0gX2EubkVwb2NocywgY3VycmVudEVwb2NoID0gX2EuY3VycmVudEVwb2NoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXBvY2hDb21wbGV0ZWQgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFN0b3AgPSBlcG9jaENhbGxiYWNrKGVwb2NoQ29tcGxldGVkKSA9PT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkID0gZXBvY2hDb21wbGV0ZWQgPT09IG5FcG9jaHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFN0b3AgJiYgIWlzRmluaXNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0ZXAoKTsgfSwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHJlc29sdmUoaXNGaW5pc2hlZCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTsgfTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RlcCgpOyB9LCAwKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5vcHRpbWl6ZUxheW91dCA9IGZ1bmN0aW9uIChlcG9jaENhbGxiYWNrKSB7XG4gICAgICAgIGlmIChlcG9jaENhbGxiYWNrID09PSB2b2lkIDApIHsgZXBvY2hDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07IH1cbiAgICAgICAgdmFyIGlzRmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIGVtYmVkZGluZyA9IFtdO1xuICAgICAgICB3aGlsZSAoIWlzRmluaXNoZWQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUsIG5FcG9jaHMgPSBfYS5uRXBvY2hzLCBjdXJyZW50RXBvY2ggPSBfYS5jdXJyZW50RXBvY2g7XG4gICAgICAgICAgICBlbWJlZGRpbmcgPSB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICAgICAgdmFyIGVwb2NoQ29tcGxldGVkID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2g7XG4gICAgICAgICAgICB2YXIgc2hvdWxkU3RvcCA9IGVwb2NoQ2FsbGJhY2soZXBvY2hDb21wbGV0ZWQpID09PSBmYWxzZTtcbiAgICAgICAgICAgIGlzRmluaXNoZWQgPSBlcG9jaENvbXBsZXRlZCA9PT0gbkVwb2NocyB8fCBzaG91bGRTdG9wO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbWJlZGRpbmc7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5nZXRORXBvY2hzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgICAgICBpZiAodGhpcy5uRXBvY2hzID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubkVwb2NocztcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGVuZ3RoID0gZ3JhcGgublJvd3M7XG4gICAgICAgIGlmIChsZW5ndGggPD0gMjUwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDUwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChsZW5ndGggPD0gNTAwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDQwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChsZW5ndGggPD0gNzUwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDMwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAyMDA7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBVTUFQO1xufSgpKTtcbmV4cG9ydHMuVU1BUCA9IFVNQVA7XG5mdW5jdGlvbiBldWNsaWRlYW4oeCwgeSkge1xuICAgIHZhciByZXN1bHQgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgKz0gTWF0aC5wb3coKHhbaV0gLSB5W2ldKSwgMik7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnNxcnQocmVzdWx0KTtcbn1cbmV4cG9ydHMuZXVjbGlkZWFuID0gZXVjbGlkZWFuO1xuZnVuY3Rpb24gY29zaW5lKHgsIHkpIHtcbiAgICB2YXIgcmVzdWx0ID0gMC4wO1xuICAgIHZhciBub3JtWCA9IDAuMDtcbiAgICB2YXIgbm9ybVkgPSAwLjA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdCArPSB4W2ldICogeVtpXTtcbiAgICAgICAgbm9ybVggKz0gTWF0aC5wb3coeFtpXSwgMik7XG4gICAgICAgIG5vcm1ZICs9IE1hdGgucG93KHlbaV0sIDIpO1xuICAgIH1cbiAgICBpZiAobm9ybVggPT09IDAgJiYgbm9ybVkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGVsc2UgaWYgKG5vcm1YID09PSAwIHx8IG5vcm1ZID09PSAwKSB7XG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMS4wIC0gcmVzdWx0IC8gTWF0aC5zcXJ0KG5vcm1YICogbm9ybVkpO1xuICAgIH1cbn1cbmV4cG9ydHMuY29zaW5lID0gY29zaW5lO1xudmFyIE9wdGltaXphdGlvblN0YXRlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBPcHRpbWl6YXRpb25TdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50RXBvY2ggPSAwO1xuICAgICAgICB0aGlzLmhlYWRFbWJlZGRpbmcgPSBbXTtcbiAgICAgICAgdGhpcy50YWlsRW1iZWRkaW5nID0gW107XG4gICAgICAgIHRoaXMuaGVhZCA9IFtdO1xuICAgICAgICB0aGlzLnRhaWwgPSBbXTtcbiAgICAgICAgdGhpcy5lcG9jaHNQZXJTYW1wbGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcG9jaE9mTmV4dFNhbXBsZSA9IFtdO1xuICAgICAgICB0aGlzLmVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSA9IFtdO1xuICAgICAgICB0aGlzLm1vdmVPdGhlciA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5pdGlhbEFscGhhID0gMS4wO1xuICAgICAgICB0aGlzLmFscGhhID0gMS4wO1xuICAgICAgICB0aGlzLmdhbW1hID0gMS4wO1xuICAgICAgICB0aGlzLmEgPSAxLjU3Njk0MzQ2MDMxMTMwNzc7XG4gICAgICAgIHRoaXMuYiA9IDAuODk1MDYwODc3OTEwOTczMztcbiAgICAgICAgdGhpcy5kaW0gPSAyO1xuICAgICAgICB0aGlzLm5FcG9jaHMgPSA1MDA7XG4gICAgICAgIHRoaXMublZlcnRpY2VzID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIE9wdGltaXphdGlvblN0YXRlO1xufSgpKTtcbmZ1bmN0aW9uIGNsaXAoeCwgY2xpcFZhbHVlKSB7XG4gICAgaWYgKHggPiBjbGlwVmFsdWUpXG4gICAgICAgIHJldHVybiBjbGlwVmFsdWU7XG4gICAgZWxzZSBpZiAoeCA8IC1jbGlwVmFsdWUpXG4gICAgICAgIHJldHVybiAtY2xpcFZhbHVlO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHg7XG59XG5mdW5jdGlvbiByRGlzdCh4LCB5KSB7XG4gICAgdmFyIHJlc3VsdCA9IDAuMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ICs9IE1hdGgucG93KHhbaV0gLSB5W2ldLCAyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGZpbmRBQlBhcmFtcyhzcHJlYWQsIG1pbkRpc3QpIHtcbiAgICB2YXIgY3VydmUgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwgYSA9IF9iWzBdLCBiID0gX2JbMV07XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgcmV0dXJuIDEuMCAvICgxLjAgKyBhICogTWF0aC5wb3coeCwgKDIgKiBiKSkpO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgdmFyIHh2ID0gdXRpbHNcbiAgICAgICAgLmxpbmVhcigwLCBzcHJlYWQgKiAzLCAzMDApXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gKHZhbCA8IG1pbkRpc3QgPyAxLjAgOiB2YWwpOyB9KTtcbiAgICB2YXIgeXYgPSB1dGlscy56ZXJvcyh4di5sZW5ndGgpLm1hcChmdW5jdGlvbiAodmFsLCBpbmRleCkge1xuICAgICAgICB2YXIgZ3RlID0geHZbaW5kZXhdID49IG1pbkRpc3Q7XG4gICAgICAgIHJldHVybiBndGUgPyBNYXRoLmV4cCgtKHh2W2luZGV4XSAtIG1pbkRpc3QpIC8gc3ByZWFkKSA6IHZhbDtcbiAgICB9KTtcbiAgICB2YXIgaW5pdGlhbFZhbHVlcyA9IFswLjUsIDAuNV07XG4gICAgdmFyIGRhdGEgPSB7IHg6IHh2LCB5OiB5diB9O1xuICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBkYW1waW5nOiAxLjUsXG4gICAgICAgIGluaXRpYWxWYWx1ZXM6IGluaXRpYWxWYWx1ZXMsXG4gICAgICAgIGdyYWRpZW50RGlmZmVyZW5jZTogMTBlLTIsXG4gICAgICAgIG1heEl0ZXJhdGlvbnM6IDEwMCxcbiAgICAgICAgZXJyb3JUb2xlcmFuY2U6IDEwZS0zLFxuICAgIH07XG4gICAgdmFyIHBhcmFtZXRlclZhbHVlcyA9IG1sX2xldmVuYmVyZ19tYXJxdWFyZHRfMS5kZWZhdWx0KGRhdGEsIGN1cnZlLCBvcHRpb25zKS5wYXJhbWV0ZXJWYWx1ZXM7XG4gICAgdmFyIF9hID0gX19yZWFkKHBhcmFtZXRlclZhbHVlcywgMiksIGEgPSBfYVswXSwgYiA9IF9hWzFdO1xuICAgIHJldHVybiB7IGE6IGEsIGI6IGIgfTtcbn1cbmV4cG9ydHMuZmluZEFCUGFyYW1zID0gZmluZEFCUGFyYW1zO1xuZnVuY3Rpb24gZmFzdEludGVyc2VjdGlvbihncmFwaCwgdGFyZ2V0LCB1bmtub3duRGlzdCwgZmFyRGlzdCkge1xuICAgIGlmICh1bmtub3duRGlzdCA9PT0gdm9pZCAwKSB7IHVua25vd25EaXN0ID0gMS4wOyB9XG4gICAgaWYgKGZhckRpc3QgPT09IHZvaWQgMCkgeyBmYXJEaXN0ID0gNS4wOyB9XG4gICAgcmV0dXJuIGdyYXBoLm1hcChmdW5jdGlvbiAodmFsdWUsIHJvdywgY29sKSB7XG4gICAgICAgIGlmICh0YXJnZXRbcm93XSA9PT0gLTEgfHwgdGFyZ2V0W2NvbF0gPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKiBNYXRoLmV4cCgtdW5rbm93bkRpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRhcmdldFtyb3ddICE9PSB0YXJnZXRbY29sXSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICogTWF0aC5leHAoLWZhckRpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5leHBvcnRzLmZhc3RJbnRlcnNlY3Rpb24gPSBmYXN0SW50ZXJzZWN0aW9uO1xuZnVuY3Rpb24gcmVzZXRMb2NhbENvbm5lY3Rpdml0eShzaW1wbGljaWFsU2V0KSB7XG4gICAgc2ltcGxpY2lhbFNldCA9IG1hdHJpeC5ub3JtYWxpemUoc2ltcGxpY2lhbFNldCwgXCJtYXhcIik7XG4gICAgdmFyIHRyYW5zcG9zZSA9IG1hdHJpeC50cmFuc3Bvc2Uoc2ltcGxpY2lhbFNldCk7XG4gICAgdmFyIHByb2RNYXRyaXggPSBtYXRyaXgucGFpcndpc2VNdWx0aXBseSh0cmFuc3Bvc2UsIHNpbXBsaWNpYWxTZXQpO1xuICAgIHNpbXBsaWNpYWxTZXQgPSBtYXRyaXguYWRkKHNpbXBsaWNpYWxTZXQsIG1hdHJpeC5zdWJ0cmFjdCh0cmFuc3Bvc2UsIHByb2RNYXRyaXgpKTtcbiAgICByZXR1cm4gbWF0cml4LmVsaW1pbmF0ZVplcm9zKHNpbXBsaWNpYWxTZXQpO1xufVxuZXhwb3J0cy5yZXNldExvY2FsQ29ubmVjdGl2aXR5ID0gcmVzZXRMb2NhbENvbm5lY3Rpdml0eTtcbmZ1bmN0aW9uIGluaXRUcmFuc2Zvcm0oaW5kaWNlcywgd2VpZ2h0cywgZW1iZWRkaW5nKSB7XG4gICAgdmFyIHJlc3VsdCA9IHV0aWxzXG4gICAgICAgIC56ZXJvcyhpbmRpY2VzLmxlbmd0aClcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoeikgeyByZXR1cm4gdXRpbHMuemVyb3MoZW1iZWRkaW5nWzBdLmxlbmd0aCk7IH0pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGluZGljZXNbMF0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZW1iZWRkaW5nWzBdLmxlbmd0aDsgZCsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGEgPSBpbmRpY2VzW2ldW2pdO1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpXVtkXSArPSB3ZWlnaHRzW2ldW2pdICogZW1iZWRkaW5nW2FdW2RdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLmluaXRUcmFuc2Zvcm0gPSBpbml0VHJhbnNmb3JtO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbiAobykge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gdGF1UmFuZEludChuLCByYW5kb20pIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihyYW5kb20oKSAqIG4pO1xufVxuZXhwb3J0cy50YXVSYW5kSW50ID0gdGF1UmFuZEludDtcbmZ1bmN0aW9uIHRhdVJhbmQocmFuZG9tKSB7XG4gICAgcmV0dXJuIHJhbmRvbSgpO1xufVxuZXhwb3J0cy50YXVSYW5kID0gdGF1UmFuZDtcbmZ1bmN0aW9uIG5vcm0odmVjKSB7XG4gICAgdmFyIGVfMSwgX2E7XG4gICAgdmFyIHJlc3VsdCA9IDA7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgdmVjXzEgPSBfX3ZhbHVlcyh2ZWMpLCB2ZWNfMV8xID0gdmVjXzEubmV4dCgpOyAhdmVjXzFfMS5kb25lOyB2ZWNfMV8xID0gdmVjXzEubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgaXRlbSA9IHZlY18xXzEudmFsdWU7XG4gICAgICAgICAgICByZXN1bHQgKz0gTWF0aC5wb3coaXRlbSwgMik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh2ZWNfMV8xICYmICF2ZWNfMV8xLmRvbmUgJiYgKF9hID0gdmVjXzEucmV0dXJuKSkgX2EuY2FsbCh2ZWNfMSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gTWF0aC5zcXJ0KHJlc3VsdCk7XG59XG5leHBvcnRzLm5vcm0gPSBub3JtO1xuZnVuY3Rpb24gZW1wdHkobikge1xuICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBvdXRwdXQucHVzaCh1bmRlZmluZWQpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuZXhwb3J0cy5lbXB0eSA9IGVtcHR5O1xuZnVuY3Rpb24gcmFuZ2Uobikge1xuICAgIHJldHVybiBlbXB0eShuKS5tYXAoZnVuY3Rpb24gKF8sIGkpIHsgcmV0dXJuIGk7IH0pO1xufVxuZXhwb3J0cy5yYW5nZSA9IHJhbmdlO1xuZnVuY3Rpb24gZmlsbGVkKG4sIHYpIHtcbiAgICByZXR1cm4gZW1wdHkobikubWFwKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHY7IH0pO1xufVxuZXhwb3J0cy5maWxsZWQgPSBmaWxsZWQ7XG5mdW5jdGlvbiB6ZXJvcyhuKSB7XG4gICAgcmV0dXJuIGZpbGxlZChuLCAwKTtcbn1cbmV4cG9ydHMuemVyb3MgPSB6ZXJvcztcbmZ1bmN0aW9uIG9uZXMobikge1xuICAgIHJldHVybiBmaWxsZWQobiwgMSk7XG59XG5leHBvcnRzLm9uZXMgPSBvbmVzO1xuZnVuY3Rpb24gbGluZWFyKGEsIGIsIGxlbikge1xuICAgIHJldHVybiBlbXB0eShsZW4pLm1hcChmdW5jdGlvbiAoXywgaSkge1xuICAgICAgICByZXR1cm4gYSArIGkgKiAoKGIgLSBhKSAvIChsZW4gLSAxKSk7XG4gICAgfSk7XG59XG5leHBvcnRzLmxpbmVhciA9IGxpbmVhcjtcbmZ1bmN0aW9uIHN1bShpbnB1dCkge1xuICAgIHJldHVybiBpbnB1dC5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgdmFsKSB7IHJldHVybiBzdW0gKyB2YWw7IH0pO1xufVxuZXhwb3J0cy5zdW0gPSBzdW07XG5mdW5jdGlvbiBtZWFuKGlucHV0KSB7XG4gICAgcmV0dXJuIHN1bShpbnB1dCkgLyBpbnB1dC5sZW5ndGg7XG59XG5leHBvcnRzLm1lYW4gPSBtZWFuO1xuZnVuY3Rpb24gbWF4KGlucHV0KSB7XG4gICAgdmFyIG1heCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBtYXggPSBpbnB1dFtpXSA+IG1heCA/IGlucHV0W2ldIDogbWF4O1xuICAgIH1cbiAgICByZXR1cm4gbWF4O1xufVxuZXhwb3J0cy5tYXggPSBtYXg7XG5mdW5jdGlvbiBtYXgyZChpbnB1dCkge1xuICAgIHZhciBtYXggPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbnB1dFtpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgbWF4ID0gaW5wdXRbaV1bal0gPiBtYXggPyBpbnB1dFtpXVtqXSA6IG1heDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF4O1xufVxuZXhwb3J0cy5tYXgyZCA9IG1heDJkO1xuZnVuY3Rpb24gcmVqZWN0aW9uU2FtcGxlKG5TYW1wbGVzLCBwb29sU2l6ZSwgcmFuZG9tKSB7XG4gICAgdmFyIHJlc3VsdCA9IHplcm9zKG5TYW1wbGVzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5TYW1wbGVzOyBpKyspIHtcbiAgICAgICAgdmFyIHJlamVjdFNhbXBsZSA9IHRydWU7XG4gICAgICAgIHdoaWxlIChyZWplY3RTYW1wbGUpIHtcbiAgICAgICAgICAgIHZhciBqID0gdGF1UmFuZEludChwb29sU2l6ZSwgcmFuZG9tKTtcbiAgICAgICAgICAgIHZhciBicm9rZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaTsgaysrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPT09IHJlc3VsdFtrXSkge1xuICAgICAgICAgICAgICAgICAgICBicm9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWJyb2tlbikge1xuICAgICAgICAgICAgICAgIHJlamVjdFNhbXBsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W2ldID0gajtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5yZWplY3Rpb25TYW1wbGUgPSByZWplY3Rpb25TYW1wbGU7XG5mdW5jdGlvbiByZXNoYXBlMmQoeCwgYSwgYikge1xuICAgIHZhciByb3dzID0gW107XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGlmICh4Lmxlbmd0aCAhPT0gYSAqIGIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBkaW1lbnNpb25zIG11c3QgbWF0Y2ggaW5wdXQgbGVuZ3RoLicpO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGE7IGkrKykge1xuICAgICAgICB2YXIgY29sID0gW107XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYjsgaisrKSB7XG4gICAgICAgICAgICBjb2wucHVzaCh4W2luZGV4XSk7XG4gICAgICAgICAgICBpbmRleCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIHJvd3MucHVzaChjb2wpO1xuICAgICAgICBjb3VudCArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gcm93cztcbn1cbmV4cG9ydHMucmVzaGFwZTJkID0gcmVzaGFwZTJkO1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4vLyB0aGUgc3RhcnR1cCBmdW5jdGlvblxuX193ZWJwYWNrX3JlcXVpcmVfXy54ID0gKCkgPT4ge1xuXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcblx0Ly8gVGhpcyBlbnRyeSBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBsb2FkZWQgY2h1bmtzIGFuZCBleGVjdXRpb24gbmVlZCB0byBiZSBkZWxheWVkXG5cdHZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHVuZGVmaW5lZCwgWzYxMV0sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDg1NjMpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkgc2NyaXB0VXJsID0gc2NyaXB0c1tzY3JpcHRzLmxlbmd0aCAtIDFdLnNyY1xuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDU2MzogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rcGVwdGlkZXNcIl0gPSBzZWxmW1wid2VicGFja0NodW5rcGVwdGlkZXNcIl0gfHwgW107XG52YXIgcGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24gPSBjaHVua0xvYWRpbmdHbG9iYWwucHVzaC5iaW5kKGNodW5rTG9hZGluZ0dsb2JhbCk7XG5jaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IGluc3RhbGxDaHVuaztcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdCIsIi8vIHJ1biBzdGFydHVwXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18ueCgpO1xuIl0sIm5hbWVzIjpbImRlZmVycmVkIiwibmV4dCIsInJhbmRvbUZsb2F0IiwicmFuZ2UiLCJNYXRoIiwicmFuZG9tIiwiZmxvb3IiLCJhc3NlcnQiLCJjb25kaXRpb24iLCJtZXNzYWdlIiwiRXJyb3IiLCJpbml0Q29vcmRpbmF0ZXMiLCJkaW1lbnNpb24xIiwiZGltZW5zaW9uMiIsImZpbGwiLCJBcnJheSIsIm1hcCIsInZlY3RvckFkZCIsInAiLCJxIiwibXVsdGlwbGllciIsIm5JdGVtcyIsImxlbmd0aCIsInRvdGFsIiwiaSIsImZpbGxSYW5kb21NYXRyaXgiLCJzY2FsZSIsIm1hdHJpeCIsImoiLCJjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSIsInNxZGlmZlN1bW0iLCJ2IiwiaXRlbXNTdW0iLCJ2ZWN0b3JTcXVhcmUiLCJzcXJ0IiwiY2FsY0Rpc3RhbmNlTWF0cml4IiwiZGF0YSIsImRpc3RhbmNlIiwiZCIsIlNQRUJhc2UiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJfYSIsIl9iIiwiX2MiLCJfZCIsIl9lIiwiX2YiLCJfZyIsInRoaXMiLCJzdGVwcyIsImN5Y2xlcyIsImN1dG9mZiIsImxhbWJkYSIsImRsYW1iZGEiLCJsYW1iZGEyIiwiZGxhbWJkYTIiLCJlcHNpbG9uIiwiZGlzdGFuY2VGdW5jdGlvbiIsImluaXREaXN0YW5jZSIsInZlY3RvcnMiLCJjYWxjRGlzdGFuY2UiLCJpbmRleDEiLCJpbmRleDIiLCJlbWJlZCIsImNvb3JkaW5hdGVzIiwiZGltZW5zaW9uIiwiY3ljbGUiLCJzdGVwIiwicm93aSIsInJvd2oiLCJyIiwiZGlmZklKIiwiUFNQRUJhc2UiLCJPcmlnaW5hbFNQRSIsInN1cGVyIiwicmFkaXVzUGVyY2VudCIsIm1heERpc3RhbmNlIiwibWF4RGlzdGFuY2VTdGVwcyIsIm4iLCJyYWRpdXMiLCJTdHJpbmdNZXRyaWNzTmFtZXMiLCJWZWN0b3JNZXRyaWNzTmFtZXMiLCJCaXRBcnJheU1ldHJpY3NOYW1lcyIsInZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJFdWNsaWRlYW4iLCJzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiTGV2ZW5zaHRlaW4iLCJKYXJvV2lua2xlciIsIk1hbmhhdHRhbiIsInMxIiwiczIiLCJkaXN0IiwiYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiVGFuaW1vdG8iLCJEaWNlIiwiQXN5bW1ldHJpYyIsIkJyYXVuQmxhbnF1ZXQiLCJDb3NpbmUiLCJLdWxjenluc2tpIiwiTWNDb25uYXVnaGV5IiwiUm9nb3RHb2xkYmVyZyIsIlJ1c3NlbCIsIlNva2FsIiwiSGFtbWluZyIsIkF2YWlsYWJsZU1ldHJpY3NUeXBlcyIsIkF2YWlsYWJsZU1ldHJpY3MiLCJWZWN0b3IiLCJTdHJpbmciLCJCaXRBcnJheSIsIk1ldHJpY1RvRGF0YVR5cGUiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwicmV0Iiwia2V5IiwidmFsIiwiTWVhc3VyZSIsIm1ldGhvZCIsImRhdGFUeXBlIiwiZ2V0TWVhc3VyZSIsInN0YXRpYyIsImF2YWlsYWJsZU1lYXN1cmVzIiwiYXJnIiwiZGVmYXVsdFZhbHVlIiwiX2xlbmd0aCIsIl92ZXJzaW9uIiwiX3VwZGF0ZUxldmVsIiwiX3NlbGVjdGVkQ291bnQiLCJfc2VsZWN0ZWRDb3VudFZlcnNpb24iLCJfc2VsZWN0ZWRJbmRleGVzVmVyc2lvbiIsIl92ZXJzaW9uZWROYW1lIiwiX3ZlcnNpb25lZE5hbWVWZXJzaW9uIiwiU0hSSU5LX1RIUkVTSE9MRCIsImJ1ZmYiLCJfY3JlYXRlQnVmZmVyIiwiX2RhdGEiLCJVaW50MzJBcnJheSIsImdldFJhd0RhdGEiLCJhc3N1cmVHb2V6IiwibnVtIiwiYXJnTmFtZSIsImFzc3VyZUluUmFuZ2UiLCJ2YWx1ZSIsIm1pbiIsIm1heCIsImNvcHkiLCJzcmMiLCJkc3QiLCJjb3VudCIsImNvcHlGcm9tIiwib3RoZXIiLCJsZW5ndGhJbkludHMiLCJidWZmZXIiLCJ2ZXJzaW9uIiwiaW5jcmVtZW50VmVyc2lvbiIsIm5vdGlmeSIsInZlcnNpb25lZE5hbWUiLCJuYW1lIiwic2VsZiIsInNldExlbmd0aCIsIm5JbnRzTmVlZGVkIiwibmV3RGF0YSIsInNldDEiLCJzZXQyIiwidGVtcCIsImxlbiIsInZhbHVlcyIsImZsYWciLCJzZXRCaXQiLCJzIiwiZnJvbVNlcSIsImNoYXJBdCIsImJ5dGVzIiwibnVtMSIsIm51bTIiLCJ0b1N0cmluZyIsImNvdW50Qml0cyIsImVxdWFscyIsImdldEJpdCIsImNsb25lIiwiYml0QXJyYXkiLCJmcm9tIiwiaW5pdCIsInNldEFsbCIsImludmVydCIsImZsYWdzIiwic2V0SW5kZXhlcyIsImluZGV4ZXMiLCJjbGVhciIsInNldEZhc3QiLCJldmVyeUluZGV4IiwiaW5kZXgiLCJhbnlJbmRleCIsInNldFdoZXJlIiwiY2hlY2siLCJhbGxvd0NsZWFyIiwiZ2V0UmFuZ2UiLCJ0byIsImFyciIsInB1c2giLCJmcm9tVmFsdWVzIiwiZ2V0UmFuZ2VBc0xpc3QiLCJzZXRSYW5nZSIsInN0YXJ0IiwiZW5kIiwic2V0VHJ1ZSIsInNldEZhbHNlIiwic2V0UmFuZG9tIiwiayIsImFuZCIsImFuZE5vdCIsIm5vdEFuZCIsIm5vdCIsIm9yIiwieG9yIiwiaW5zZXJ0QXQiLCJwb3MiLCJvbGRsZW5ndGgiLCJyZW1vdmVBdCIsImNvbnRhaW5zIiwicmVtb3ZlQnlNYXNrIiwibWFzayIsImRzdElkeCIsInNyY0lkeCIsImZpbmROZXh0IiwiYml0IiwidHJ1ZUNvdW50IiwiZmFsc2VDb3VudCIsIl9vbkJpdENvdW50IiwicmVtYWluaW5nQml0cyIsImNvdW50V2hlcmUiLCJyZXN1bHQiLCJhbmRXaXRoQ291bnRCaXRzIiwic2Vjb25kIiwiYWxsVHJ1ZSIsImFsbEZhbHNlIiwiYW55VHJ1ZSIsImFueUZhbHNlIiwidW51c2VkQml0cyIsIm51bUludHMiLCJfZmlyc3RPbkJpdCIsImZpbmRQcmV2IiwiX2xhc3RPbkJpdCIsIkludDhBcnJheSIsIlJlZHVjZXIiLCJBdmFpbGFibGVSZWR1Y2VycyIsImRpc3RhbmNlRm4iLCJfZW5jb2RlZERpc3RhbmNlIiwiYmluZCIsIm5OZWlnaGJvcnMiLCJyZWR1Y2VyIiwidSIsImEiLCJiIiwiX2VuY29kZSIsInRyYW5zZm9ybSIsImVtYmVkZGluZyIsImZpdCIsIl8iLCJpdGVyYXRpb25zIiwiaW5pdERhdGFEaXN0IiwiZ2V0U29sdXRpb24iLCJlbWIiLCJEaW1lbnNpb25hbGl0eVJlZHVjZXIiLCJtZXRyaWMiLCJtZWFzdXJlIiwic3BlY09wdGlvbnMiLCJhc3NpZ24iLCJuRXBvY2hzIiwidW5kZWZpbmVkIiwidHJhbnNwb3NlIiwidHlwZU5hbWUiLCJhdmFpbGFibGVNZXRob2RzIiwiYXZhaWxhYmxlTWV0cmljcyIsImFucyIsImZvckVhY2giLCJvYmoiLCJhcnJheSIsIm9ubWVzc2FnZSIsImNvbHVtbkRhdGEiLCJvbk1lc3NhZ2UiLCJlIiwiZXJyb3IiLCJwb3N0TWVzc2FnZSIsImV4cG9ydHMiLCJ0c25lXzEiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJUU05FIiwib3B0IiwicmV0dXJuViIsInZWYWx1ZSIsIml0ZXIiLCJwZXJwbGV4aXR5IiwiZ2V0b3B0IiwiZGltIiwiZmllbGQiLCJkZWZhdWx0dmFsIiwiaGFzT3duUHJvcGVydHkiLCJnYXVzc1JhbmRvbSIsImMiLCJsb2ciLCJyYW5kbiIsIm11Iiwic3RkIiwiemVyb3MiLCJpc05hTiIsIkFycmF5QnVmZmVyIiwiRmxvYXQ2NEFycmF5IiwicmFuZG4yZCIsInVzZXMiLCJ4IiwieGhlcmUiLCJMMiIsIngxIiwieDIiLCJEIiwieDFpIiwieDJpIiwieHRvZCIsIlgiLCJOIiwiZDJwIiwidG9sIiwibmYiLCJoVGFyZ2V0IiwiUCIsInByb3ciLCJiZXRhbWluIiwiYmV0YW1heCIsIkluZmluaXR5IiwiYmV0YSIsImRvbmUiLCJtYXh0cmllcyIsInBzdW0iLCJwaiIsImV4cCIsIm5IZXJlIiwiYWJzIiwicE91dCIsIk4yIiwic2lnbiIsImluaXREYXRhUmF3IiwiZGlzdHMiLCJpbml0U29sdXRpb24iLCJZIiwiZ2FpbnMiLCJ5c3RlcCIsImNnIiwiY29zdEdyYWQiLCJjb3N0IiwiZ3JhZCIsInltZWFuIiwiZ2lkIiwic2lkIiwiZ2FpbmlkIiwibmV3Z2FpbiIsIm5ld3NpZCIsImRlYnVnR3JhZCIsInlvbGQiLCJjZzAiLCJjZzEiLCJhbmFseXRpYyIsIm51bWVyaWNhbCIsImNvbnNvbGUiLCJwbXVsIiwicXVBcnIiLCJxc3VtIiwiZHN1bSIsImRoZXJlIiwicXUiLCJOTiIsIlEiLCJnc3VtIiwicHJlbXVsdCIsInByb3RvdHlwZSIsImlzQW55QXJyYXkiLCJvYmplY3QiLCJjYWxsIiwiZW5kc1dpdGgiLCJlcnJvckNhbGN1bGF0aW9uIiwicGFyYW1ldGVycyIsInBhcmFtZXRlcml6ZWRGdW5jdGlvbiIsImZ1bmMiLCJ5IiwicmVzY2FsZSIsImlucHV0Iiwib3V0cHV0IiwiYXJndW1lbnRzIiwiVHlwZUVycm9yIiwiY3VycmVudE1pbiIsIl9vcHRpb25zJGZyb21JbmRleCIsImZyb21JbmRleCIsIl9vcHRpb25zJHRvSW5kZXgiLCJ0b0luZGV4IiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwibWluVmFsdWUiLCJjdXJyZW50TWF4IiwibWF4VmFsdWUiLCJSYW5nZUVycm9yIiwiX29wdGlvbnMkbWluIiwiYXV0b01pbk1heCIsIl9vcHRpb25zJG1heCIsImZhY3RvciIsImluZGVudCIsInJlcGVhdCIsImluZGVudERhdGEiLCJpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnMiLCJtYXhSb3dzIiwibWF4Q29sdW1ucyIsIm1heE51bVNpemUiLCJwYWRNaW51cyIsInJvd3MiLCJjb2x1bW5zIiwibWF4SSIsIm1heEoiLCJsb29wIiwibGluZSIsImZvcm1hdE51bWJlciIsImpvaW4iLCJpbnNwZWN0RGF0YSIsImZvcm1hdE51bWJlcjIiLCJwYWRFbmQiLCJzdHIiLCJmaXgiLCJ0b0ZpeGVkIiwic3RhcnRzV2l0aCIsInRvRXhwb25lbnRpYWwiLCJzbGljZSIsImNoZWNrUm93SW5kZXgiLCJvdXRlciIsImNoZWNrQ29sdW1uSW5kZXgiLCJjaGVja1Jvd1ZlY3RvciIsInZlY3RvciIsInRvMURBcnJheSIsImNoZWNrQ29sdW1uVmVjdG9yIiwiY2hlY2tSYW5nZSIsInN0YXJ0Um93IiwiZW5kUm93Iiwic3RhcnRDb2x1bW4iLCJlbmRDb2x1bW4iLCJjaGVja051bWJlciIsIm5ld0FycmF5IiwiY2hlY2tOb25FbXB0eSIsImlzRW1wdHkiLCJBYnN0cmFjdE1hdHJpeCIsIm5ld1Jvd3MiLCJuZXdDb2x1bW5zIiwibmV3TWF0cml4IiwiTWF0cml4Iiwicm93IiwiY29sdW1uIiwic2V0IiwiaW50ZXJ2YWwiLCJyb3VuZCIsImwiLCJtYXRyaXgxIiwibWF0cml4MiIsImNoZWNrTWF0cml4IiwiaXNNYXRyaXgiLCJrbGFzcyIsInNpemUiLCJhcHBseSIsImNhbGxiYWNrIiwidG8yREFycmF5IiwidG9KU09OIiwiaXNSb3dWZWN0b3IiLCJpc0NvbHVtblZlY3RvciIsImlzVmVjdG9yIiwiaXNTcXVhcmUiLCJpc1N5bW1ldHJpYyIsImlzRWNoZWxvbkZvcm0iLCJwcmV2aW91c0NvbHVtbiIsImNoZWNrZWQiLCJpc1JlZHVjZWRFY2hlbG9uRm9ybSIsImVjaGVsb25Gb3JtIiwiaCIsImlNYXgiLCJzd2FwUm93cyIsInRtcCIsInJlZHVjZWRFY2hlbG9uRm9ybSIsIm0iLCJtYXhSb3ciLCJwaXZvdCIsInNldFN1Yk1hdHJpeCIsIm5lZyIsIm11bFMiLCJnZXRSb3ciLCJnZXRSb3dWZWN0b3IiLCJyb3dWZWN0b3IiLCJzZXRSb3ciLCJyb3cxIiwicm93MiIsImdldENvbHVtbiIsImdldENvbHVtblZlY3RvciIsImNvbHVtblZlY3RvciIsInNldENvbHVtbiIsInN3YXBDb2x1bW5zIiwiY29sdW1uMSIsImNvbHVtbjIiLCJhZGRSb3dWZWN0b3IiLCJzdWJSb3dWZWN0b3IiLCJtdWxSb3dWZWN0b3IiLCJkaXZSb3dWZWN0b3IiLCJhZGRDb2x1bW5WZWN0b3IiLCJzdWJDb2x1bW5WZWN0b3IiLCJtdWxDb2x1bW5WZWN0b3IiLCJkaXZDb2x1bW5WZWN0b3IiLCJtdWxSb3ciLCJtdWxDb2x1bW4iLCJieSIsIk5hTiIsIk5FR0FUSVZFX0lORklOSVRZIiwibWF4SW5kZXgiLCJpZHgiLCJQT1NJVElWRV9JTkZJTklUWSIsIm1pbkluZGV4IiwibWF4Um93SW5kZXgiLCJtaW5Sb3ciLCJtaW5Sb3dJbmRleCIsIm1heENvbHVtbiIsIm1heENvbHVtbkluZGV4IiwibWluQ29sdW1uIiwibWluQ29sdW1uSW5kZXgiLCJkaWFnIiwibm9ybSIsInR5cGUiLCJjdW11bGF0aXZlU3VtIiwic3VtIiwiZG90IiwidmVjdG9yMiIsInZlY3RvcjEiLCJtbXVsIiwiQmNvbGoiLCJzdHJhc3NlbjJ4MiIsImExMSIsImIxMSIsImExMiIsImIxMiIsImEyMSIsImIyMSIsImEyMiIsImIyMiIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjMDAiLCJjMDEiLCJjMTAiLCJjMTEiLCJzdHJhc3NlbjN4MyIsImEwMCIsImEwMSIsImEwMiIsImExMCIsImEyMCIsImIwMCIsImIwMSIsImIwMiIsImIxMCIsImIyMCIsIm02IiwibTciLCJtOCIsIm05IiwibTEyIiwibTEzIiwibTE0IiwibTE1IiwibTE2IiwibTE3IiwibTE4IiwiYzAyIiwiYzEyIiwiYzIwIiwiYzIxIiwiYzIyIiwibW11bFN0cmFzc2VuIiwicjEiLCJjMSIsInIyIiwiYzIiLCJtYXQiLCJjb2xzIiwicmVzdWx0YXQiLCJ3YXJuIiwiYmxvY2tNdWx0IiwiaGFsZlJvd3MiLCJwYXJzZUludCIsImhhbGZDb2xzIiwic3ViTWF0cml4IiwiYWRkIiwic3ViIiwic2NhbGVSb3dzIiwiaXNGaW5pdGUiLCJzY2FsZUNvbHVtbnMiLCJmbGlwUm93cyIsIm1pZGRsZSIsImNlaWwiLCJmaXJzdCIsImxhc3QiLCJmbGlwQ29sdW1ucyIsImtyb25lY2tlclByb2R1Y3QiLCJrcm9uZWNrZXJTdW0iLCJBeEkiLCJleWUiLCJJeEIiLCJzb3J0Um93cyIsImNvbXBhcmVGdW5jdGlvbiIsImNvbXBhcmVOdW1iZXJzIiwic29ydCIsInNvcnRDb2x1bW5zIiwic3ViTWF0cml4Um93IiwiaW5kaWNlcyIsInN1Yk1hdHJpeENvbHVtbiIsInNlbGVjdGlvbiIsInJvd0luZGljZXMiLCJjb2x1bW5JbmRpY2VzIiwiY2hlY2tSb3dJbmRpY2VzIiwiY2hlY2tDb2x1bW5JbmRpY2VzIiwicm93SW5kZXgiLCJjb2x1bW5JbmRleCIsInRyYWNlIiwic3VtQnlSb3ciLCJzdW1CeUNvbHVtbiIsInN1bUFsbCIsInByb2R1Y3QiLCJwcm9kdWN0QnlSb3ciLCJwcm9kdWN0QnlDb2x1bW4iLCJwcm9kdWN0QWxsIiwibWVhbiIsInZhcmlhbmNlIiwidW5iaWFzZWQiLCJzdW0xIiwic3VtMiIsInZhcmlhbmNlQnlSb3ciLCJ2YXJpYW5jZUJ5Q29sdW1uIiwidmFyaWFuY2VBbGwiLCJzdGFuZGFyZERldmlhdGlvbiIsImNlbnRlciIsImNlbnRlckJ5Um93IiwiY2VudGVyQnlDb2x1bW4iLCJjZW50ZXJBbGwiLCJwb3ciLCJnZXRTY2FsZUJ5Um93Iiwic2NhbGVCeVJvdyIsImdldFNjYWxlQnlDb2x1bW4iLCJzY2FsZUJ5Q29sdW1uIiwiZGl2aWRlciIsImdldFNjYWxlQWxsIiwic2NhbGVBbGwiLCJTeW1ib2wiLCJmb3IiLCJyYW5kIiwicmFuZG9tSW50IiwicmFuZEludCIsImRpYWdvbmFsIiwiaWRlbnRpdHkiLCJuZWdhdGUiLCJ0ZW5zb3JQcm9kdWN0IiwiblJvd3MiLCJuQ29sdW1ucyIsImFycmF5RGF0YSIsImV2ZXJ5IiwiZWxlbWVudCIsInJlbW92ZVJvdyIsInNwbGljZSIsImFkZFJvdyIsInJlbW92ZUNvbHVtbiIsIm5ld1JvdyIsImFkZENvbHVtbiIsImFkZFMiLCJhZGRNIiwic3ViUyIsInN1Yk0iLCJzdWJ0cmFjdCIsInN1YnRyYWN0UyIsInN1YnRyYWN0TSIsIm11bCIsIm11bE0iLCJtdWx0aXBseSIsIm11bHRpcGx5UyIsIm11bHRpcGx5TSIsImRpdiIsImRpdlMiLCJkaXZNIiwiZGl2aWRlIiwiZGl2aWRlUyIsImRpdmlkZU0iLCJtb2QiLCJtb2RTIiwibW9kTSIsIm1vZHVsdXMiLCJtb2R1bHVzUyIsIm1vZHVsdXNNIiwiYW5kUyIsImFuZE0iLCJvclMiLCJvck0iLCJ4b3JTIiwieG9yTSIsImxlZnRTaGlmdCIsImxlZnRTaGlmdFMiLCJsZWZ0U2hpZnRNIiwic2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdCIsInNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTIiwic2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0iLCJyaWdodFNoaWZ0IiwicmlnaHRTaGlmdFMiLCJyaWdodFNoaWZ0TSIsInplcm9GaWxsUmlnaHRTaGlmdCIsInplcm9GaWxsUmlnaHRTaGlmdFMiLCJ6ZXJvRmlsbFJpZ2h0U2hpZnRNIiwiYWNvcyIsImFjb3NoIiwiYXNpbiIsImFzaW5oIiwiYXRhbiIsImF0YW5oIiwiY2JydCIsImNsejMyIiwiY29zIiwiY29zaCIsImV4cG0xIiwiZnJvdW5kIiwibG9nMXAiLCJsb2cxMCIsImxvZzIiLCJzaW4iLCJzaW5oIiwidGFuIiwidGFuaCIsInRydW5jIiwiYXJnMCIsInBvd1MiLCJwb3dNIiwiaW5zdGFsbE1hdGhPcGVyYXRpb25zIiwiV3JhcHBlck1hdHJpeDJEIiwiTHVEZWNvbXBvc2l0aW9uIiwidCIsIkxVY29saiIsImttYXgiLCJsdSIsInBpdm90VmVjdG9yIiwicGl2b3RTaWduIiwiTFUiLCJpc1Npbmd1bGFyIiwiY29sIiwic29sdmUiLCJkZXRlcm1pbmFudCIsImxvd2VyVHJpYW5ndWxhck1hdHJpeCIsInVwcGVyVHJpYW5ndWxhck1hdHJpeCIsInBpdm90UGVybXV0YXRpb25WZWN0b3IiLCJoeXBvdGVudXNlIiwiUXJEZWNvbXBvc2l0aW9uIiwicXIiLCJyZGlhZyIsIm5ybSIsIlFSIiwiUmRpYWciLCJpc0Z1bGxSYW5rIiwib3J0aG9nb25hbE1hdHJpeCIsIlNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uIiwiY29tcHV0ZUxlZnRTaW5ndWxhclZlY3RvcnMiLCJjb21wdXRlUmlnaHRTaW5ndWxhclZlY3RvcnMiLCJhdXRvVHJhbnNwb3NlIiwid2FudHUiLCJCb29sZWFuIiwid2FudHYiLCJzd2FwcGVkIiwiYXV4IiwibnUiLCJuaSIsIlUiLCJWIiwid29yayIsInNpIiwibmN0IiwibnJ0IiwibXJjIiwicHAiLCJlcHMiLCJFUFNJTE9OIiwia2FzZSIsImFscGhhIiwiTUlOX1ZBTFVFIiwia3MiLCJmIiwiY3MiLCJzbiIsInNwIiwic3BtMSIsImVwbTEiLCJzayIsImVrIiwic2hpZnQiLCJnIiwidGhyZXNob2xkIiwic2NvbHMiLCJMcyIsInJpZ2h0U2luZ3VsYXJWZWN0b3JzIiwiVkwiLCJ2cm93cyIsInVyb3dzIiwiVkxVIiwic29sdmVGb3JEaWFnb25hbCIsImludmVyc2UiLCJ2Y29scyIsInVjb2xzIiwibm9ybTIiLCJyYW5rIiwiaWkiLCJsZWZ0U2luZ3VsYXJWZWN0b3JzIiwiZGlhZ29uYWxNYXRyaXgiLCJwYXJhbXMiLCJkYW1waW5nIiwiZ3JhZGllbnREaWZmZXJlbmNlIiwiZXZhbHVhdGVkRGF0YSIsImdyYWRpZW50RnVuYyIsInBhcmFtRnVuY3Rpb24iLCJwYXJhbSIsImF1eFBhcmFtcyIsImZ1bmNQYXJhbSIsInBvaW50IiwiZ3JhZGllbnRGdW5jdGlvbiIsIm1hdHJpeEZ1bmMiLCJtYXRyaXhGdW5jdGlvbiIsImludmVyc2VNYXRyaXgiLCJ1c2VTVkQiLCJsZWZ0SGFuZFNpZGUiLCJyaWdodEhhbmRTaWRlIiwibGV2ZW5iZXJnTWFycXVhcmR0IiwibWF4SXRlcmF0aW9ucyIsImVycm9yVG9sZXJhbmNlIiwibWluVmFsdWVzIiwibWF4VmFsdWVzIiwiaW5pdGlhbFZhbHVlcyIsInBhckxlbiIsIk1BWF9TQUZFX0lOVEVHRVIiLCJNSU5fU0FGRV9JTlRFR0VSIiwiaXRlcmF0aW9uIiwiY29udmVyZ2VkIiwicGFyYW1ldGVyVmFsdWVzIiwicGFyYW1ldGVyRXJyb3IiLCJfX2ltcG9ydFN0YXIiLCJfX2VzTW9kdWxlIiwidXRpbHMiLCJtYWtlSGVhcCIsIm5Qb2ludHMiLCJtYWtlQXJyYXlzIiwiZmlsbFZhbHVlIiwiZW1wdHkiLCJmaWxsZWQiLCJoZWFwIiwiaGVhcFB1c2giLCJ3ZWlnaHQiLCJ3ZWlnaHRzIiwidW5jaGVja2VkSGVhcFB1c2giLCJpc05ldyIsImlTd2FwIiwiaWMxIiwiaWMyIiwiaGVhcFNoYXBlMiIsInNpZnREb3duIiwiaGVhcDEiLCJoZWFwMiIsImNlaWxpbmciLCJlbHQiLCJsZWZ0Q2hpbGQiLCJyaWdodENoaWxkIiwic3dhcCIsInRlbXAxIiwidGVtcDIiLCJyZWplY3Rpb25TYW1wbGUiLCJuU2FtcGxlcyIsInBvb2xTaXplIiwicmVqZWN0U2FtcGxlIiwidGF1UmFuZEludCIsImJyb2tlbiIsImJ1aWxkQ2FuZGlkYXRlcyIsImN1cnJlbnRHcmFwaCIsIm5WZXJ0aWNlcyIsIm1heENhbmRpZGF0ZXMiLCJjYW5kaWRhdGVOZWlnaGJvcnMiLCJpc24iLCJ0YXVSYW5kIiwiZGVoZWFwU29ydCIsImluZEhlYXAiLCJkaXN0SGVhcCIsImluZEhlYXBJbmRleCIsImRpc3RIZWFwSW5kZXgiLCJzbWFsbGVzdEZsYWdnZWQiLCJpbmQiLCJtaW5EaXN0IiwicmVzdWx0SW5kZXgiLCJ1bWFwXzEiLCJVTUFQIiwiX19yZWFkIiwibyIsIml0ZXJhdG9yIiwiYXIiLCJfX3ZhbHVlcyIsIlNwYXJzZU1hdHJpeCIsImRpbXMiLCJlbnRyaWVzIiwiTWFwIiwibkNvbHMiLCJjaGVja0RpbXMiLCJtYWtlS2V5IiwiaGFzIiwiZ2V0QWxsIiwib3JkZXJlZCIsInJvd0NvbFZhbHVlcyIsImdldERpbXMiLCJnZXRSb3dzIiwiZ2V0Q29scyIsImdldFZhbHVlcyIsImZuIiwidmFscyIsInRvQXJyYXkiLCJfdGhpcyIsInBhaXJ3aXNlTXVsdGlwbHkiLCJlbGVtZW50V2lzZSIsIm1heGltdW0iLCJtdWx0aXBseVNjYWxhciIsInNjYWxhciIsImVsaW1pbmF0ZVplcm9zIiwiemVyb0luZGljZXMiLCJTZXQiLCJyZW1vdmVCeVplcm9JbmRleCIsIm5leHRWYWx1ZXMiLCJmaWx0ZXIiLCJuZXh0Um93cyIsIm5leHRDb2xzIiwibm9ybWFsaXplIiwibm9ybVR5cGUiLCJlXzEiLCJub3JtRm4iLCJub3JtRm5zIiwiY29sc0J5Um93IiwibmV4dE1hdHJpeCIsIl9sb29wXzEiLCJlXzFfMSIsInJldHVybiIsInhzIiwib3AiLCJ2aXNpdGVkIiwib3BlcmF0ZSIsIm5leHRWYWx1ZSIsInZhbHVlc0EiLCJyb3dzQSIsImNvbHNBIiwidmFsdWVzQiIsInJvd3NCIiwiY29sc0IiLCJnZXRDU1IiLCJpbmRwdHIiLCJjdXJyZW50Um93IiwidHJlZSIsIm1ha2VOTkRlc2NlbnQiLCJsZWFmQXJyYXkiLCJuSXRlcnMiLCJkZWx0YSIsInJobyIsInJwVHJlZUluaXQiLCJjaiIsImNrIiwibWFrZUluaXRpYWxpemF0aW9ucyIsImluaXRGcm9tUmFuZG9tIiwicXVlcnlQb2ludHMiLCJfaGVhcCIsImluaXRGcm9tVHJlZSIsIl90cmVlIiwic2VhcmNoRmxhdFRyZWUiLCJtYWtlSW5pdGlhbGl6ZWROTlNlYXJjaCIsImdyYXBoIiwiaW5pdGlhbGl6YXRpb24iLCJ0cmllZCIsInZlcnRleCIsImNhbmRpZGF0ZXMiLCJjYW5kaWRhdGVzXzEiLCJjYW5kaWRhdGVzXzFfMSIsImNhbmRpZGF0ZSIsImluaXRpYWxpemVTZWFyY2giLCJmb3Jlc3QiLCJlXzIiLCJyZXN1bHRzIiwiZm9yZXN0XzEiLCJmb3Jlc3RfMV8xIiwiZV8yXzEiLCJfX3NwcmVhZCIsImNvbmNhdCIsIkZsYXRUcmVlIiwiaHlwZXJwbGFuZXMiLCJvZmZzZXRzIiwiY2hpbGRyZW4iLCJtYWtlRXVjbGlkZWFuVHJlZSIsImxlYWZTaXplIiwic3BsaXRSZXN1bHRzIiwibGVmdEluZGV4IiwicmlnaHRJbmRleCIsImxlZnQiLCJyaWdodCIsImh5cGVycGxhbmVPZmZzZXQiLCJoeXBlcnBsYW5lVmVjdG9yIiwibkxlZnQiLCJuUmlnaHQiLCJzaWRlIiwibWFyZ2luIiwiaW5kaWNlc0xlZnQiLCJpbmRpY2VzUmlnaHQiLCJoeXBlcnBsYW5lIiwib2Zmc2V0IiwiZXVjbGlkZWFuUmFuZG9tUHJvamVjdGlvblNwbGl0IiwiaXNMZWFmIiwicmVjdXJzaXZlRmxhdHRlbiIsIm5vZGVOdW0iLCJsZWFmTnVtIiwib2xkTm9kZU51bSIsInJlcyIsIm51bU5vZGVzIiwibnVtTGVhdmVzIiwic2VsZWN0U2lkZSIsIm1ha2VGb3Jlc3QiLCJuVHJlZXMiLCJtYWtlVHJlZSIsIm5Ob2RlcyIsIm5MZWF2ZXMiLCJmbGF0dGVuVHJlZSIsIm1ha2VMZWFmQXJyYXkiLCJycEZvcmVzdCIsInJwRm9yZXN0XzEiLCJycEZvcmVzdF8xXzEiLCJub2RlIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJnZW5lcmF0b3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInJlamVjdGVkIiwidGhlbiIsIl9fZ2VuZXJhdG9yIiwiYm9keSIsImxhYmVsIiwic2VudCIsInRyeXMiLCJvcHMiLCJ2ZXJiIiwicG9wIiwiX19pbXBvcnREZWZhdWx0Iiwibm5EZXNjZW50IiwibWxfbGV2ZW5iZXJnX21hcnF1YXJkdF8xIiwiU01PT1RIX0tfVE9MRVJBTkNFIiwiTUlOX0tfRElTVF9TQ0FMRSIsImxlYXJuaW5nUmF0ZSIsImxvY2FsQ29ubmVjdGl2aXR5IiwibkNvbXBvbmVudHMiLCJuZWdhdGl2ZVNhbXBsZVJhdGUiLCJyZXB1bHNpb25TdHJlbmd0aCIsInNldE9wTWl4UmF0aW8iLCJzcHJlYWQiLCJ0cmFuc2Zvcm1RdWV1ZVNpemUiLCJ0YXJnZXRNZXRyaWMiLCJ0YXJnZXRXZWlnaHQiLCJ0YXJnZXROTmVpZ2hib3JzIiwiZXVjbGlkZWFuIiwiaXNJbml0aWFsaXplZCIsIm9wdGltaXphdGlvblN0YXRlIiwiT3B0aW1pemF0aW9uU3RhdGUiLCJzZXRQYXJhbSIsImluaXRpYWxpemVGaXQiLCJvcHRpbWl6ZUxheW91dCIsImZpdEFzeW5jIiwib3B0aW1pemVMYXlvdXRBc3luYyIsInNldFN1cGVydmlzZWRQcm9qZWN0aW9uIiwic2V0UHJlY29tcHV0ZWRLTk4iLCJrbm5JbmRpY2VzIiwia25uRGlzdGFuY2VzIiwiZ2V0TkVwb2NocyIsImtublJlc3VsdHMiLCJuZWFyZXN0TmVpZ2hib3JzIiwiZnV6enlTaW1wbGljaWFsU2V0IiwibWFrZVNlYXJjaEZucyIsInNlYXJjaEdyYXBoIiwibWFrZVNlYXJjaEdyYXBoIiwicHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb24iLCJpbml0aWFsaXplU2ltcGxpY2lhbFNldEVtYmVkZGluZyIsImhlYWQiLCJ0YWlsIiwiZXBvY2hzUGVyU2FtcGxlIiwiaW5pdGlhbGl6ZU9wdGltaXphdGlvbiIsInByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wIiwic2VhcmNoIiwia25uIiwiZGlzdGFuY2VzIiwibmVpZ2hib3IiLCJ0b1RyYW5zZm9ybSIsInJhd0RhdGEiLCJhZGp1c3RlZExvY2FsQ29ubmVjdGl2aXR5Iiwic21vb3RoS05ORGlzdGFuY2UiLCJzaWdtYXMiLCJyaG9zIiwiY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMiLCJub3JtZWQiLCJjc3JNYXRyaXgiLCJpbml0VHJhbnNmb3JtIiwicmVzaGFwZTJkIiwiZ3JhcGhNYXgiLCJtYWtlRXBvY2hzUGVyU2FtcGxlIiwiYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzIiwiaGVhZEVtYmVkZGluZyIsInRhaWxFbWJlZGRpbmciLCJjdXJyZW50RXBvY2giLCJmYXJEaXN0IiwiY2F0ZWdvcmljYWxTaW1wbGljaWFsU2V0SW50ZXJzZWN0aW9uIiwib3B0aW1pemVMYXlvdXRTdGVwIiwiZ2V0RW1iZWRkaW5nIiwibWV0cmljTk5EZXNjZW50Iiwic3BhcnNlTWF0cml4IiwicHJvZE1hdHJpeCIsInNpbXBsaWNpYWxTZXQiLCJ0YXJnZXQiLCJ1bmtub3duRGlzdCIsImludGVyc2VjdGlvbiIsImZhc3RJbnRlcnNlY3Rpb24iLCJyZXNldExvY2FsQ29ubmVjdGl2aXR5Iiwibkl0ZXIiLCJiYW5kd2lkdGgiLCJsbyIsImhpIiwibWlkIiwiaXRoRGlzdGFuY2VzIiwibm9uWmVyb0Rpc3RzIiwiaW50ZXJwb2xhdGlvbiIsIm1lYW5JdGhEaXN0YW5jZXMiLCJtZWFuRGlzdGFuY2VzIiwiZ3JhcGhWYWx1ZXMiLCJlbnRyeSIsInciLCJzdGF0ZSIsIm1vdmVPdGhlciIsImVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlIiwiZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSIsImVwb2NoT2ZOZXh0U2FtcGxlIiwiaW5pdGlhbEFscGhhIiwiZ2FtbWEiLCJmaW5kQUJQYXJhbXMiLCJjdXJyZW50IiwiZGlzdFNxdWFyZWQiLCJyRGlzdCIsImdyYWRDb2VmZiIsImdyYWREIiwiY2xpcCIsIm5OZWdTYW1wbGVzIiwia18xIiwib3RoZXJfMSIsImRpc3RTcXVhcmVkXzEiLCJncmFkQ29lZmZfMSIsImVwb2NoQ2FsbGJhY2siLCJlcG9jaENvbXBsZXRlZCIsInNob3VsZFN0b3AiLCJpc0ZpbmlzaGVkIiwic2V0VGltZW91dCIsImVyciIsImNvc2luZSIsIm5vcm1YIiwibm9ybVkiLCJjbGlwVmFsdWUiLCJ4diIsImxpbmVhciIsInl2IiwiZGVmYXVsdCIsInoiLCJ2ZWMiLCJ2ZWNfMSIsInZlY18xXzEiLCJpdGVtIiwib25lcyIsIm1heDJkIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIl9fd2VicGFja19leHBvcnRzX18iLCJPIiwiY2h1bmtJZHMiLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsImRlZmluaXRpb24iLCJjaHVua0lkIiwiYWxsIiwicHJvbWlzZXMiLCJnbG9iYWxUaGlzIiwiRnVuY3Rpb24iLCJ3aW5kb3ciLCJwcm9wIiwidG9TdHJpbmdUYWciLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJkb2N1bWVudCIsImN1cnJlbnRTY3JpcHQiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJyZXBsYWNlIiwiaW5zdGFsbGVkQ2h1bmtzIiwiY2h1bmtMb2FkaW5nR2xvYmFsIiwicGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24iLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiXSwic291cmNlUm9vdCI6IiJ9
|