mcl-wasm
Version:
mcl ; A portable and fast pairing-based cryptography library for Node.js by WebAssembly
1 lines • 642 kB
JavaScript
!function(A,I){"object"==typeof exports&&"object"==typeof module?module.exports=I():"function"==typeof define&&define.amd?define([],I):"object"==typeof exports?exports.mcl=I():A.mcl=I()}(self,()=>{return A={31(A,I){"use strict";var g;Object.defineProperty(I,"__esModule",{value:!0}),I.MCLBN_GT_SIZE=I.MCLBN_G2_SIZE=I.MCLBN_G1_SIZE=I.MCLBN_FR_SIZE=I.MCLBN_FP_SIZE=I.MCLBN_COMPILED_TIME_VAR=I.MCLBN_FR_UNIT_SIZE=I.MCLBN_FP_UNIT_SIZE=I.EC_PROJ=I.IRTF=I.NIST_P256=I.NIST_P224=I.NIST_P192=I.SECP384R1=I.SECP256K1=I.SECP224K1=I.BLS12_377=I.BLS12_381=I.BN_SNARK1=I.BN462=I.BN381_2=I.BN381_1=I.BN254=I.CurveType=void 0,function(A){A[A.BN254=0]="BN254",A[A.BN_SNARK1=4]="BN_SNARK1",A[A.BLS12_381=5]="BLS12_381",A[A.BLS12_377=8]="BLS12_377",A[A.SECP224K1=101]="SECP224K1",A[A.SECP256K1=102]="SECP256K1",A[A.SECP384R1=102]="SECP384R1",A[A.NIST_P192=105]="NIST_P192",A[A.NIST_P224=106]="NIST_P224",A[A.NIST_P256=107]="NIST_P256"}(g||(I.CurveType=g={})),I.BN254=g.BN254,I.BN381_1=1,I.BN381_2=2,I.BN462=3,I.BN_SNARK1=g.BN_SNARK1,I.BLS12_381=g.BLS12_381,I.BLS12_377=g.BLS12_377,I.SECP224K1=g.SECP224K1,I.SECP256K1=g.SECP256K1,I.SECP384R1=103,I.NIST_P192=g.NIST_P192,I.NIST_P224=g.NIST_P224,I.NIST_P256=g.NIST_P256,I.IRTF=5,I.EC_PROJ=1024,I.MCLBN_FP_UNIT_SIZE=6,I.MCLBN_FR_UNIT_SIZE=4,I.MCLBN_COMPILED_TIME_VAR=10*I.MCLBN_FR_UNIT_SIZE+I.MCLBN_FP_UNIT_SIZE,I.MCLBN_FP_SIZE=8*I.MCLBN_FP_UNIT_SIZE,I.MCLBN_FR_SIZE=8*I.MCLBN_FR_UNIT_SIZE,I.MCLBN_G1_SIZE=3*I.MCLBN_FP_SIZE,I.MCLBN_G2_SIZE=6*I.MCLBN_FP_SIZE,I.MCLBN_GT_SIZE=12*I.MCLBN_FP_SIZE},211(A,I){"use strict";Object.defineProperty(I,"__esModule",{value:!0}),I.default=A=>crypto.getRandomValues(A)},686(A,I,g){"use strict";var B=this&&this.__createBinding||(Object.create?function(A,I,g,B){void 0===B&&(B=g);var C=Object.getOwnPropertyDescriptor(I,g);C&&!("get"in C?!I.__esModule:C.writable||C.configurable)||(C={enumerable:!0,get:function(){return I[g]}}),Object.defineProperty(A,B,C)}:function(A,I,g,B){void 0===B&&(B=g),A[B]=I[g]}),C=this&&this.__exportStar||function(A,I){for(var g in A)"default"===g||Object.prototype.hasOwnProperty.call(I,g)||B(I,A,g)},Q=this&&this.__importDefault||function(A){return A&&A.__esModule?A:{default:A}};Object.defineProperty(I,"__esModule",{value:!0}),I.mod=I.getMemory=I.curveType=I._showDebug=I.toHexStr=I.toHex=I.free=I.fromHexStr=I.init=I.getRandomValues=I.EC_PROJ=I.IRTF=I.NIST_P256=I.NIST_P224=I.NIST_P192=I.SECP384R1=I.SECP256K1=I.SECP224K1=I.BLS12_377=I.BLS12_381=I.BN_SNARK1=I.BN462=I.BN381_2=I.BN381_1=I.BN254=void 0;var E=g(31);Object.defineProperty(I,"BN254",{enumerable:!0,get:function(){return E.BN254}}),Object.defineProperty(I,"BN381_1",{enumerable:!0,get:function(){return E.BN381_1}}),Object.defineProperty(I,"BN381_2",{enumerable:!0,get:function(){return E.BN381_2}}),Object.defineProperty(I,"BN462",{enumerable:!0,get:function(){return E.BN462}}),Object.defineProperty(I,"BN_SNARK1",{enumerable:!0,get:function(){return E.BN_SNARK1}}),Object.defineProperty(I,"BLS12_381",{enumerable:!0,get:function(){return E.BLS12_381}}),Object.defineProperty(I,"BLS12_377",{enumerable:!0,get:function(){return E.BLS12_377}}),Object.defineProperty(I,"SECP224K1",{enumerable:!0,get:function(){return E.SECP224K1}}),Object.defineProperty(I,"SECP256K1",{enumerable:!0,get:function(){return E.SECP256K1}}),Object.defineProperty(I,"SECP384R1",{enumerable:!0,get:function(){return E.SECP384R1}}),Object.defineProperty(I,"NIST_P192",{enumerable:!0,get:function(){return E.NIST_P192}}),Object.defineProperty(I,"NIST_P224",{enumerable:!0,get:function(){return E.NIST_P224}}),Object.defineProperty(I,"NIST_P256",{enumerable:!0,get:function(){return E.NIST_P256}}),Object.defineProperty(I,"IRTF",{enumerable:!0,get:function(){return E.IRTF}}),Object.defineProperty(I,"EC_PROJ",{enumerable:!0,get:function(){return E.EC_PROJ}});var i=g(211);Object.defineProperty(I,"getRandomValues",{enumerable:!0,get:function(){return Q(i).default}});var D=g(946);Object.defineProperty(I,"init",{enumerable:!0,get:function(){return D.initializeMcl}}),Object.defineProperty(I,"fromHexStr",{enumerable:!0,get:function(){return D.fromHexStr}}),Object.defineProperty(I,"free",{enumerable:!0,get:function(){return D.free}}),Object.defineProperty(I,"toHex",{enumerable:!0,get:function(){return D.toHex}}),Object.defineProperty(I,"toHexStr",{enumerable:!0,get:function(){return D.toHexStr}}),Object.defineProperty(I,"_showDebug",{enumerable:!0,get:function(){return D._showDebug}}),Object.defineProperty(I,"curveType",{enumerable:!0,get:function(){return D.initializedCurveType}}),Object.defineProperty(I,"getMemory",{enumerable:!0,get:function(){return D.getMemory}}),C(g(351),I);var w=g(946);Object.defineProperty(I,"mod",{enumerable:!0,get:function(){return w.mod}})},946(A,I,g){"use strict";var B=this&&this.__importDefault||function(A){return A&&A.__esModule?A:{default:A}};Object.defineProperty(I,"__esModule",{value:!0}),I.initializeMcl=I.initializedCurveType=I._showDebug=I.free=I.fromHexStr=I.toHexStr=I.toHex=I.asciiStrToPtr=I.ptrToAsciiStr=I.getMemory=I.mallocDebug=I.stackRestore=I.stackAlloc=I.stackSave=I.HEAP32=I.HEAP8=I.mod=void 0;const C=B(g(211)),Q=g(31),E=g(358);I.mallocDebug={enabled:!1,total:0,ptr:{},his:[]},I.getMemory=()=>I.mod.wasmMemory,I.ptrToAsciiStr=(A,g)=>{let B="";for(let C=0;C<g;C++)B+=String.fromCharCode(I.mod.HEAP8[A+C]);return B},I.asciiStrToPtr=(A,g)=>{for(let B=0;B<g.length;B++)I.mod.HEAP8[A+B]=g.charCodeAt(B)},I.toHex=(A,I,g)=>{let B="";for(let C=0;C<g;C++)B+=("0"+A[I+C].toString(16)).slice(-2);return B},I.toHexStr=A=>(0,I.toHex)(A,0,A.length),I.fromHexStr=A=>{if(1&A.length)throw new Error(`fromHexStr:length must be even (${A.length})`);const I=A.length/2,g=new Uint8Array(I);for(let B=0;B<I;B++)g[B]=parseInt(A.slice(2*B,2*B+2),16);return g},I.free=A=>{I.mod._free(A)},I._showDebug=()=>{I.mallocDebug.enabled&&(console.log("malloc DEBUG mode"),console.log(` show total=${I.mallocDebug.total}`),console.log(` g_ptr=${JSON.stringify(I.mallocDebug.ptr,null,"\t")}`))},I.initializeMcl=async(A=Q.CurveType.BN254)=>{I.mod=await E({cryptoGetRandomValues:A=>{(0,C.default)(A)}}),I.HEAP8=I.mod.HEAP8,I.HEAP32=I.mod.HEAP32,I.stackSave=I.mod.stackSave,I.stackAlloc=I.mod.stackAlloc,I.stackRestore=I.mod.stackRestore,I.initializedCurveType=A,(()=>{const A=(A,g=!0)=>(B,C=0)=>{const Q=I.mod.stackSave(),E=I.mod.stackAlloc(4096),i=A(E,4096,B,C);if(i>0){let A=null;return A=g?(0,I.ptrToAsciiStr)(E,i):new Uint8Array(I.mod.HEAP8.subarray(E,E+i)),I.mod.stackRestore(Q),A}throw I.mod.stackRestore(Q),new Error(`err gen_str:${B}`)},g=I=>A(I,!1),B=A=>(g,B)=>{const C=I.mod.stackSave(),Q=I.mod.stackAlloc(B.length);I.mod.HEAP8.set(B,Q);const E=A(g,Q,B.length);if(I.mod.stackRestore(C),0===E||E!==B.length)throw new Error(`err _wrapDeserialize: ${E} != ${B.length}`)},C=(A,g)=>function(...B){const C=B[g],Q=Object.prototype.toString.apply(C);if(!["[object String]","[object Uint8Array]","[object Array]"].includes(Q))throw new Error(`err bad type:"${Q}". Use String or Uint8Array.`);const E=B[g+1],i=I.mod.stackSave(),D=I.mod.stackAlloc(C.length);"[object String]"===Q?(0,I.asciiStrToPtr)(D,C):I.mod.HEAP8.set(C,D);const w=A(...B.slice(0,g),D,C.length,E);if(I.mod.stackRestore(i),0!==w)throw new Error("err _wrapInput")};I.mod.mclBnFr_malloc=()=>I.mod._malloc(Q.MCLBN_FR_SIZE),I.mod.mclBnFr_setLittleEndian=C(I.mod._mclBnFr_setLittleEndian,1),I.mod.mclBnFr_setLittleEndianMod=C(I.mod._mclBnFr_setLittleEndianMod,1),I.mod.mclBnFr_setBigEndianMod=C(I.mod._mclBnFr_setBigEndianMod,1),I.mod.mclBnFr_setStr=C(I.mod._mclBnFr_setStr,1),I.mod.mclBnFr_getStr=A(I.mod._mclBnFr_getStr),I.mod.mclBnFr_deserialize=B(I.mod._mclBnFr_deserialize),I.mod.mclBnFr_serialize=g(I.mod._mclBnFr_serialize),I.mod.mclBnFr_setHashOf=C(I.mod._mclBnFr_setHashOf,1),I.mod.mclBnFp_malloc=()=>I.mod._malloc(Q.MCLBN_FP_SIZE),I.mod.mclBnFp_setLittleEndian=C(I.mod._mclBnFp_setLittleEndian,1),I.mod.mclBnFp_setLittleEndianMod=C(I.mod._mclBnFp_setLittleEndianMod,1),I.mod.mclBnFp_setBigEndianMod=C(I.mod._mclBnFp_setBigEndianMod,1),I.mod.mclBnFp_setStr=C(I.mod._mclBnFp_setStr,1),I.mod.mclBnFp_getStr=A(I.mod._mclBnFp_getStr),I.mod.mclBnFp_deserialize=B(I.mod._mclBnFp_deserialize),I.mod.mclBnFp_serialize=g(I.mod._mclBnFp_serialize),I.mod.mclBnFp_setHashOf=C(I.mod._mclBnFp_setHashOf,1),I.mod.mclBnFp2_malloc=()=>I.mod._malloc(2*Q.MCLBN_FP_SIZE),I.mod.mclBnFp2_deserialize=B(I.mod._mclBnFp2_deserialize),I.mod.mclBnFp2_serialize=g(I.mod._mclBnFp2_serialize),I.mod.mclBnG1_malloc=()=>I.mod._malloc(Q.MCLBN_G1_SIZE),I.mod.mclBnG1_setStr=C(I.mod._mclBnG1_setStr,1),I.mod.mclBnG1_getStr=A(I.mod._mclBnG1_getStr),I.mod.mclBnG1_deserialize=B(I.mod._mclBnG1_deserialize),I.mod.mclBnG1_serialize=g(I.mod._mclBnG1_serialize),I.mod.mclBnG1_hashAndMapTo=C(I.mod._mclBnG1_hashAndMapTo,1),I.mod.mclBnG2_malloc=()=>I.mod._malloc(Q.MCLBN_G2_SIZE),I.mod.mclBnG2_setStr=C(I.mod._mclBnG2_setStr,1),I.mod.mclBnG2_getStr=A(I.mod._mclBnG2_getStr),I.mod.mclBnG2_deserialize=B(I.mod._mclBnG2_deserialize),I.mod.mclBnG2_serialize=g(I.mod._mclBnG2_serialize),I.mod.mclBnG2_hashAndMapTo=C(I.mod._mclBnG2_hashAndMapTo,1),I.mod.mclBnGT_malloc=()=>I.mod._malloc(Q.MCLBN_GT_SIZE),I.mod.mclBnGT_deserialize=B(I.mod._mclBnGT_deserialize),I.mod.mclBnGT_serialize=g(I.mod._mclBnGT_serialize),I.mod.mclBnGT_setStr=C(I.mod._mclBnGT_setStr,1),I.mod.mclBnGT_getStr=A(I.mod._mclBnGT_getStr);const E=I.mod._malloc,i=I.mod._free;I.mallocDebug.total=0,I.mod._mallocDebug=A=>{const g=E(A+4);return I.HEAP8[g+A]=18,I.HEAP8[g+A+1]=52,I.HEAP8[g+A+2]=86,I.HEAP8[g+A+3]=120,I.mallocDebug.his.push([g,A]),I.mallocDebug.ptr[g]=A,I.mallocDebug.total+=A,g},I.mod._freeDebug=A=>{const g=I.mallocDebug.his.pop(),B=g[0],C=g[1];A!==B&&console.log(`pos=${A} oldPos=${B}`);const Q=I.HEAP8[B+C]+(I.HEAP8[B+C+1]<<8)+(I.HEAP8[B+C+2]<<16)+(I.HEAP8[B+C+3]<<24);2018915346!==Q&&console.log(`ERR=${B} v=${Q.toString(16)}`),i(A);const E=I.mallocDebug.ptr[A];0===E?console.log(`ERR ${A}`):(delete I.mallocDebug.ptr[A],I.mallocDebug.total-=E)},I.mallocDebug.enabled&&(I.mod._malloc=I.mod._mallocDebug,I.mod._free=I.mod._freeDebug)})();const g=I.mod._mclBn_init(A,Q.MCLBN_COMPILED_TIME_VAR);if(0!==g)throw new Error(`_mclBn_init err ${g}`)}},351(A,I,g){"use strict";var B=this&&this.__importDefault||function(A){return A&&A.__esModule?A:{default:A}};Object.defineProperty(I,"__esModule",{value:!0}),I.recoverG2=I.recoverG1=I.recoverFr=I.shareG2=I.shareG1=I.shareFr=I.finalExp=I.precomputedMillerLoop2mixed=I.precomputedMillerLoop2=I.precomputedMillerLoop=I.millerLoop=I.pairing=I.hashAndMapToG2=I.hashAndMapToG1=I.hashToFr=I.dbl=I.normalizeVec=I.invVec=I.invVecInPlace=I.mulVec=I.sub=I.add=I.normalize=I.squareRoot=I.inv=I.sqr=I.neg=I.PrecomputedG2=I.deserializeHexStrToGT=I.GT=I.deserializeHexStrToG2=I.G2=I.getBasePointG1=I.verifyOrderG2=I.verifyOrderG1=I.setMapToMode=I.setETHserialization=I.deserializeHexStrToG1=I.G1=I.deserializeHexStrToFp2=I.Fp2=I.deserializeHexStrToFp=I.Fp=I.deserializeHexStrToFr=I.Fr=void 0,I.mul=function(A,I){if(A instanceof U&&I instanceof U)return A._op2(C.mod._mclBnFp_mul,I);if(A instanceof o&&I instanceof o)return A._op2(C.mod._mclBnFr_mul,I);if(A instanceof F&&I instanceof o)return A._op2(C.mod._mclBnG1_mul,I);if(A instanceof H&&I instanceof o)return A._op2(C.mod._mclBnG2_mul,I);if(A instanceof R&&I instanceof R)return A._op2(C.mod._mclBnGT_mul,I);if(A instanceof G&&I instanceof G)return A._op2(C.mod._mclBnFp2_mul,I);throw new Error("mul:mismatch type")},I.div=function(A,I){if(A.constructor!==I.constructor)throw new Error("div:mismatch type");if(A instanceof U)return A._op2(C.mod._mclBnFp_div,I);if(A instanceof o)return A._op2(C.mod._mclBnFr_div,I);if(A instanceof R)return A._op2(C.mod._mclBnGT_div,I);if(A instanceof G)return A._op2(C.mod._mclBnFp2_div,I);throw new Error("div:bad type")},I.pow=function(A,I){if(A instanceof o){if(I instanceof o)return A._op2(C.mod._mclBnFr_pow,I);if("number"==typeof I||"bigint"==typeof I)return M(C.mod._mclBnFr_powArray,A,I)}if(A instanceof U){if(I instanceof U)return A._op2(C.mod._mclBnFp_pow,I);if("number"==typeof I||"bigint"==typeof I)return M(C.mod._mclBnFp_powArray,A,I)}if(A instanceof R&&I instanceof o)return A._op2(C.mod._mclBnGT_pow,I);throw new Error("pow:bad type")};const C=g(946),Q=g(31),E=B(g(211));class i{constructor(A){this.a_=new Uint32Array(A/4)}deserializeHexStr(A){this.deserialize((0,C.fromHexStr)(A))}serializeToHexStr(){return(0,C.toHexStr)(this.serialize())}dump(A=""){console.log(A+this.serializeToHexStr())}clear(){this.a_.fill(0)}copyToMem(A){C.HEAP32.set(this.a_,A/4)}copyFromMem(A){this.a_.set(C.HEAP32.subarray(A/4,A/4+this.a_.length))}_alloc(){return C.mod._malloc(4*this.a_.length)}_salloc(){return(0,C.stackAlloc)(4*this.a_.length)}_allocAndCopy(){const A=this._alloc();return C.HEAP32.set(this.a_,A/4),A}_sallocAndCopy(){const A=this._salloc();return C.HEAP32.set(this.a_,A/4),A}_save(A){this.a_.set(C.HEAP32.subarray(A/4,A/4+this.a_.length))}_saveAndFree(A){this._save(A),C.mod._free(A)}_setter(A,...I){const g=(0,C.stackSave)(),B=this._salloc(),Q=A(B,...I);if(this._save(B),(0,C.stackRestore)(g),void 0!==Q&&0!==Q)throw new Error("_setter err")}_getter(A,...I){const g=(0,C.stackSave)(),B=A(this._sallocAndCopy(),...I);return(0,C.stackRestore)(g),B}_isEqual(A,I){const g=(0,C.stackSave)(),B=A(this._sallocAndCopy(),I._sallocAndCopy());return(0,C.stackRestore)(g),1===B}_op1(A){const I=new this.constructor,g=(0,C.stackSave)(),B=this._sallocAndCopy(),Q=I._salloc();return A(Q,B),I._save(Q),(0,C.stackRestore)(g),I}_op2(A,I,g=null){const B=null!==g?new g:new this.constructor,Q=(0,C.stackSave)(),E=this._sallocAndCopy(),i=I._sallocAndCopy(),D=B._salloc();return A(D,E,i),B._save(D),(0,C.stackRestore)(Q),B}_squareRoot(A){const I=new this.constructor,g=(0,C.stackSave)(),B=this._sallocAndCopy(),Q=I._salloc(),E=A(Q,B);return I._save(Q),(0,C.stackRestore)(g),0===E?[!0,I]:[!1,null]}_getSubArray(A,I){const g=this.a_.length/I;return new Uint32Array(new Uint32Array(this.a_.buffer,g*A*4,g))}_setSubArray(A,I,g){const B=this.a_.length/g;this.a_.set(A.a_,B*I)}}class D extends i{}const w=A=>{const I=new(0,A.constructor);return I.a_.set(A.a_),I};class o extends D{constructor(){super(Q.MCLBN_FR_SIZE)}clone(){return w(this)}setInt(A){this._setter(C.mod._mclBnFr_setInt32,A)}deserialize(A){this._setter(C.mod.mclBnFr_deserialize,A)}serialize(){return this._getter(C.mod.mclBnFr_serialize)}setStr(A,I=0){this._setter(C.mod.mclBnFr_setStr,A,I)}getStr(A=0){return this._getter(C.mod.mclBnFr_getStr,A)}isZero(){return 1===this._getter(C.mod._mclBnFr_isZero)}isOne(){return 1===this._getter(C.mod._mclBnFr_isOne)}isEqual(A){return this._isEqual(C.mod._mclBnFr_isEqual,A)}setLittleEndian(A){this._setter(C.mod.mclBnFr_setLittleEndian,A)}setLittleEndianMod(A){this._setter(C.mod.mclBnFr_setLittleEndianMod,A)}setBigEndianMod(A){this._setter(C.mod.mclBnFr_setBigEndianMod,A)}setByCSPRNG(){const A=new Uint8Array(Q.MCLBN_FR_SIZE);(0,E.default)(A),this.setLittleEndian(A)}setHashOf(A){this._setter(C.mod.mclBnFr_setHashOf,A)}}I.Fr=o,I.deserializeHexStrToFr=A=>{const I=new o;return I.deserializeHexStr(A),I};class U extends D{constructor(){super(Q.MCLBN_FP_SIZE)}clone(){return w(this)}setInt(A){this._setter(C.mod._mclBnFp_setInt32,A)}deserialize(A){this._setter(C.mod.mclBnFp_deserialize,A)}serialize(){return this._getter(C.mod.mclBnFp_serialize)}setStr(A,I=0){this._setter(C.mod.mclBnFp_setStr,A,I)}getStr(A=0){return this._getter(C.mod.mclBnFp_getStr,A)}isOne(){return 1===this._getter(C.mod._mclBnFp_isOne)}isZero(){return 1===this._getter(C.mod._mclBnFp_isZero)}isEqual(A){return this._isEqual(C.mod._mclBnFp_isEqual,A)}setLittleEndian(A){this._setter(C.mod.mclBnFp_setLittleEndian,A)}setLittleEndianMod(A){this._setter(C.mod.mclBnFp_setLittleEndianMod,A)}setBigEndianMod(A){this._setter(C.mod.mclBnFp_setBigEndianMod,A)}setByCSPRNG(){const A=new Uint8Array(Q.MCLBN_FP_SIZE);(0,E.default)(A),this.setLittleEndian(A)}setHashOf(A){this._setter(C.mod.mclBnFp_setHashOf,A)}mapToG1(){const A=new F,I=(0,C.stackSave)(),g=this._sallocAndCopy(),B=A._salloc();return C.mod._mclBnFp_mapToG1(B,g),A._save(B),(0,C.stackRestore)(I),A}}I.Fp=U,I.deserializeHexStrToFp=A=>{const I=new U;return I.deserializeHexStr(A),I};class G extends i{constructor(){super(2*Q.MCLBN_FP_SIZE)}clone(){return w(this)}setInt(A,I){const g=new U;g.setInt(A),this.set_a(g),g.setInt(I),this.set_b(g)}deserialize(A){this._setter(C.mod.mclBnFp2_deserialize,A)}serialize(){return this._getter(C.mod.mclBnFp2_serialize)}getStr(A=0){return this.get_a().getStr(A)+" "+this.get_b().getStr(A)}setStr(A,I=0){const g=A.split(" ");if(2!==g.length)throw new Error("bad str");const B=new U;B.setStr(g[0],I),this.set_a(B),B.setStr(g[1],I),this.set_b(B)}isEqual(A){return this._isEqual(C.mod._mclBnFp2_isEqual,A)}isZero(){return 1===this._getter(C.mod._mclBnFp2_isZero)}isOne(){return 1===this._getter(C.mod._mclBnFp2_isOne)}setHashOf(A){throw new Error("Fp2.setHashOf is not supported")}get_a(){const A=new U;return A.a_=this._getSubArray(0,2),A}get_b(){const A=new U;return A.a_=this._getSubArray(1,2),A}set_a(A){this._setSubArray(A,0,2)}set_b(A){this._setSubArray(A,1,2)}mapToG2(){const A=new H,I=(0,C.stackSave)(),g=this._sallocAndCopy(),B=A._salloc();return C.mod._mclBnFp2_mapToG2(B,g),A._save(B),(0,C.stackRestore)(I),A}}I.Fp2=G,I.deserializeHexStrToFp2=A=>{const I=new G;return I.deserializeHexStr(A),I};class N extends i{}class F extends N{constructor(){super(Q.MCLBN_G1_SIZE)}clone(){return w(this)}deserialize(A){this._setter(C.mod.mclBnG1_deserialize,A)}serialize(){return this._getter(C.mod.mclBnG1_serialize)}setStr(A,I=0){this._setter(C.mod.mclBnG1_setStr,A,I)}getStr(A=0){return this._getter(C.mod.mclBnG1_getStr,A)}normalize(){this.a_=(0,I.normalize)(this).a_}getX(){const A=new U;return A.a_=this._getSubArray(0,3),A}getY(){const A=new U;return A.a_=this._getSubArray(1,3),A}getZ(){const A=new U;return A.a_=this._getSubArray(2,3),A}setX(A){this._setSubArray(A,0,3)}setY(A){this._setSubArray(A,1,3)}setZ(A){this._setSubArray(A,2,3)}isZero(){return 1===this._getter(C.mod._mclBnG1_isZero)}isValid(){return 1===this._getter(C.mod._mclBnG1_isValid)}isValidOrder(){return 1===this._getter(C.mod._mclBnG1_isValidOrder)}isEqual(A){return this._isEqual(C.mod._mclBnG1_isEqual,A)}setHashOf(A){this._setter(C.mod.mclBnG1_hashAndMapTo,A)}}I.G1=F,I.deserializeHexStrToG1=A=>{const I=new F;return I.deserializeHexStr(A),I},I.setETHserialization=A=>{C.mod._mclBn_setETHserialization(A?1:0)},I.setMapToMode=A=>{C.mod._mclBn_setMapToMode(A)},I.verifyOrderG1=A=>{C.mod._mclBn_verifyOrderG1(A?1:0)},I.verifyOrderG2=A=>{C.mod._mclBn_verifyOrderG2(A?1:0)},I.getBasePointG1=()=>{const A=new F,I=(0,C.stackSave)(),g=A._salloc();if(C.mod._mclBnG1_getBasePoint(g),A._save(g),(0,C.stackRestore)(I),A.isZero())throw new Error("not supported for pairing curves");return A};class H extends N{constructor(){super(Q.MCLBN_G2_SIZE)}clone(){return w(this)}deserialize(A){this._setter(C.mod.mclBnG2_deserialize,A)}serialize(){return this._getter(C.mod.mclBnG2_serialize)}setStr(A,I=0){this._setter(C.mod.mclBnG2_setStr,A,I)}getStr(A=0){return this._getter(C.mod.mclBnG2_getStr,A)}normalize(){this.a_=(0,I.normalize)(this).a_}getX(){const A=new G;return A.a_=this._getSubArray(0,3),A}getY(){const A=new G;return A.a_=this._getSubArray(1,3),A}getZ(){const A=new G;return A.a_=this._getSubArray(2,3),A}setX(A){this._setSubArray(A,0,3)}setY(A){this._setSubArray(A,1,3)}setZ(A){this._setSubArray(A,2,3)}isZero(){return 1===this._getter(C.mod._mclBnG2_isZero)}isValid(){return 1===this._getter(C.mod._mclBnG2_isValid)}isValidOrder(){return 1===this._getter(C.mod._mclBnG2_isValidOrder)}isEqual(A){return this._isEqual(C.mod._mclBnG2_isEqual,A)}setHashOf(A){this._setter(C.mod.mclBnG2_hashAndMapTo,A)}}I.G2=H,I.deserializeHexStrToG2=A=>{const I=new H;return I.deserializeHexStr(A),I};class R extends i{constructor(){super(Q.MCLBN_GT_SIZE)}clone(){return w(this)}setInt(A){this._setter(C.mod._mclBnGT_setInt32,A)}deserialize(A){this._setter(C.mod.mclBnGT_deserialize,A)}serialize(){return this._getter(C.mod.mclBnGT_serialize)}setStr(A,I=0){this._setter(C.mod.mclBnGT_setStr,A,I)}getStr(A=0){return this._getter(C.mod.mclBnGT_getStr,A)}isZero(){return 1===this._getter(C.mod._mclBnGT_isZero)}isOne(){return 1===this._getter(C.mod._mclBnGT_isOne)}isEqual(A){return this._isEqual(C.mod._mclBnGT_isEqual,A)}setHashOf(A){throw new Error("GT.setHashOf is not supported")}}I.GT=R,I.deserializeHexStrToGT=A=>{const I=new R;return I.deserializeHexStr(A),I};class h{constructor(A){if(!(A instanceof H))throw new Error("PrecomputedG2:bad type");const I=8*C.mod._mclBn_getUint64NumToPrecompute();this.p=C.mod._malloc(I);const g=(0,C.stackSave)(),B=A._sallocAndCopy();C.mod._mclBn_precomputeG2(this.p,B),(0,C.stackRestore)(g)}destroy(){null!=this.p&&C.mod._free(this.p),this.p=null}}function J(A){if(0===A.length)throw new Error("zero size array");const I=4*A[0].a_.length,g=(0,C.stackAlloc)(I*A.length);for(let B=0;B<A.length;B++)A[B].copyToMem(g+I*B);return g}I.PrecomputedG2=h,I.neg=A=>{if(A instanceof o)return A._op1(C.mod._mclBnFr_neg);if(A instanceof U)return A._op1(C.mod._mclBnFp_neg);if(A instanceof F)return A._op1(C.mod._mclBnG1_neg);if(A instanceof H)return A._op1(C.mod._mclBnG2_neg);if(A instanceof R)return A._op1(C.mod._mclBnGT_neg);if(A instanceof G)return A._op1(C.mod._mclBnFp2_neg);throw new Error("neg:bad type")},I.sqr=A=>{if(A instanceof U)return A._op1(C.mod._mclBnFp_sqr);if(A instanceof o)return A._op1(C.mod._mclBnFr_sqr);if(A instanceof R)return A._op1(C.mod._mclBnGT_sqr);if(A instanceof G)return A._op1(C.mod._mclBnFp2_sqr);throw new Error("sqr:bad type")},I.inv=A=>{if(A instanceof U)return A._op1(C.mod._mclBnFp_inv);if(A instanceof o)return A._op1(C.mod._mclBnFr_inv);if(A instanceof R)return A._op1(C.mod._mclBnGT_inv);if(A instanceof G)return A._op1(C.mod._mclBnFp2_inv);throw new Error("inv:bad type")},I.squareRoot=A=>{if(A instanceof U)return A._squareRoot(C.mod._mclBnFp_squareRoot);if(A instanceof o)return A._squareRoot(C.mod._mclBnFr_squareRoot);if(A instanceof G)return A._squareRoot(C.mod._mclBnFp2_squareRoot);throw new Error("squareRoot:bad type")},I.normalize=A=>{if(A instanceof F)return A._op1(C.mod._mclBnG1_normalize);if(A instanceof H)return A._op1(C.mod._mclBnG2_normalize);throw new Error("normalize:bad type")},I.add=(A,I)=>{if(A.constructor!==I.constructor)throw new Error("add:mismatch type");if(A instanceof U)return A._op2(C.mod._mclBnFp_add,I);if(A instanceof o)return A._op2(C.mod._mclBnFr_add,I);if(A instanceof F)return A._op2(C.mod._mclBnG1_add,I);if(A instanceof H)return A._op2(C.mod._mclBnG2_add,I);if(A instanceof R)return A._op2(C.mod._mclBnGT_add,I);if(A instanceof G)return A._op2(C.mod._mclBnFp2_add,I);throw new Error("add:bad type")},I.sub=(A,I)=>{if(A.constructor!==I.constructor)throw new Error("sub:mismatch type");if(A instanceof U)return A._op2(C.mod._mclBnFp_sub,I);if(A instanceof o)return A._op2(C.mod._mclBnFr_sub,I);if(A instanceof F)return A._op2(C.mod._mclBnG1_sub,I);if(A instanceof H)return A._op2(C.mod._mclBnG2_sub,I);if(A instanceof R)return A._op2(C.mod._mclBnGT_sub,I);if(A instanceof G)return A._op2(C.mod._mclBnFp2_sub,I);throw new Error("sub:bad type")};const S=(A,I,g,B)=>{const Q=I.length,E=new B,i=(0,C.stackSave)(),D=E._salloc();return A(D,J(I),J(g),Q),E._save(D),(0,C.stackRestore)(i),E};I.mulVec=(A,I)=>{const g=A.length;if(0===g)throw new Error("mulVec:zero array");if(g!==I.length)throw new Error(`err _mulVec bad length ${g}, ${I.length}`);if(A[0]instanceof F&&I[0]instanceof o)return S(C.mod._mclBnG1_mulVec,A,I,F);if(A[0]instanceof H&&I[0]instanceof o)return S(C.mod._mclBnG2_mulVec,A,I,H);throw new Error("mulVec:mismatch type")};const y=(A,I,g)=>{const B=g.length,Q=(0,C.stackSave)(),E=J(g);A(E,E,B),function(A,I){if(0===A.length)throw new Error("zero size array");const g=4*A[0].a_.length;for(let B=0;B<A.length;B++)A[B].copyFromMem(I+g*B)}(I,E),(0,C.stackRestore)(Q)};I.invVecInPlace=A=>{if(0!==A.length)if(A[0]instanceof o)y(C.mod._mclBnFr_invVec,A,A);else{if(!(A[0]instanceof U))throw new Error("invVec: bad type");y(C.mod._mclBnFp_invVec,A,A)}},I.invVec=A=>{const I=A.length;if(0===I)return[];const g=A[0].constructor,B=Array.from({length:I},A=>new g);if(A[0]instanceof o)return y(C.mod._mclBnFr_invVec,B,A),B;if(A[0]instanceof U)return y(C.mod._mclBnFp_invVec,B,A),B;throw new Error("invVec: bad type")},I.normalizeVec=A=>{if(0!==A.length)if(A[0]instanceof F)y(C.mod._mclBnG1_normalizeVec,A,A);else{if(!(A[0]instanceof H))throw new Error("normalizeVec: bad type");y(C.mod._mclBnG2_normalizeVec,A,A)}},I.dbl=A=>{if(A instanceof F)return A._op1(C.mod._mclBnG1_dbl);if(A instanceof H)return A._op1(C.mod._mclBnG2_dbl);throw new Error("dbl:bad type")},I.hashToFr=A=>{const I=new o;return I.setHashOf(A),I},I.hashAndMapToG1=A=>{const I=new F;return I.setHashOf(A),I},I.hashAndMapToG2=A=>{const I=new H;return I.setHashOf(A),I};const M=(A,I,g)=>{const B=new(0,I.constructor),Q=(A=>{let I="number"==typeof A?BigInt(A):A;if(I<0n)throw new Error("IntToArray: negative value");if(0n===I)return new Uint8Array(1);const g=[];for(;0n!==I;)g.push(Number(BigInt.asUintN(8,I))),I>>=8n;return new Uint8Array(g)})(g.valueOf()),E=(0,C.stackSave)(),i=B._salloc(),D=I._sallocAndCopy(),w=(0,C.stackAlloc)(Q.length);C.HEAP8.set(Q,w);const o=A(i,D,w,Q.length);if(B._save(i),(0,C.stackRestore)(E),o<0)throw new Error("powArray err");return B};function k(A,I,g,B){const Q=new A,E=(0,C.stackSave)(),i=Q._salloc(),D=J(g),w=B._sallocAndCopy();return I(i,D,g.length,w),Q._save(i),(0,C.stackRestore)(E),Q}function a(A,I,g,B){const Q=B.length;if(Q!==g.length)throw new Error("recover:bad length");const E=new A,i=(0,C.stackSave)(),D=E._salloc(),w=I(D,J(g),J(B),Q);if(E._save(D),(0,C.stackRestore)(i),0!==w)throw new Error("callRecover");return E}I.pairing=(A,I)=>{if(A instanceof F&&I instanceof H)return A._op2(C.mod._mclBn_pairing,I,R);throw new Error("exports.pairing:bad type")},I.millerLoop=(A,I)=>{if(A instanceof F&&I instanceof H)return A._op2(C.mod._mclBn_millerLoop,I,R);throw new Error("exports.millerLoop:bad type")},I.precomputedMillerLoop=(A,I)=>{if(!(A instanceof F&&I instanceof h))throw new Error("exports.precomputedMillerLoop:bad type");const g=new R,B=(0,C.stackSave)(),Q=A._sallocAndCopy(),E=g._salloc();return C.mod._mclBn_precomputedMillerLoop(E,Q,I.p),g._save(E),(0,C.stackRestore)(B),g},I.precomputedMillerLoop2=(A,I,g,B)=>{if(!(A instanceof F&&I instanceof h&&g instanceof F&&B instanceof h))throw new Error("exports.precomputedMillerLoop2mixed:bad type");const Q=new R,E=(0,C.stackSave)(),i=A._sallocAndCopy(),D=g._sallocAndCopy(),w=Q._salloc();return C.mod._mclBn_precomputedMillerLoop2(w,i,I.p,D,B.p),Q._save(w),(0,C.stackRestore)(E),Q},I.precomputedMillerLoop2mixed=(A,I,g,B)=>{if(!(A instanceof F&&I instanceof H&&g instanceof F&&B instanceof h))throw new Error("exports.precomputedMillerLoop2mixed:bad type");const Q=new R,E=(0,C.stackSave)(),i=A._sallocAndCopy(),D=I._sallocAndCopy(),w=g._sallocAndCopy(),o=Q._salloc();return C.mod._mclBn_precomputedMillerLoop2mixed(o,i,D,w,B.p),Q._save(o),(0,C.stackRestore)(E),Q},I.finalExp=A=>{if(A instanceof R)return A._op1(C.mod._mclBn_finalExp);throw new Error("finalExp:bad type")},I.shareFr=(A,I)=>k(o,C.mod._mclBn_FrEvaluatePolynomial,A,I),I.shareG1=(A,I)=>k(F,C.mod._mclBn_G1EvaluatePolynomial,A,I),I.shareG2=(A,I)=>k(H,C.mod._mclBn_G2EvaluatePolynomial,A,I),I.recoverFr=(A,I)=>a(o,C.mod._mclBn_FrLagrangeInterpolation,A,I),I.recoverG1=(A,I)=>a(F,C.mod._mclBn_G1LagrangeInterpolation,A,I),I.recoverG2=(A,I)=>a(H,C.mod._mclBn_G2LagrangeInterpolation,A,I)},358(A){A.exports=function(A){const I=Uint8Array.from(atob("AGFzbQEAAAABdBBgBH9/f38AYAJ/fwBgA39/fwBgAX8AYAF/AX9gA39/fwF/YAR/f39/AX9gAn9/AX9gBn9/f39/fwF/YAV/f39/fwBgAAF/YAV/f39/fwF/YAZ/f39/f38AYAp/f39/f39/f39/AGAHf39/f39/fwF/YAAAAg8BA2VudgZtZW1vcnkCABED4ATeBA8KBAMCBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQICAgICAgEBAQEBAQgICQUCAQACBgYGCAEBBQECAgICAgEBAQEBAQAACwABAQICAQYLAQYBDAgMDAcCAQMEAgACAgIBBgAAAgIAAAACAgACAgAAAAEDBAACAgIBBgAAAgIAAAACAgACAgAAAAEDBAACAgIBBgAAAgIAAAACAgACAgAAAAMEAAICAgEGAAACAgAAAAICAAICAAAAAQMEAAICAgEGAAACAgAAAAICAAICAAAAAQMEAAICAgEGAAACAgAAAAICAAICAAAAAAkCAgAACQAAAAAAAAAAAAIAAgkGAAECBwcABwIEBwEBAQcEBAkBAgEAAgYAAwkAAgIJBwYABAEBBQgCAwMBAgIADQEBAQEBBAMCAwIDAQIBAQEAAgkHAQEAAQcBAgEBAQgBAg4IAAIODQINCgcKCgoKCgoHAgcDCgQHBwMBBgAFAgUABQUFBAcEBAQEBwUGAAUBAQECAgICAQEBAgICAgEBAQICAgIHAAcHAwYAAAQFBAUEBwQEBQsGAAAFAQEBAgICAgYABQAEBQQHBAQFCwYAAAUBAQECAgICAwEGAAUHBwQEBAYABQEBAQECAgICAgIAAAAAAAYCAgECAAkJCQoBAgkJBgYGBgYGBgMDAQYGBQUDBQUFBQQHBAQEBwUHBQUDBwQEBwQCAgYGBQUCAgQHAXABmAKYAgYQAn8BQYCBwgALfwBBkIsBCwe4HLcBEV9fd2FzbV9jYWxsX2N0b3JzAAAPX19zdGFja19wb2ludGVyAwAQbWNsQm5fZ2V0VmVyc2lvbgCaAwptY2xCbl9pbml0AJsDEm1jbEJuX2dldEN1cnZlVHlwZQCcAxNtY2xCbl9nZXRPcFVuaXRTaXplAJ0DE21jbEJuX2dldEcxQnl0ZVNpemUAngMTbWNsQm5fZ2V0RzJCeXRlU2l6ZQCfAxNtY2xCbl9nZXRGckJ5dGVTaXplAKADE21jbEJuX2dldEZwQnl0ZVNpemUAoQMTbWNsQm5fZ2V0Q3VydmVPcmRlcgCiAxNtY2xCbl9nZXRGaWVsZE9yZGVyAKQDGW1jbEJuX3NldEVUSHNlcmlhbGl6YXRpb24ApQMZbWNsQm5fZ2V0RVRIc2VyaWFsaXphdGlvbgCmAxJtY2xCbl9zZXRNYXBUb01vZGUApwMObWNsQm5HMV9zZXREc3QAqAMObWNsQm5HMl9zZXREc3QAqQMNbWNsQm5Gcl9jbGVhcgCqAw5tY2xCbkZyX3NldEludACrAxBtY2xCbkZyX3NldEludDMyAKsDDm1jbEJuRnJfc2V0U3RyAKwDF21jbEJuRnJfc2V0TGl0dGxlRW5kaWFuAK4DF21jbEJuRnJfc2V0QmlnRW5kaWFuTW9kALADF21jbEJuRnJfZ2V0TGl0dGxlRW5kaWFuALIDGm1jbEJuRnJfc2V0TGl0dGxlRW5kaWFuTW9kALMDE21jbEJuRnJfZGVzZXJpYWxpemUAtAMPbWNsQm5Gcl9pc1ZhbGlkALUDD21jbEJuRnJfaXNFcXVhbAC2Aw5tY2xCbkZyX2lzWmVybwC3Aw1tY2xCbkZyX2lzT25lALgDDW1jbEJuRnJfaXNPZGQAuQMSbWNsQm5Gcl9pc05lZ2F0aXZlALoDC21jbEJuRnJfY21wALsDEW1jbEJuRnJfc2V0SGFzaE9mALwDDm1jbEJuRnJfZ2V0U3RyAL0DEW1jbEJuRnJfc2VyaWFsaXplAL8DC21jbEJuRnJfbmVnAMADC21jbEJuRnJfaW52AMEDC21jbEJuRnJfc3FyAMIDC21jbEJuRnJfYWRkAMMDC21jbEJuRnJfc3ViAMQDC21jbEJuRnJfbXVsAMUDC21jbEJuRnJfZGl2AMYDC21jbEJuRnBfbmVnAMcDC21jbEJuRnBfaW52AMgDC21jbEJuRnBfc3FyAMkDC21jbEJuRnBfYWRkAMoDC21jbEJuRnBfc3ViAMsDC21jbEJuRnBfbXVsAMwDC21jbEJuRnBfZGl2AM0DDG1jbEJuRnAyX25lZwDOAwxtY2xCbkZwMl9pbnYAzwMMbWNsQm5GcDJfc3FyANADDG1jbEJuRnAyX2FkZADRAwxtY2xCbkZwMl9zdWIA0gMMbWNsQm5GcDJfbXVsANMDDG1jbEJuRnAyX2RpdgDUAxJtY2xCbkZyX3NxdWFyZVJvb3QA1QMSbWNsQm5GcF9zcXVhcmVSb290ANcDE21jbEJuRnAyX3NxdWFyZVJvb3QA2AMNbWNsQm5HMV9jbGVhcgDZAw5tY2xCbkcxX3NldFN0cgDaAxNtY2xCbkcxX2Rlc2VyaWFsaXplAOADD21jbEJuRzFfaXNWYWxpZADhAw9tY2xCbkcxX2lzRXF1YWwA4gMObWNsQm5HMV9pc1plcm8A4wMUbWNsQm5HMV9pc1ZhbGlkT3JkZXIA5AMUbWNsQm5HMV9oYXNoQW5kTWFwVG8A5QMbbWNsQm5HMV9oYXNoQW5kTWFwVG9XaXRoRHN0AOYDDm1jbEJuRzFfZ2V0U3RyAOcDEW1jbEJuRzFfc2VyaWFsaXplAOoDC21jbEJuRzFfbmVnAOsDC21jbEJuRzFfZGJsAOwDEW1jbEJuRzFfbm9ybWFsaXplAO0DC21jbEJuRzFfYWRkAO4DC21jbEJuRzFfc3ViAO8DC21jbEJuRzFfbXVsAPADDW1jbEJuRzFfbXVsQ1QA8QMNbWNsQm5HMl9jbGVhcgDbAg5tY2xCbkcyX3NldFN0cgDyAxNtY2xCbkcyX2Rlc2VyaWFsaXplAPcDD21jbEJuRzJfaXNWYWxpZAD4Aw9tY2xCbkcyX2lzRXF1YWwA+QMObWNsQm5HMl9pc1plcm8A+gMUbWNsQm5HMl9pc1ZhbGlkT3JkZXIA+wMUbWNsQm5HMl9oYXNoQW5kTWFwVG8A/AMbbWNsQm5HMl9oYXNoQW5kTWFwVG9XaXRoRHN0AP0DDm1jbEJuRzJfZ2V0U3RyAP4DEW1jbEJuRzJfc2VyaWFsaXplAIEEC21jbEJuRzJfbmVnAIIEC21jbEJuRzJfZGJsAIMEEW1jbEJuRzJfbm9ybWFsaXplAIQEC21jbEJuRzJfYWRkAIUEC21jbEJuRzJfc3ViAIYEC21jbEJuRzJfbXVsAIcEDW1jbEJuRzJfbXVsQ1QAiAQNbWNsQm5HVF9jbGVhcgCJBA5tY2xCbkdUX3NldEludACKBBBtY2xCbkdUX3NldEludDMyAIoEDm1jbEJuR1Rfc2V0U3RyAIsEE21jbEJuR1RfZGVzZXJpYWxpemUAjQQPbWNsQm5HVF9pc0VxdWFsAI4EDm1jbEJuR1RfaXNaZXJvAJAEDW1jbEJuR1RfaXNPbmUAkQQPbWNsQm5HVF9pc1ZhbGlkAJIEDm1jbEJuR1RfZ2V0U3RyAJMEEW1jbEJuR1Rfc2VyaWFsaXplAJUEC21jbEJuR1RfbmVnAJYEC21jbEJuR1RfaW52AJcEEm1jbEJuR1RfaW52R2VuZXJpYwCYBAttY2xCbkdUX3NxcgCZBAttY2xCbkdUX2FkZACaBAttY2xCbkdUX3N1YgCbBAttY2xCbkdUX211bACcBAttY2xCbkdUX2RpdgCdBAttY2xCbkdUX3BvdwCeBBJtY2xCbkdUX3Bvd0dlbmVyaWMAnwQObWNsQm5HMV9tdWxWZWMAoAQObWNsQm5HMl9tdWxWZWMAogQObWNsQm5HVF9wb3dWZWMApAQPbWNsQm5HMV9tdWxFYWNoAKYEDW1jbEJuX3BhaXJpbmcApwQObWNsQm5fZmluYWxFeHAAqAQQbWNsQm5fbWlsbGVyTG9vcACpBBNtY2xCbl9taWxsZXJMb29wVmVjAKoEFW1jbEJuX21pbGxlckxvb3BWZWNNVACrBBBtY2xCbkcxX211bFZlY01UAKwEEG1jbEJuRzJfbXVsVmVjTVQArQQebWNsQm5fZ2V0VWludDY0TnVtVG9QcmVjb21wdXRlAK4EEm1jbEJuX3ByZWNvbXB1dGVHMgCvBBttY2xCbl9wcmVjb21wdXRlZE1pbGxlckxvb3AAsAQcbWNsQm5fcHJlY29tcHV0ZWRNaWxsZXJMb29wMgCxBCFtY2xCbl9wcmVjb21wdXRlZE1pbGxlckxvb3AybWl4ZWQAsgQdbWNsQm5fRnJMYWdyYW5nZUludGVycG9sYXRpb24AswQdbWNsQm5fRzFMYWdyYW5nZUludGVycG9sYXRpb24AtQQdbWNsQm5fRzJMYWdyYW5nZUludGVycG9sYXRpb24AtgQabWNsQm5fRnJFdmFsdWF0ZVBvbHlub21pYWwAtwQabWNsQm5fRzFFdmFsdWF0ZVBvbHlub21pYWwAuAQabWNsQm5fRzJFdmFsdWF0ZVBvbHlub21pYWwAuQQTbWNsQm5fdmVyaWZ5T3JkZXJHMQC6BBNtY2xCbl92ZXJpZnlPcmRlckcyALsEDm1jbEJuRnBfc2V0SW50ALwEEG1jbEJuRnBfc2V0SW50MzIAvAQObWNsQm5GcF9nZXRTdHIAvQQObWNsQm5GcF9zZXRTdHIAvgQTbWNsQm5GcF9kZXNlcmlhbGl6ZQC/BBFtY2xCbkZwX3NlcmlhbGl6ZQDABA1tY2xCbkZwX2NsZWFyAMEEF21jbEJuRnBfc2V0TGl0dGxlRW5kaWFuAMIEGm1jbEJuRnBfc2V0TGl0dGxlRW5kaWFuTW9kAMMEF21jbEJuRnBfc2V0QmlnRW5kaWFuTW9kAMQEF21jbEJuRnBfZ2V0TGl0dGxlRW5kaWFuAMUED21jbEJuRnBfaXNWYWxpZADGBA9tY2xCbkZwX2lzRXF1YWwAxwQObWNsQm5GcF9pc1plcm8AyAQNbWNsQm5GcF9pc09uZQDJBA1tY2xCbkZwX2lzT2RkAMoEEm1jbEJuRnBfaXNOZWdhdGl2ZQDdAwttY2xCbkZwX2NtcADLBBFtY2xCbkZwX3NldEhhc2hPZgDMBA9tY2xCbkZwX21hcFRvRzEAzQQUbWNsQm5GcDJfZGVzZXJpYWxpemUAzgQSbWNsQm5GcDJfc2VyaWFsaXplAM8EDm1jbEJuRnAyX2NsZWFyANAEEG1jbEJuRnAyX2lzRXF1YWwA0QQPbWNsQm5GcDJfaXNaZXJvANIEDm1jbEJuRnAyX2lzT25lANMEEG1jbEJuRnAyX21hcFRvRzIA1AQUbWNsQm5HMV9nZXRCYXNlUG9pbnQA1QQLbWNsQm5Gcl9wb3cA1gQLbWNsQm5GcF9wb3cA1wQQbWNsQm5Gcl9wb3dBcnJheQDYBBBtY2xCbkZwX3Bvd0FycmF5ANkEDm1jbEJuRnJfaW52VmVjANoEDm1jbEJuRnBfaW52VmVjANsEFG1jbEJuRzFfbm9ybWFsaXplVmVjANwEFG1jbEJuRzJfbm9ybWFsaXplVmVjAN0EBm1hbGxvYwDkAgRmcmVlAOoCFl9aTjNtY2w2RnA2RGJsNm11bFByZUUDAQlzdGFja1NhdmUAAQpzdGFja0FsbG9jAAIMc3RhY2tSZXN0b3JlAAMJwwMBAEEBC5cCU1RVVldYWVpbXF1eX2BhYnN2dZMBlgGeAZ8BoAGiAaMBpAGlAaYBKwwnCKcBaWOoAakBqgGrAawBrQGuAa8BsAGx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