From 80a13492c45a557529389546d007329d39f400fd Mon Sep 17 00:00:00 2001 From: Alden Torres Date: Fri, 17 Feb 2023 20:25:42 -0500 Subject: [PATCH] updating to voprf draft v20 (#93) --- LICENSE | 2 +- README.md | 43 +- bindings/js/README.md | 40 +- bindings/js/libecc-post.js | 81 +++- bindings/js/libecc.js | 2 +- bindings/js/opaque.test.js | 15 +- bindings/js/oprf.js | 30 +- bindings/js/oprf.test.js | 50 +- .../java/org/ssohub/crypto/ecc/libecc.java | 81 +++- bindings/jvm/src/main/java/overview.html | 55 ++- .../java/org/ssohub/crypto/ecc/OprfTest.java | 20 +- .../ssohub/crypto/ecc/opaque/OpaqueTest.java | 12 +- bindings/python/src/libecc/libecc.py | 81 +++- src/voprf.c | 41 +- src/voprf.h | 69 ++- test/data/opaque/ristretto255_sha512.json | 430 +++++++++++++----- test/data/voprf/ristretto255_sha512_oprf.json | 14 +- .../data/voprf/ristretto255_sha512_poprf.json | 20 +- .../data/voprf/ristretto255_sha512_voprf.json | 20 +- test/test_voprf.c | 4 +- 20 files changed, 747 insertions(+), 363 deletions(-) diff --git a/LICENSE b/LICENSE index 5c0d451f..0687d05e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2021-2022 Alden Torres +Copyright (c) 2021-2023 Alden Torres Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 2f0fb727..869ef57c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ecc +# elliptic-curve cryptography [![macOS](https://github.com/aldenml/ecc/actions/workflows/macos.yml/badge.svg?branch=master)](https://github.com/aldenml/ecc/actions/workflows/macos.yml) [![Linux](https://github.com/aldenml/ecc/actions/workflows/linux.yml/badge.svg?branch=master)](https://github.com/aldenml/ecc/actions/workflows/linux.yml) @@ -19,50 +19,53 @@ and [blst](https://github.com/supranational/blst). |------------|----------------------------------|---| | Java | [jvm/ecc](bindings/jvm) | [![maven](https://img.shields.io/maven-central/v/org.ssohub/ecc.svg?label=maven)](https://search.maven.org/search?q=g:%22org.ssohub%22%20AND%20a:%22ecc%22) | | Javascript | [js/ecc](bindings/js) | [![npm](https://img.shields.io/npm/v/@aldenml/ecc)](https://www.npmjs.com/package/@aldenml/ecc) | -| Python | [python/libecc](bindings/python) | [![PyPI version](https://badge.fury.io/py/libecc.svg)](https://badge.fury.io/py/libecc) | ### Features -- [OPRF](#oprf-oblivious-pseudo-random-functions-using-ristretto255) +- [OPRF](#oprf-oblivious-pseudo-random-functions) - [OPAQUE](#opaque-the-opaque-asymmetric-pake-protocol) - [Two-Round Threshold Schnorr Signatures with FROST](#two-round-threshold-schnorr-signatures-with-frost) - [Ethereum BLS Signature](#ethereum-bls-signature) - [BLS12-381 Pairing](#bls12-381-pairing) - [Proxy Re-Encryption (PRE)](#proxy-re-encryption-pre) -### OPRF Oblivious pseudo-random functions using ristretto255 +### OPRF Oblivious pseudo-random functions -This is an implementation of [draft-irtf-cfrg-voprf-16](https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-16) +This is an implementation of [draft-irtf-cfrg-voprf-20](https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-20) ciphersuite **OPRF(ristretto255, SHA-512)** using `libsodium`. -There are two variants in this protocol: a *base* mode and *verifiable* mode. In the -base mode, a client and server interact to compute `output = F(skS, input, info)`, -where `input` is the client's private input, `skS` is the server's private key, `info` -is the public input, and `output` is the computation output. The client learns `output` -and the server learns nothing. In the verifiable mode, the client also receives proof -that the server used `skS` in computing the function. +An Oblivious Pseudorandom Function (OPRF) is a two-party protocol between client +and server for computing the output of a Pseudorandom Function (PRF). The server +provides the PRF secret key, and the client provides the PRF input. At the end +of the protocol, the client learns the PRF output without learning anything +about the PRF secret key, and the server learns neither the PRF input nor +output. -The flow is shown below (from the IRTF draft): +There are two variations of the basic protocol: + +- VOPRF: is OPRF with the notion of verifiability. Clients can verify that the +server used a specific private key during the execution of the protocol. +- POPRF: is a partially-oblivious VOPRF that allows clients and servers to +provide public input to the PRF computation. + +The OPRF flow is shown below (from the IRTF draft): ``` - Client(input, info) Server(skS, info) - ---------------------------------------------------------------------- + Client(input) Server(skS) + ------------------------------------------------------------------- blind, blindedElement = Blind(input) blindedElement ----------> - evaluatedElement = Evaluate(skS, blindedElement, info) + evaluatedElement = BlindEvaluate(skS, blindedElement) evaluatedElement <---------- - output = Finalize(input, blind, evaluatedElement, blindedElement, info) + output = Finalize(input, blind, evaluatedElement) ``` -In the verifiable mode of the protocol, the server additionally -computes a proof in `Evaluate`. The client verifies this proof using -the server's expected public key before completing the protocol and -producing the protocol output. +For the advanced modes VOPRF and POPRF refer to the published draft. ### OPAQUE The OPAQUE Asymmetric PAKE Protocol diff --git a/bindings/js/README.md b/bindings/js/README.md index f35b7b53..6513a9e4 100644 --- a/bindings/js/README.md +++ b/bindings/js/README.md @@ -10,46 +10,50 @@ top to expose the cryptographic primitives. ### Features -- [OPRF](#oprf-oblivious-pseudo-random-functions-using-ristretto255) +- [OPRF](#oprf-oblivious-pseudo-random-functions) - [OPAQUE](#opaque-the-opaque-asymmetric-pake-protocol) - [Two-Round Threshold Schnorr Signatures with FROST](#two-round-threshold-schnorr-signatures-with-frost) - [Ethereum BLS Signature](#ethereum-bls-signature) - [BLS12-381 Pairing](#bls12-381-pairing) - [Proxy Re-Encryption (PRE)](#proxy-re-encryption-pre) -### OPRF Oblivious pseudo-random functions using ristretto255 +### OPRF Oblivious pseudo-random functions -This is an implementation of [draft-irtf-cfrg-voprf-16](https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-16) +This is an implementation of [draft-irtf-cfrg-voprf-20](https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-20) ciphersuite **OPRF(ristretto255, SHA-512)** using `libsodium`. -There are two variants in this protocol: a *base* mode and *verifiable* mode. In the -base mode, a client and server interact to compute `output = F(skS, input, info)`, -where `input` is the client's private input, `skS` is the server's private key, `info` -is the public input, and `output` is the computation output. The client learns `output` -and the server learns nothing. In the verifiable mode, the client also receives proof -that the server used `skS` in computing the function. +An Oblivious Pseudorandom Function (OPRF) is a two-party protocol between client +and server for computing the output of a Pseudorandom Function (PRF). The server +provides the PRF secret key, and the client provides the PRF input. At the end +of the protocol, the client learns the PRF output without learning anything +about the PRF secret key, and the server learns neither the PRF input nor +output. -The flow is shown below (from the irtf draft): +There are two variations of the basic protocol: + +- VOPRF: is OPRF with the notion of verifiability. Clients can verify that the + server used a specific private key during the execution of the protocol. +- POPRF: is a partially-oblivious VOPRF that allows clients and servers to + provide public input to the PRF computation. + +The OPRF flow is shown below (from the IRTF draft): ``` - Client(input, info) Server(skS, info) - ---------------------------------------------------------------------- + Client(input) Server(skS) + ------------------------------------------------------------------- blind, blindedElement = Blind(input) blindedElement ----------> - evaluatedElement = Evaluate(skS, blindedElement, info) + evaluatedElement = BlindEvaluate(skS, blindedElement) evaluatedElement <---------- - output = Finalize(input, blind, evaluatedElement, blindedElement, info) + output = Finalize(input, blind, evaluatedElement) ``` -In the verifiable mode of the protocol, the server additionally -computes a proof in Evaluate. The client verifies this proof using -the server's expected public key before completing the protocol and -producing the protocol output. +For the advanced modes VOPRF and POPRF refer to the published draft. ### OPAQUE The OPAQUE Asymmetric PAKE Protocol diff --git a/bindings/js/libecc-post.js b/bindings/js/libecc-post.js index 2d0a41d8..c2dc5e58 100644 --- a/bindings/js/libecc-post.js +++ b/bindings/js/libecc-post.js @@ -2134,7 +2134,7 @@ Module.ecc_voprf_ristretto255_sha512_SCALARSIZE = ecc_voprf_ristretto255_sha512_ const ecc_voprf_ristretto255_sha512_PROOFSIZE = 64; /** - * Size of a proof. Proof is a sequence of two scalars. + * Size of a proof. Proof is a tuple of two scalars. * * @type {number} */ @@ -2185,7 +2185,11 @@ const ecc_voprf_ristretto255_sha512_MAXINFOSIZE = 2000; Module.ecc_voprf_ristretto255_sha512_MAXINFOSIZE = ecc_voprf_ristretto255_sha512_MAXINFOSIZE; /** - * + * Generates a proof using the specified scalar. Given elements A and B, two + * non-empty lists of elements C and D of length m, and a scalar k; this + * function produces a proof that k*A == B and k*C[i] == D[i] for each i in + * [0, ..., m - 1]. The output is a value of type Proof, which is a tuple of two + * scalar values. * * @param {Uint8Array} proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE * @param {Uint8Array} k size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -2237,7 +2241,11 @@ Module.ecc_voprf_ristretto255_sha512_GenerateProofWithScalar = ( } /** - * + * Generates a proof. Given elements A and B, two + * non-empty lists of elements C and D of length m, and a scalar k; this + * function produces a proof that k*A == B and k*C[i] == D[i] for each i in + * [0, ..., m - 1]. The output is a value of type Proof, which is a tuple of two + * scalar values. * * @param {Uint8Array} proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE * @param {Uint8Array} k size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -2284,7 +2292,9 @@ Module.ecc_voprf_ristretto255_sha512_GenerateProof = ( } /** - * + * Helper function used in GenerateProof. It is an optimization of the + * ComputeComposites function for servers since they have knowledge of the + * private key. * * @param {Uint8Array} M (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param {Uint8Array} Z (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2332,7 +2342,11 @@ Module.ecc_voprf_ristretto255_sha512_ComputeCompositesFast = ( } /** - * + * This function takes elements A and B, two non-empty lists of elements C and D + * of length m, and a Proof value output from GenerateProof. It outputs a single + * boolean value indicating whether or not the proof is valid for the given DLEQ + * inputs. Note this function can verify proofs on lists of inputs whenever the + * proof was generated as a batched DLEQ proof with the same inputs. * * @param {Uint8Array} A size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param {Uint8Array} B size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2375,7 +2389,7 @@ Module.ecc_voprf_ristretto255_sha512_VerifyProof = ( } /** - * + * Helper function used in `VerifyProof`. * * @param {Uint8Array} M (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param {Uint8Array} Z (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2519,7 +2533,8 @@ Module.ecc_voprf_ristretto255_sha512_BlindWithScalar = ( } /** - * + * The OPRF protocol begins with the client blinding its input. Note that this + * function can fail for certain inputs that map to the group identity element. * * @param {Uint8Array} blind (output) scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param {Uint8Array} blindedElement (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2554,7 +2569,8 @@ Module.ecc_voprf_ristretto255_sha512_Blind = ( } /** - * + * Clients store blind locally, and send blindedElement to the server for + * evaluation. Upon receipt, servers process blindedElement using this function. * * @param {Uint8Array} evaluatedElement (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param {Uint8Array} skS scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -2580,7 +2596,11 @@ Module.ecc_voprf_ristretto255_sha512_BlindEvaluate = ( } /** - * + * Servers send the output evaluatedElement to clients for processing. Recall + * that servers may process multiple client inputs by applying the BlindEvaluate + * function to each blindedElement received, and returning an array with the + * corresponding evaluatedElement values. Upon receipt of evaluatedElement, + * clients process it to complete the OPRF evaluation with this function. * * @param {Uint8Array} output (output) size:ecc_voprf_ristretto255_sha512_Nh * @param {Uint8Array} input the input message, size:inputLen @@ -2614,7 +2634,8 @@ Module.ecc_voprf_ristretto255_sha512_Finalize = ( } /** - * + * An entity which knows both the secret key and the input can compute the PRF + * result using this function. * * @param {Uint8Array} output (output) size:ecc_voprf_ristretto255_sha512_Nh * @param {Uint8Array} skS size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -2648,7 +2669,8 @@ Module.ecc_voprf_ristretto255_sha512_Evaluate = ( } /** - * + * Same as calling ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate but + * using an specified scalar `r`. * * @param {Uint8Array} evaluatedElement (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param {Uint8Array} proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -2690,7 +2712,10 @@ Module.ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateWithScalar = ( } /** - * + * The VOPRF protocol begins with the client blinding its input. Clients store + * the output blind locally and send blindedElement to the server for + * evaluation. Upon receipt, servers process blindedElement to compute an + * evaluated element and DLEQ proof using this function. * * @param {Uint8Array} evaluatedElement (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param {Uint8Array} proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -2727,7 +2752,9 @@ Module.ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate = ( } /** - * + * The server sends both evaluatedElement and proof back to the client. Upon + * receipt, the client processes both values to complete the VOPRF computation + * using this function below. * * @param {Uint8Array} output (output) size:ecc_voprf_ristretto255_sha512_Nh * @param {Uint8Array} input the input message, size:inputLen @@ -2778,7 +2805,8 @@ Module.ecc_voprf_ristretto255_sha512_VerifiableFinalize = ( } /** - * + * Same as calling ecc_voprf_ristretto255_sha512_PartiallyBlind with an + * specified blind scalar. * * @param {Uint8Array} blindedElement (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param {Uint8Array} tweakedKey (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2830,7 +2858,12 @@ Module.ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar = ( } /** - * + * The POPRF protocol begins with the client blinding its input, using the + * following modified Blind function. In this step, the client also binds a + * public info value, which produces an additional tweakedKey to be used later + * in the protocol. Note that this function can fail for certain private inputs + * that map to the group identity element, as well as certain public inputs + * that, if not detected at this point, will cause server evaluation to fail. * * @param {Uint8Array} blind (output) scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param {Uint8Array} blindedElement (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2883,7 +2916,8 @@ Module.ecc_voprf_ristretto255_sha512_PartiallyBlind = ( } /** - * + * Same as calling ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate with an + * specified scalar r. * * @param {Uint8Array} evaluatedElement (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param {Uint8Array} proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -2932,7 +2966,10 @@ Module.ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar = ( } /** - * + * Clients store the outputs blind and tweakedKey locally and send + * blindedElement to the server for evaluation. Upon receipt, servers process + * blindedElement to compute an evaluated element and DLEQ proof using the + * this function. * * @param {Uint8Array} evaluatedElement (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param {Uint8Array} proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -2976,7 +3013,9 @@ Module.ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate = ( } /** - * + * The server sends both evaluatedElement and proof back to the client. Upon + * receipt, the client processes both values to complete the POPRF computation + * using this function. * * @param {Uint8Array} output (output) size:ecc_voprf_ristretto255_sha512_Nh * @param {Uint8Array} input the input message, size:inputLen @@ -3140,7 +3179,8 @@ Module.ecc_voprf_ristretto255_sha512_HashToGroup = ( } /** - * + * Same as calling ecc_voprf_ristretto255_sha512_HashToScalar with an specified + * DST. * * @param {Uint8Array} out (output) size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param {Uint8Array} input size:inputLen @@ -3172,7 +3212,8 @@ Module.ecc_voprf_ristretto255_sha512_HashToScalarWithDST = ( } /** - * + * Deterministically maps an array of bytes x to an element in GF(p) in + * the ristretto255 curve. * * @param {Uint8Array} out (output) size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param {Uint8Array} input size:inputLen diff --git a/bindings/js/libecc.js b/bindings/js/libecc.js index 0dd5edc5..583c1698 100644 --- a/bindings/js/libecc.js +++ b/bindings/js/libecc.js @@ -2,7 +2,7 @@ var libecc_module= async function(libecc_module) { libecc_module = libecc_module || {}; -var Module=typeof libecc_module!="undefined"?libecc_module:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_NODE=typeof process=="object";function ready(){readyPromiseResolve(Module)}function randomValueSetup(){if(Module.getRandomValue===undefined){try{var window_="object"===typeof window?window:self;var crypto_=typeof window_.crypto!=="undefined"?window_.crypto:window_.msCrypto;var randomValuesStandard=function(){var buf=new Uint32Array(1);crypto_.getRandomValues(buf);return buf[0]>>>0};randomValuesStandard();Module.getRandomValue=randomValuesStandard}catch(e){try{import("crypto").then(crypto=>{var randomValueNodeJS=function(){var buf=crypto["randomBytes"](4);return(buf[0]<<24|buf[1]<<16|buf[2]<<8|buf[3])>>>0};randomValueNodeJS();Module.getRandomValue=randomValueNodeJS})}catch(e){throw"No secure random number generator found"}}}}randomValueSetup();function abort(what){throw what}for(var base64ReverseLookup=new Uint8Array(123),i=25;i>=0;--i){base64ReverseLookup[48+i]=52+i;base64ReverseLookup[65+i]=i;base64ReverseLookup[97+i]=26+i}base64ReverseLookup[43]=62;base64ReverseLookup[47]=63;function base64Decode(b64){if(typeof ENVIRONMENT_IS_NODE!="undefined"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(b64,"base64");return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength)}var b1,b2,i=0,j=0,bLength=b64.length,output=new Uint8Array((bLength*3>>2)-(b64[bLength-2]=="=")-(b64[bLength-1]=="="));for(;i>4;output[j+1]=b1<<4|b2>>2;output[j+2]=b2<<6|base64ReverseLookup[b64.charCodeAt(i+3)]}return output}Module["wasm"]=base64Decode("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KAIAazYCACAAIBQgE2s2AiQgACASIBFrNgIgIAAgECAPazYCHCAAIA4gDWs2AhggACAMIAtrNgIUIAAgCiAJazYCECAAIAggB2s2AgwgACAGIAVrNgIIIAAgBCADazYCBAsKACAAIAEgAhBxCwkAIAAgARCKAgsKACAAIAEgAhBbC34BAn8jAEHAAmsiBCQAQX8hAyAEIAIQY0UEQEEAIQMDQCADQSBHBEAgACADaiABIANqLQAAOgAAIANBAWohAwwBCwsgACAALQAfQf8AcToAHyAEQaABaiIBIAAgBBDPAiAAIAEQf0F/QQAgAEEgEEcbIQMLIARBwAJqJAAgAwsxAQF/IAFBAnYhAkEAIQEDQCABIAJGRQRAIAAgAUECdGpBADYCACABQQFqIQEMAQsLC0ABA38gACABIAFB+ABqIgIQBCAAQShqIAFBKGoiAyABQdAAaiIEEAQgAEHQAGogBCACEAQgAEH4AGogASADEAQLHAAgAEIANwNAIABCADcDSCAAQaCKAkHAABAGGgsLACAAQQAgARATGgswAQJ/IwBBwAJrIgMkACADQaABaiIEIAIQIyADIAEgBBAvIAAgAxAaIANBwAJqJAAL7QEBBH8jAEHABWsiAyQAAkACQCAAKAJIQQN2Qf8AcSIEQfAATwRAQYABIARrIQUDQCACIAVGDQIgACACIARqaiACQeCPAmotAAA6AFAgAkEBaiECDAALAAtB8AAgBGshBQNAIAIgBUYNAiAAIAIgBGpqIAJB4I8Cai0AADoAUCACQQFqIQIMAAsACyAAIABB0ABqIgIgAyADQYAFahCfASACQQBB8AAQExoLIABBwAFqIABBQGtBEBDGAiAAIABB0ABqIAMgA0GABWoQnwEgASAAQcAAEMYCIANBwAUQHCAAQdABEBwgA0HABWokAAuXAgIDfgJ/IwBBoAJrIgYkAAJAIAJQDQAgACAAKQMgIgQgAkIDhnw3AyAgAkLAACAEQgOIQj+DIgV9IgRUBEADQCACIANRDQIgACADIAV8p2ogASADp2otAAA6ACggA0IBfCEDDAALAAsDQCADIARSBEAgACADIAV8p2ogASADp2otAAA6ACggA0IBfCEDDAELCyAAIABBKGogBiAGQYACaiIHEKABIAIgBH0hAyABIASnaiEBA0AgA0LAAFQEQEIAIQIDQCACIANUBEAgACACpyIHaiABIAdqLQAAOgAoIAJCAXwhAgwBCwsgBkGgAhAcBSAAIAEgBiAHEKABIANCQHwhAyABQUBrIQEMAQsLCyAGQaACaiQAC/0cAjZ+AX8gACACMwAAIAJBAmoiOTEAAEIQhkKAgPwAg4QiBCABNQAXQgWIQv///wCDIgN+IDk1AABCBYhC////AIMiBSABMwAVIAExABdCEIZCgID8AIOEIgZ+fCACNQAHQgeIQv///wCDIgkgATUAD0IGiEL///8AgyIHfnwgAjUACkIEiEL///8AgyIKIAEzAA0gATEAD0IQhoRCAYhC////AIMiDX58IAIzAAUgAjEAB0IQhoRCAohC////AIMiDiABMwASIAExABRCEIaEQgOIIgt+fCACNQAPQgaIQv///wCDIgggATUAB0IHiEL///8AgyIPfnwgAjMADSACMQAPQhCGhEIBiEL///8AgyIMIAE1AApCBIhC////AIMiEH58IAIzABIgAjEAFEIQhoRCA4giESABMwAFIAExAAdCEIaEQgKIQv///wCDIhJ+fCACNQAXQgWIQv///wCDIhUgATMAACABMQACQhCGQoCA/ACDhCIWfnwgAjMAFSACMQAXQhCGQoCA/ACDhCIXIAE1AAJCBYhC////AIMiGH58IAQgBn4gBSALfnwgCSANfnwgCiAQfnwgByAOfnwgCCASfnwgDCAPfnwgESAYfnwgFiAXfnwiHUKAgEB9Ih5CFYh8IhMgE0KAgEB9IiBCgICAf4N9IAIzABogAkEcaiICMQAAQhCGhEICiEL///8AgyITIAE1ABxCB4giGX4gAjUAAEIHiCIaIAEzABogATEAHEIQhoRCAohC////AIMiG358IAMgGn4gFSAZfnwgEyAbfnwiIUKAgEB9Ih9CFYh8IiIgIkKAgEB9IhxCgICAf4N9IiJCk9gofnwgISAfQoCAgH+DfSAXIBl+IBUgG358IAYgGn58IAMgE358IAMgFX4gESAZfnwgFyAbfnwgCyAafnwgBiATfnwiI0KAgEB9IhRCFYh8Ih9CgIBAfSIkQhWIfCIhQpjaHH58IB8gJEKAgIB/g30iH0Ln9id+fCAjIBRCgICAf4N9IBEgG34gCCAZfnwgBiAVfnwgAyAXfnwgByAafnwgCyATfnwgDCAZfiAIIBt+fCADIBF+fCAL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A4YgBEKAgPAAg0ISiIQ8ABIgACAFQgiIPAAWIAAgEEL///8AgyAFQhWHfCIEQguIPAAZIAAgBEIDiDwAGCAAIAVCEIhCH4MgBEIFhoQ8ABcgACARQv///wCDIARCFYd8IgNCBog8ABsgACADQgKGIARCgIDgAINCE4iEPAAaIAAgCkL///8AgyADQhWHfCIEQhGIPAAfIAAgBEIJiDwAHiAAIARCAYg8AB0gACAEQgeGIANCgID/AINCDoiEPAAcC68CARN/IAEoAgQhDCAAKAIEIQMgASgCCCENIAAoAgghBCABKAIMIQ4gACgCDCEFIAEoAhAhDyAAKAIQIQYgASgCFCEQIAAoAhQhByABKAIYIREgACgCGCEIIAEoAhwhEiAAKAIcIQkgASgCICETIAAoAiAhCiABKAIAIRQgACgCACELIABBACACayICIAAoAiQiFSABKAIkc3EgFXM2AiQgACAKIAIgCiATc3FzNgIgIAAgCSACIAkgEnNxczYCHCAAIAggAiAIIBFzcXM2AhggACAHIAIgByAQc3FzNgIUIAAgBiACIAYgD3NxczYCECAAIAUgAiAFIA5zcXM2AgwgACAEIAIgBCANc3FzNgIIIAAgAyACIAMgDHNxczYCBCAAIAsgAiALIBRzcXM2AgALTQECfyACQQJ2IQRBACECA0AgAiAERkUEQCADIAEgAkECdCIDaigCACAAIANqKAIAc3IhAyACQQFqIQIMAQsLIANBAWsgA0F/c3FBH3YLPgEBfyAAIAFBKGoiAiABEBIgAEEoaiACIAEQFCAAQdAAaiABQdAAakEoEAYaIABB+ABqIAFB+ABqQaAVEAQLJQEBfyMAQSBrIgEkACABIAAQggEgAUEgEEchACABQSBqJAAgAAukAQEFfyMAQeAGayIDJAAgA0HABGoiBCABIAIQUSADQaACaiIFIAFBoAJqIgYgAkGgAmoiBxBRIAMgASAGEHYgAEGgAmoiASACIAcQdiABIAEgAxBRIAEgASAEEHUgASABIAUQdSADQeADaiIBIAEQJiAAIAQgARAHIABB4ABqIANBoAVqIAUQByAAQcABaiADQYAGaiADQYADahAHIANB4AZqJAALNAECfyMAQTBrIgIkACACIAEgAUEwaiIDEFsgACABIAMQcSAAQTBqIAJBMBAQIAJBMGokAAsKACAAIAEgAhAKCwkAIAAgARC5AgsIACAAIAEQfguPAQEBfyMAQRBrIgMgADYCDCADIAE2AgggA0EAOgAHIANBAToABgNAIAIEQCACQQFrIgIgAygCDGotAAAhACADIAMtAAcgAy0ABiADKAIIIAJqLQAAIgEgAGtBCHZxcjoAByADIAMtAAYgACABc0EBa0EIdnE6AAYMAQsLIAMtAAYgAy0AByADLQAHampBAWsLUQECfyMAQeADayIDJABBfyEEAkAgA0HAAmogARBjDQAgA0GgAWogAhBjDQAgAyADQcACaiADQaABahAdIAAgAxB/QQAhBAsgA0HgA2okACAEC78BAQJ/IAAgACkDICACrXw3AyACQCACRQ0AIAAoAmgiA0UNACACQcAAIANrIgRJBEAgACADakEoaiABIAIQeyAAIAAoAmggAmo2AmgPCyADIABBKGoiA2ogASAEEHsgACADQQEQRiADQcAAEBkgAEEANgJoIAIgBGshAiABIARqIQELIAJBwABJBH8gAgUgACABIAJBBnYQRiABIAJBQHFqIQEgAkE/cQsiAwRAIAAgAzYCaCAAQShqIAEgAxB7CwszAQF/IAFBACABQQBKGyEBA0AgASADRkUEQCAAIAAQZSADQQFqIQMMAQsLIAAgACACECALjQEBBH8jAEGgAmsiAyQAIANBqAFqIABBKBAGGiADQdABaiAAQShqQSgQBhogA0H4AWogAEHQAGpBKBAGGiABQQAgAUEAShshAQNAIAEgBEZFBEAgBEEBaiEEIANBCGoiBSADQagBaiIGEDQgBiAFEDgMAQsLIAAgA0EIahAaIAAgACACEB0gA0GgAmokAAuVAQEEfyMAQTBrIgUkACAAIAFBKGoiAyABEBIgAEEoaiIEIAMgARAUIABB0ABqIgMgACACEAQgBCAEIAJBKGoQBCAAQfgAaiIGIAJB+ABqIAFB+ABqEAQgACABQdAAaiACQdAAahAEIAUgACAAEBIgACADIAQQFCAEIAMgBBASIAMgBSAGEBIgBiAFIAYQFCAFQTBqJAALqgEBCX8gASgCBCECIAEoAgghAyABKAIMIQQgASgCECEFIAEoAhQhBiABKAIYIQcgASgCHCEIIAEoAiAhCSABKAIkIQogAEEAIAEoAgBrNgIAIABBACAKazYCJCAAQQAgCWs2AiAgAEEAIAhr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AGAgACAAQShqIAQgBEGAAmoQoAFBACECA0AgAkEIRwRAIAEgAkECdCIDaiAAIANqKAIAIgNBGHQgA0GA/gNxQQh0ciADQQh2QYD+A3EgA0EYdnJyNgAAIAJBAWohAgwBCwsgBEGgAhAcIABB6AAQHCAEQaACaiQACygAIAAgASACECEgAEEoaiABQShqIAIQISAAQdAAaiABQdAAaiACECELOAAgACABIAIQISAAQShqIAFBKGogAhAhIABB0ABqIAFB0ABqIAIQISAAQfgAaiABQfgAaiACECELCAAgACABEEcLRgEBfyMAQYABayIEJAAgBEG1CCkAADcABSAEQbAIKQAANwMAIAAgASACIARBEGoiACAAIAMgBEENEGsQtAEgBEGAAWokAAsJACAAIAEQowILrAEBA38jAEGgAmsiAyQAQcABIQICQCABQcABaiIEQeAAEA8EQCAAQeAAELYCDAELIARBwJUCQeAAECJFBEAgAyABEJYBIAMhAQsjAEEwayICJAAgAiABQTBqEJgBIAAgAkEwEHogAiABEJgBIABBMGogAkEwEHogAUHgAGoQlQEhASACQTBqJAAgAC0AACABQQR0QSBxckGAf3IhAgsgACACOgAAIANBoAJqJAALpgUBFX8jAEFAaiELIAAoAhwhDyAAKAIYIRAgACgCFCERIAAoAhAhEiAAKAIMIRMgACgCCCEUIAAoAgQhFSAAKAIAIRYDQCACBEAgAkEBayECQQAhByAVIQMgFCEEIBMhDCASIQggESEGIBAhBSAPIQ0gFiEOA0AgBSEKIAYhBSAIIQYgBCEJIAMhBEEQIQMgB0EQRkUEQCALIAdBAnQiCGogASgAACIDQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZyciIDNgIAIAhB0JoCaigCACAFIAZxIAZBGncgBkEVd3MgBkEHd3NqIA1qIAogBkF/c3FqaiADaiIXIAxqIQggB0EBaiEHIAFBBGohASAKIQ0gDiIDQR53IANBE3dzIANBCndzIAMgCSIMIARzcSAEIAlxc2ogF2ohDgwBCwsDQCAKIQcgBSEKIAYhBSAJIQggBCEJIANBwABGRQRAIAsgA0EPcUECdGoiBCAEKAIAIAsgA0EJakEPcUECdGooAgAgCyADQQFqIhdBD3FBAnRqKAIAIgRBGXcgBEEOd3MgBEEDdnNqaiALIANBDmpBD3FBAnRqKAIAIgRBD3cgBEENd3MgBEEKdnNqIgQ2AgAgA0ECdEHQmgJqKAIAIAUgCnEgBUEadyAFQRV3cyAFQQd3c2ogDWogByAFQX9zcWpqIARqIgMgDGohBiAHIQ0gDiIEQR53IARBE3dzIARBCndzIAQgCCIMIAlzcSAIIAlxc2ogA2ohDiAXIQMMAQsLIAAgDSAPaiIPNgIcIAAgByAQaiIQNgIYIAAgCiARaiIRNgIUIAAgBSASaiISNgIQIAAgDCATaiITNgIMIAAgCCAUaiIUNgIIIAAgCSAVaiIVNgIEIAAgDiAWaiIWNgIADAELCwtGAQJ/IwBBEGsiA0EAOgAPA0AgASACRkUEQCADIAAgAmotAAAgAy0AD3I6AA8gAkEBaiECDAELCyADLQAPQQFrQQh2QQFxCzkAIABCADcDICAAQcCHAikDADcDACAAQciHAikDADcDCCAAQdCHAikDADcDECAAQdiHAikDADcDGAszAQF/IAFBACABQQBKGyEBA0AgASADRkUEQCAAIAAQCyADQQFqIQMMAQsLIAAgACACEAQLSgECfyMAQYABayICJAAgAkEIaiIDIAFBKBAGGiACQTBqIAFBKGpBKBAGGiACQdgAaiABQdAAakEoEAYaIAAgAxA0IAJBgAFqJAALJwEBfyMAQSBrIgEkACABIAAQggEgAS0AACEAIAFBIGokACAAQQFxC14BAn8jAEHADWsiAyQAIANBgAlqIgQgAUHABBAGGiADQcAEaiIBIAJBwAQQBhogAyAEIAEQmAIgACADQcAEEAYaIARBwAQQAyABQcAEEAMgA0HABBADIANBwA1qJAALCQAgACABEJ0CCxQAIAAgASACQZCVAkH9/3NBDBBaC5wDAQZ/IwBBoAJrIgQhByAEJAAgBCADQaACbGsiBSIEJAAgBCADQeAAbGsiCCQAAkACQCADQQFHDQAgAUHAARAPIAJB4AAQD3JFDQAgAEHAlQJBwAQQEAwBC0EAIQQDQCADIARGRQRAIAggBEHgAGwiCWoiBiACIAlqIgkgCRAXIAYgBkEBEDYgBkEwaiAJQTBqIgYgBhAXIAUgBEGgAmxqIgYgASAEQcABbGpBwAEQECAGQcABakHAlQJB4AAQECAEQQFqIQQMAQsLIAcgBSAFEMgBIAcgCBCOASAAQcAEEBkgACAHQcABEBAgAEGAA2ogB0HAAWpB4AAQEEEBIAMgA0EBTRshAkEBIQQDQCACIARGRQRAIAcgBSAEQaACbGoiBiAGEMgBIAcgCCAEQeAAbGoQjgEgACAAIAcQyQEgBEEBaiEEDAELCyAAIAUgASAIIANBAhB0IAAgBSABIAggA0EDEHQgACAFIAEgCCADQQkQdCAAIAUgASAIIANBIBB0IAAgBSABIAggA0EQEHQgABA9CyAHQaACaiQAC6ECAQh/IwBBwARrIgIkACACQYADaiIEIAEgAUGAA2oiBhDKASACQcABaiIFIAFBoAJqIgcgAUHAAWoiAxDKASACIAFB4ABqIgggAUHgA2oiCRDKASAAIAQgARAJIAAgACAAEAcgACAAIAQQByAAQeAAaiIBIAUgCBAJIAEgASABEAcgASABIAUQByAAQcABaiIBIAIgAxAJIAEgASABEAcgASABIAIQByACQeAAaiIDIAMQJiAAQaACaiIBIAMgBxAHIAEgASABEAcgASABIAMQByAAQYADaiIBIAJB4ANqIgMgBhAHIAEgASABEAcgASABIAMQByAAQeADaiIAIAJBoAJqIgEgCRAHIAAgACAAEAcgACAAIAEQByACQcAEaiQAC4wCAQp/IwBBwARrIgMkACADQeADaiIHIAEgAhAFIANBgANqIgggAUHgAGoiBCACQeAAaiIKEAUgA0GgAmoiCSABQcABaiILIAJBwAFqIgwQBSADQeAAaiIFIAQgCxAHIAMgCiAMEAcgA0HAAWoiBiAFIAMQBSAGIAYgCBAJIAYgBiAJEAkgBiAGECYgBSABIAQQByADIAIgChAHIABB4ABqIgQgBSADEAUgBCAEIAcQCSAEIAQgCBAJIAUgCRAmIAQgBCAFEAcgBSABIAsQByADIAIgDBAHIABBwAFqIgEgBSADEAUgASABIAcQCSABIAEgCRAJIAEgASAIEAcgACAGIAcQByADQcAEaiQAC04AIAAgAUGgAhAQIABBMGoiASABQQEQNiAAIABB4J8CEAUgAEGQAWoiASABQQEQNiAAQeAAaiIBIAFBwKACEAUgAEHwAWoiACAAQQEQNgu+AQEFfyMAQaACayIDJAAgA0HAAWoiBCABEA4gA0HgAGoiAiABQeAAaiIGEA4gAyACEA4gAiACIAEQByAC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AyADIAEQBCABIAMQC0EBIQEDQCABQQVGRQRAIAFBAWohASACQTBqIgMgAxALDAELCyACQeAAaiIBIAJBMGoiAyABEAQgAyABEAtBASEBA0AgAUEKRkUEQCABQQFqIQEgAkEwaiIDIAMQCwwBCwsgAkEwaiIBIAEgAkHgAGoQBCACIAEQC0EBIQEDQCABQRRGRQRAIAFBAWohASACIAIQCwwBCwsgAkEwaiIBIAIgARAEQQEhAQNAIAFBC0ZFBEAgAUEBaiEBIAJBMGoiAyADEAsMAQsLIAJB4ABqIgEgAkEwaiIDIAEQBCADIAEQC0EBIQEDQCABQTJGRQRAIAFBAWohASACQTBqIgMgAxALDAELCyACQTBqIgEgASACQeAAahAEIAIgARALQQEhAQNAIAFB5ABGRQRAIAFBAWohASACIAIQCwwBCwsgAkEwaiIBIAIgARAEQQEhAQNAIAFBM0ZFBEAgAUEBaiEBIAJBMGoiAyADEAsMAQsLIAJB4ABqIgEgAkEwaiABEARBASEBA0AgAUEGRkUEQCABQQFqIQEgAkHgAGoiAyADEAsMAQsLIAAgAkHgAGogAkGQAWoQBCACQcABaiQACzYBAX8jAEFAaiICJAAgACACEB4gAEHQAWoiACACQsAAEAogACABEB4gAkHAABAcIAJBQGskAAvtAQEDfyMAQcABayIEJAAgAkGBAU8EQCAAEBsgACABIAKtEAogACAEEB5BwAAhAiAEIQELIAAQGyAEQUBrQTZBgAEQExoDQCACIANHBEAgBEFAayADaiIFIAUtAAAgASADai0AAHM6AAAgA0EBaiEDDAELCyAAIARBQGsiA0KAARAKIABB0AFqIgAQGyADQdwAQYABEBMaQQAhAwNAIAIgA0cEQCAEQUBrIANqIgUgBS0AACABIANqLQAAczoAACADQQFqIQMMAQsLIAAgBEFAayIAQoABEAogAEGAARAcIARBwAAQHCAEQcABaiQACzYBAX8jAEGgA2siBSQAIAUgASACEKcBIAUgAyAErRAnIAUgABCmASAFQaADEBwgBUGgA2okAAttAQJ/IwBBwAJrIgckACAHQZACaiIIQfAKQSEQBhogBxAbIAcgCEIhEAogByABIAKsEAogByADIASsEAogByAFIAasEAogByAHQdABaiIBEB4gACABEE0gAUHAABAD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A0AgAkIANwNIIAJBAToAQCACQgA3AyAgAkGgkQIpAwA3A2AgAiABKQAYNwMYIAIgASkAEDcDECACIAEpAAg3AwggAiABKQAANwMAIAJBQGsiASACEMICIAEQZCAAIAIpA1g3ABggACACKQNQNwAQIAAgAikDSDcACCAAIAIpA0A3AAAgAkGAAWokAAsJACAAIAEQxQELRAECfyMAQeAAayICJAAgAkEwaiIDIAEQjQIgAyADIAEQCCACIAMQFiACIAFBMBAiIQEgACADQTAQECACQeAAaiQAIAELLQEBfyMAQTBrIgEkACABIABBkJUCQf3/c0EMEHAgARDCASEAIAFBMGokACAACwkAIAAgARDBAgsjAQF/A0AgASACRkUEQCAAIAJqQQA6AAAgAkEBaiECDAELCwuABwIWfwF+IwBB4ABrIgkkACMAQSBrIgIkACACQTBrIgYkACAGQTBrIgQkACAEQeAAayIHJAAgB0HgAGsiCiQAIApB4ABrIg8kACAGIAFBMBAQIARBkJUCQTAQECAHQeAAEBkgB0EBNgIAIApB4AAQGSACQQxqIRUgAkEIaiEWIAJBBHIhFwNAIAVBGUcEQCACQRhqIREgAkEQaiESIARBCiINQQJ0aigCACELIAQoAiwhDiAGKAIoIQggBigCLCEMA0AgDCAOciIDQQFrIANBf3NxQR92IRAgDUEBayINBEBBACAQayIDIAsgDnNxIA5zIQ4gCCAMcyADcSAMcyEMIAQgDUECdCIQaigCACALcyADcSALcyELIAYgEGooAgAgCHMgA3EgCHMhCAwBCwtBACADQf//A0trIg0gA0EQdiADc3EgA3MiA0H/AUshE0EAIBNrIhMgA0EIdiADc3EgA3MiA0EPSyEUIBEgBigCADYCACARIAwgCCAQQX5zQQBBACAUayIMIANBBHYgA3NxIANzIghBA0trIgNBAnEgDEEEcSANQRBxIBNBCHFycnIgCEECdiAIcyADcSAIc0EBdmprQSFqIggQ/gE2AgQgEiAEKAIANgIAIBIgDiALIAgQ/gE2AgQgAiARIBJBHhCFAiAPIAYgAiAEIBcQjAIgBCAGIBYgBCAVEIwCIAYgD0EwEBAgDyAHIAIoAgAgCiACKAIEEMEBGiAKIAcgAigCCCAKIAIoAgwQwQEaIAcgD0HgABAQIAVBAWohBQwB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aiIHIAAgARBoIAcgAiADrRA5QQAhAgNAIAUgAkEFdCIHSwRAIAYgAkEBaiICQRh0IAJBgP4DcUEIdHIgAkEIdkGA/gNxIAJBGHZycjYATCAGQdAAaiIDIAZBoAJqQdABEAYaIAMgBkHMAGpCBBA5IAMgBkEgahBnIAYgBikDODcDGCAGIAYpAzA3AxAgBiAGKQMoNwMIIAYgBikDIDcDAEICIQkDQCAJQgFYBEAgBkHQAGoiAyAAIAEQaCADIAZBIGoiCEIgEDkgAyAIEGdBACEDA0AgA0EgRwRAIAMgBmoiCCAILQAAIAZBIGogA2otAABzOgAAIANBAWohAwwBCwsgCUIBfCEJDAELCyAEIAdqIAZBICAFIAdrIgMgA0EgTxsQBhoMAQsLIAZBoAJqQdABEBwgBkHwA2okAAsaACAAKAIAEPwBIABBADYCCCAAQgA3AgBBAAtQAQF/IwBBQGoiAiQAIAIgAUHAABAGIgEQZCAAIAEpAxg3ABggACABKQMQNwAQIAAgASkDCDcACCAAIAEpAwA3AAAgAUHAABAcIAFBQGskAAv2AQIDfwJ+IwBBgAFrIgMkACADQgA3A2ggA0IANwNwIANCADcDeCADQgA3A2AgAyABKQAQNwNQIAMgASkAGDcDWCABKQAIIQYgASkAACEHIANCADcDKCADQgA3AzAgA0IANwM4IAMgBzcDQCADIAY3A0ggA0IANwMgIAMgAikAEDcDECADIAIpABg3AxggAyACKQAANwMAIAMgAikACDcDCCADQUBrIQRBACEBQQAhAgNAIAFBIEcEQCABIARqIgUgASADai0AACACIAUtAABqaiICOgAAIAJBCHYhAiABQQFqIQEMAQsLIAAgBBC/AiADQYABaiQAC94BAQF/IwBBgAFrIgIkACACQgA3A1AgAkIANwNYIAJCADcDKCACQgA3AzAgAkIANwM4IAJBqJECKQMANwNoIAJBsJECKQMANwNwIAJBuJECKQMANwN4IAJCADcDQCACQgA3A0ggAkIANwMgIAJBoJECKQMANwNgIAIgASkAEDcDECACIAEpABg3AxggAiABKQAANwMAIAIgASkACDcDCCACQUBrIgEgAhDCAiABEGQgACACKQNYNwAYIAAgAikDUDcAECAAIAIpA0g3AAggACACKQNANwAAIAJBgAFqJAALQAEDfwNAIAJBwABHBEAgACACaiIDIAMtAAAgASACai0AAGsgBGoiAzoAACADQRd0QR91IQQgAkEBaiECDAELCwu2IAI4fgR/IwBBsARrIj8kACA/QeACaiJAIAQQ1gEgP0GgAmoiPiADQiAQ2AEgQCA/QcACakIgEAogQCABIAIQCiBAID9B4AFqIj0QHiADKQAgIQcgAykAKCEGIAMpADAhBSAAIAMpADg3ADggACAFNwAwIAAgBjcAKCAAQSBqIgMgBzcAACA9EGQgPyA9EKMBIAAgPxBUIEAgBBDWASBAIABCwAAQCiBAIAEgAhAKIEAgP0GgAWoiABAeIAAQZCA/ID8tAKACQfgBcToAoAIgPyA/LQC/AkE/cUHAAHI6AL8CIAMgPjMAFSA+MQAXQhCGQoCA/ACDhCIPIAA1ABxCB4giEH4gPjUAF0IFiEL///8AgyIRIAAzABogADEAHEIQhoRCAohC////AIMiEn58ID41ABxCB4giEyAAMwAVIAAxABdCEIZCgID8AIOEIhR+fCA+MwAaID4xABxCEIaEQgKIQv///wCDIhUgADUAF0IFiEL///8AgyIWfnwgESAWfiA+MwASID4xABRCEIaEQgOIIhcgEH58IA8gEn58IBMgADMAEiAAMQAUQhCGhEIDiCIYfnwgFCAVfnwiCEKAgEB9IgdCFYh8IgZCgIBAfSIFQhWIIBMgFn4gECARfnwgEiAVfnwiAiACQoCAQH0iAkKAgIB/g318IitCmNocfiAQIBV+IBIgE358IAJCFYh8IgIgAkKAgEB9IilCgICAf4N9IixCk9gofnwgBiAFQoCAgH+DfSItQuf2J358IAggB0KAgIB/g30gEiAXfiA+NQAPQgaIQv///wCDIhkgEH58IBEgFH58IA8gFn58IBMgADUAD0IGiEL///8AgyIafnwgFSAYfnwgPjMADSA+MQAPQhCGhEIBiEL///8AgyIbIBB+IBIgGX58IBYgF358IBEgGH58IA8gFH58IBMgADMADSAAMQAPQhCGhEIBiEL///8AgyIcfnwgFSAafnwiC0KAgEB9IglCFYh8IghCgIBAfSIHQhWIfCIuQtOMQ358ID4zAAAgPjEAAkIQhkKAgPwAg4QiHSAWfiA+NQACQgWIQv///wCDIh4gFH58ID41AAdCB4hC////AIMiHyAafnwgPjUA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BiAIIAEQFCACIAggARASIAAgAyACEAQgAEEoaiAGIAQQBCAAQdAAaiAEIAIQBCAAQfgAaiADIAYQBCACQaAFaiQAC1kBA38jAEHABGsiAiQAIAJBkARqIgMgARBmIAJB4ANqIgQgAUEgahBmIAJBwAJqIgEgAxDHAiACQaABaiIDIAQQxwIgAiABIAMQHSAAIAIQfyACQcAEaiQACygBAX8jAEEwayIDJAAgAyABEDAgACABQSgQBiADIAIQISADQTBqJAALngcBDX8jAEHwAmsiBiQAIAAgASkAGDcAGCAAIAEpABA3ABAgACABKQAINwAIIAAgASkAADcAACAAIAAtAB8iDUH/AHE6AB8gBkEQaiIBIAAQZiMAQeAEayIDJAAgA0HgAGoiAiABENACIAMgAygCYEEBajYCYCACIAIQpQEgBkGgAWoiASACENoBIAEgARAwIANBMGoiBCABEAsgAyABIAQQBCAEIAQQ2gEgA0GQAWoiAiADIAEQEiACIAIgBBASIANBsARqIgcgAiACEAQgA0GABGoiCCACIAcQBCADQdADaiILIAgQCyALIAsQCyADQaADaiIKIAggCxAEIANB8AJqIgUgChALIAUgBRALIAUgBRALIAUgBRALIANBwAJqIgIgCiAFEAQgAkECIAgQSSADQZACaiIMIAJBKBAGGiACQQogDBBJIAJBCiAMEEkgA0HgAWoiCSACQSgQBhogAkEeIAkQSSAJIAJBKBAGGiACQTwgCRBJIANB4AFqIANBwAJqQSgQBhogAkH4ACAJEEkgAkEKIAwQSSACQQMgCBBJIAIgAhALIANBwAFqIAIQggEgAy0AwQEhDiAJIAEQMCABIAkgDkEBcSIJECEgBEEAQSgQExogBEHQhQIgCRAhIAEgASAEEBQgAiABEAsgDCABIAIQBCACIAIQ2gEgBkHwAGoiBCAMIAEQEiAEIAQgAhASIAUgBEEoEAYaIAogBBCkASAHIAogBBAEIAggB0HgDBAEIAsgCBALIAogBCALEBQgBCAHQSgQBiICIAggChAkECEgByACEAsgByAHIAUQFCAHECRBAUcEQBABAAsgBiAJNgIMIANB4ARqJAAjAEHAAWsiAyQAIANBATYCkAEgA0GQAWoiBUEEckEAQSQQExogA0HgAGoiByABIAUQEiADQTBqIgggASAFEBQg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DCkDADcDICADIAJBICADQSBqQRxBIBC2ARogACABIAMQ4QIgA0EgEAMgA0FAayQACzIBAn8gAUEAIAFBAEobIQNBASEBA38gAiADRgR/IAEFIAJBAWohAiAAIAFsIQEMAQsLC3UBBX8jAEFAaiIDJAAgAEEgEAMgAkEAIAJBAEobIQUDQCAEIAVGBEAgA0EgakEgEAMgA0EgEAMgA0FAayQABSADIAEgBEEGdGoiBiABIAIQ3wIgA0EgaiIHIAZBIGogAxAzIAAgACAHEDwgBEEBaiEEDAELCwswACAAQSAQAwNAIANBAEoEQCAAIAEgABAzIAAgACACIANBAWsiA0EFdGoQPAwBCwsLNgECfyACQQAgAkEAShshAgNAIAIgA0cEQCAAIANBBXQiBGogASAEahAoGiADQQFqIQMMAQsLC+wCAQR/IwBBQGoiBiQAQX8hByAEIAVIIAVBAkhyRQRAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCAFQQFrIQlBACECA38gAiAJRgR/IARBACAEQQBKG0EBaiEDQQEhBwN/IAMgB0YEfyAGQSBqQSAQA0EABSAGQgA3AxggBkIANwMQIAZCADcDACAGQgA3AwggBiAHOgAAIAZBIGogBiABIAUQ2AIgB0EGdCAAakFAaiICIAYpAwA3AAAgAiAGKQMYNwAYIAIgBikDEDcAECACIAYpAwg3AAggAiAGKQMgNwAgIAIgBikDKDcAKCACIAYpAzA3ADAgAiAGKQM4NwA4IAdBAWohBwwBCwsFIAEgAkEBaiIHQQV0aiIIIAMgAkEFdGoiAikAADcAACAIIAIpABg3ABggCCACKQAQNwAQIAggAikACDcACCAHIQIMAQsLIQcLIAZBQGskACAHCyoAIAAgAiADEK0BIABBIGoiAyACIAQQrQEgASAAECgaIAFBIGogAxAoGgt/AQF/IwBBsAJrIgMkACADQegKKQMANwOoAiADQeAKKQMANwOgAiADQdgKKQMANwOYAiADQdAKKQMANwOQAiADEBsgAyADQZACakIgEAogAyABIAKsEAogAyADQdABaiIBEB4gACABEE0gAUHAABADIANB0AEQAyADQbACaiQACxEAIAAgASACQe0LQe8LEPoBCxEAIAAgASACQcILQcQLEPoBCw8AIAAg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YQECfyMAQfAAayIDJAAgA0HIhwIpAwA3AxAgA0HQhwIpAwA3AxggA0HYhwIpAwA3AyAgA0IANwMoIANBwIcCKQMANwMIIANBCGoiBCABIAKsEB8gBCAAED8gA0HwAGokAAsQACAAIAEgAqwgA0EAEMQCCxAAIAAgASACrCADQQAQwwILJgEBf0F/IQMgAiABQcAAECoEf0F/BSAAIAFBQGtBwAAQBhpBAAsLRAEBfyMAQcABayIPJAAgDyAKIAUgBiAHIAggCRDnAiAAIAEgAiADIAQgBSALIAwgBiAKIA8gDSAOEOICIA9BwAFqJAALTAEBfyMAQcABayITJAAgEyAKIAUgBiAHIAggCSAPEOsBIAAgASACIAMgBCAFIAsgDCAGIAogEyANIA4gECARIBIQ5wEgE0HAAWokAAtxAQJ/IwBBQGoiDCQAIAxBIGoiDSAMIAIgAyADLQDIASADQckBaiAIIAYgByAEIAUgCRDmAiECIAAgASADIAQgBSANIAYgByAMIAggCiALEOMCIQAgDUEgEAMgDEEgEAMgDEFAayQAQX9BACAAIAJyGwsNACAAIAEQHCAAEPwBCzwBAX8jAEEgayIEJAAgBCABQckBaiACIAMQ6AIgASACIAMQBiIBIAM6AMgBIAAgASAEEOQCIARBIGokAAu3AQAgACACKQAANwAAIAAgAikAGDcAGCAAIAIpABA3ABAgACACKQAINwAIIAAgAykAGDcAOCAAIAMpABA3ADAgACADKQAINwAoIAAgAykAADcAICAAIAUpABg3AFggACAFKQAQNwBQIAAgBSkACDcASCAAQUBrIAUpAAA3AAAgASAEKQAINwDxASABIAQpABA3APkBIAEgBCkAGDcAgQIgASAEKQAANwDpASABQYkCaiAAQeAAEAYaC5ACAQF/IwBBIGsiCCQAIAggAiADIAQQrgEgASACIAMQBiIBIAM6AMgBIAEgBCkAGDcA4QEgASAEKQAQNwDZASABIAQpAAg3ANEBIAEgBCkAADcAyQEgACAIKQMYNwAYIAAgCCkDEDcAECAAIAgpAwg3AAggACAIKQMANwAAIAAgBSkAGDcAOCAAIAUpABA3ADAgACAFKQAINwAoIAAgBSkAADcAICAAIAcpABg3AFggAEFAayAHKQAANwAAIAAgBykACDcASCAAIAcpABA3AFAgASAGKQAYNwCBAiABIAYpABA3APkBIAEgBikACDcA8QEgASAGKQAANwDpASABQYkCaiAAQeAAEAYaIAhBIGokAAsJAEEIIAAQ/QELOwEBfyMAQSBrIgskACALQSAQKSAAIAEgAiADIAQgBSAGIAcgCCAJIAogCxDpAiALQSAQAyALQSBqJAALsAEBAn8jAEHwAmsiBiQAIAZBmwkoAAA2AOsCIAZBmAkoAAA2AugCIAZB4ABqIgcgAyAEIAZB6AJqQQcQDCAGQUBrIgMgBSAHIARBB2pBIBAxIAZBIGoiBCAGIAMQ7gEgACAEIAEQsAEgACACKQAYNwA4IAAgAikAEDcAMCAAIAIpAAg3ACggACACKQAANwAgIAdBgAIQAyADQSAQAyAEQSAQAyAGQSAQAyAGQfACaiQACxEAIAEQPiAAIAIgAyABEK4BCwkAIAAgARAoGgs5AQF/IwBBIGsiCiQAIApBIBApIAAgASACIAMgBCAFIAYgByAIIAkgChDtASAKQSAQAyAKQSBqJAALeQAgACABKQAANwAAIAAgASkAGDcAGCAAIAEpABA3ABAgACABKQAINwAIIABBIGogASADIANFIARFciIBG0EgIAQgARsiARAGGiAAIAE6AOgBIABB6QFqIAIgBSAFRSAGRXIiARtBICAGIAEbIgEQBhogACABOgCxAwukAwEGfyMAQZATayIGJABBfyEIAkAgBUHQD0oNACAGQfASaiIHIAIgA0ECEGogB0EgEEINACAGQcncmfsGNgLsEkEAIQggBkHgAmoiByAGQewSakEEQQBBABAMIAdBBHIgBUECEA0gB0EGciAEIAVBAEEAEAwgBkHAAmoiCSAHIAVBBmpBAhBDIAZBoAJqIgcgASAJEDwgB0EgEEIEQCAGQfASakEgEAMgBkHgAmpBgBAQAyAGQcACakEgEANBfyEIDAELIAZBgAJqIgkgBkGgAmoQVxogBkHgAWoiCiAJIAZB8BJqIgsQGBogBkEQaiIBEBsgBkEOaiIHIANBAhANIAEgB0ICEAogASACIAOsEAogByAFQQIQDSAGQRBqIAZBDmpCAhAKIAEgBCAFrBAKIAdBIEECEA0gBkEQaiAGQQ5qQgIQCiABIApCIBAKIAZCxtK5i8atmr3lADcDACABIAZCCBAKIAEgABAeIAtBIBADIAZB4AJqQYAQEAMgBkHAAmpBIBADIAlBIBADIApBIBADIAFB0AEQAwsgBkGQE2okACAIC/wBAQJ/IwBBwAJrIgokAAJ/QX8gCEHQD0oNABogCkGgAmoiCxBZQX8gCyAJIAQgBUEBQQIgBhCzAUUNABogCkGAAmoiBSADEFcaIApB4AFqIgYgBSAEEBgaIApBEGoiAxAbIApBDmoiBCACQQIQDSADIARCAhAKIAMgASACrBAKIAQgCEECEA0gCkEQaiAKQQ5qQgIQCiADIAcgCKwQCiAEQSBBAhANIApBEGogCkEOakICEAogAyAGQiAQCiAKQsbSuYvGrZq95QA3AwAgAyAKQggQCiADIAAQHiAFQSAQAyAGQSAQAyADQdABEANBAAshACAKQcACaiQAIAALMwEBfyMAQSBrIgYkACAGED4gACABIAIgAyAEIAUgBhDsAiEAIAZBIBADIAZBIGokACAACwuvpQIhAEGACAtEQ2hhbGxlbmdlU2VlZC1Db21wb3NpdGVEZXJpdmVLZXlQYWlySGFzaFRvR3JvdXAtSGFzaFRvU2NhbGFyLVZPUFJGMTAAQdAIC+EBT1BBUVVFLURlcml2ZUtleVBhaXJBdXRoS2V5RXhwb3J0S2V5UHJpdmF0ZUtleQAAT1BBUVVFLURlcml2ZUF1dGhLZXlQYWlyT3ByZktleU1hc2tpbmdLZXkAAAAAAAAAQ3JlZGVudGlhbFJlc3BvbnNlUGFkT1BBUVVFLVJGQ1hYWFhIYW5kc2hha2VTZWNyZXRTZXNzaW9uS2V5U2VydmVyTUFDQ2xpZW50TUFDAABCTFNfU0lHX0JMUzEyMzgxRzJfWE1EOlNIQS0yNTZfU1NXVV9ST19QT1BfAAAAAAABAEHQCgtBRlJPU1QtUklTVFJFVFRPMjU1LVNIQTUxMi12MTFyaG9GUk9TVC1SSVNUUkVUVE8yNTUtU0hBNTEyLXYxMWNoYWwAQaALCyVGUk9TVC1SSVNUUkVUVE8yNTUtU0hBNTEyLXYxMW5vbmNlbXNnAEHQCws1RlJPU1QtUklTVFJFVFRPMjU1LVNIQTUxMi12MTFjb21QUkUtU0NIRU1BMS1EZXJpdmVLZXkAQZAMC3dQUkUtU0NIRU1BMS1EZXJpdmVTaWduaW5nS2V5AAAAALZ4Wf+FctMAvW4V/w8KagApwAEAmOh5/7w8oP+Z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");var HEAP8,HEAP16,HEAP32,HEAPU8,HEAPU16,HEAPU32,HEAPF32,HEAPF64,wasmMemory,buffer,wasmTable;function updateGlobalBufferAndViews(b){buffer=b;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAP32=new Int32Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b)}var ASM_CONSTS={40004:()=>{return Module.getRandomValue()},40040:()=>{if(Module.getRandomValue===undefined){try{var window_="object"===typeof window?window:self;var crypto_=typeof window_.crypto!=="undefined"?window_.crypto:window_.msCrypto;var randomValuesStandard=function(){var buf=new Uint32Array(1);crypto_.getRandomValues(buf);return buf[0]>>>0};randomValuesStandard();Module.getRandomValue=randomValuesStandard}catch(e){try{var crypto=require("crypto");var randomValueNodeJS=function(){var buf=crypto["randomBytes"](4);return(buf[0]<<24|buf[1]<<16|buf[2]<<8|buf[3])>>>0};randomValueNodeJS();Module.getRandomValue=randomValueNodeJS}catch(e){throw"No secure random number generator found"}}}}};function _abort(){abort("")}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var asmLibraryArg={"b":_abort,"a":_emscripten_asm_const_int,"c":_emscripten_resize_heap};function initRuntime(asm){asm["e"]()}var imports={"a":asmLibraryArg};var _ecc_memzero,_ecc_randombytes,_ecc_bin2hex,_ecc_hex2bin,_ecc_concat2,_ecc_concat3,_ecc_concat4,_ecc_strxor,_ecc_I2OSP,_ecc_compare,_ecc_is_zero,_ecc_malloc,_ecc_free,_ecc_hash_sha256,_ecc_hash_sha512,_ecc_mac_hmac_sha256,_ecc_mac_hmac_sha512,_ecc_kdf_hkdf_sha256_extract,_ecc_kdf_hkdf_sha256_expand,_ecc_kdf_hkdf_sha512_extract,_ecc_kdf_hkdf_sha512_expand,_ecc_kdf_scrypt,_ecc_ed25519_is_valid_point,_ecc_ed25519_add,_ecc_ed25519_sub,_ecc_ed25519_generator,_ecc_ed25519_scalarmult_base,_ecc_ed25519_from_uniform,_ecc_ed25519_random,_ecc_ed25519_scalar_random,_ecc_ed25519_scalar_invert,_ecc_ed25519_scalar_negate,_ecc_ed25519_scalar_complement,_ecc_ed25519_scalar_add,_ecc_ed25519_scalar_sub,_ecc_ed25519_scalar_mul,_ecc_ed25519_scalar_reduce,_ecc_ed25519_scalarmult,_ecc_ristretto255_is_valid_point,_ecc_ristretto255_add,_ecc_ristretto255_sub,_ecc_ristretto255_generator,_ecc_ristretto255_scalarmult_base,_ecc_ristretto255_from_hash,_ecc_ristretto255_random,_ecc_ristretto255_scalar_random,_ecc_ristretto255_scalar_invert,_ecc_ristretto255_scalar_negate,_ecc_ristretto255_scalar_complement,_ecc_ristretto255_scalar_add,_ecc_ristretto255_scalar_sub,_ecc_ristretto255_scalar_mul,_ecc_ristretto255_scalar_reduce,_ecc_ristretto255_scalarmult,_ecc_bls12_381_fp_random,_ecc_bls12_381_fp12_one,_ecc_bls12_381_fp12_is_one,_ecc_bls12_381_fp12_inverse,_ecc_bls12_381_fp12_sqr,_ecc_bls12_381_fp12_mul,_ecc_bls12_381_fp12_pow,_ecc_bls12_381_fp12_random,_ecc_bls12_381_g1_add,_ecc_bls12_381_g1_negate,_ecc_bls12_381_g1_generator,_ecc_bls12_381_g1_scalarmult,_ecc_bls12_381_g1_scalarmult_base,_ecc_bls12_381_g2_add,_ecc_bls12_381_g2_negate,_ecc_bls12_381_g2_generator,_ecc_bls12_381_g2_scalarmult_base,_ecc_bls12_381_scalar_random,_ecc_bls12_381_pairing,_ecc_bls12_381_pairing_miller_loop,_ecc_bls12_381_pairing_final_exp,_ecc_bls12_381_pairing_final_verify,_ecc_h2c_expand_message_xmd_sha256,_ecc_h2c_expand_message_xmd_sha512,_ecc_voprf_ristretto255_sha512_GenerateProofWithScalar,_ecc_voprf_ristretto255_sha512_ComputeCompositesFast,_ecc_voprf_ristretto255_sha512_HashToScalar,_ecc_voprf_ristretto255_sha512_HashToScalarWithDST,_ecc_voprf_ristretto255_sha512_GenerateProof,_ecc_voprf_ristretto255_sha512_VerifyProof,_ecc_voprf_ristretto255_sha512_ComputeComposites,_ecc_voprf_ristretto255_sha512_GenerateKeyPair,_ecc_voprf_ristretto255_sha512_DeriveKeyPair,_ecc_voprf_ristretto255_sha512_BlindWithScalar,_ecc_voprf_ristretto255_sha512_HashToGroup,_ecc_voprf_ristretto255_sha512_HashToGroupWithDST,_ecc_voprf_ristretto255_sha512_Blind,_ecc_voprf_ristretto255_sha512_BlindEvaluate,_ecc_voprf_ristretto255_sha512_Finalize,_ecc_voprf_ristretto255_sha512_Evaluate,_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateWithScalar,_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate,_ecc_voprf_ristretto255_sha512_VerifiableFinalize,_ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar,_ecc_voprf_ristretto255_sha512_PartiallyBlind,_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar,_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate,_ecc_voprf_ristretto255_sha512_PartiallyFinalize,_ecc_voprf_ristretto255_sha512_PartiallyEvaluate,_ecc_opaque_ristretto255_sha512_DeriveKeyPair,_ecc_opaque_ristretto255_sha512_CreateCleartextCredentials,_ecc_opaque_ristretto255_sha512_EnvelopeStoreWithNonce,_ecc_opaque_ristretto255_sha512_DeriveAuthKeyPair,_ecc_opaque_ristretto255_sha512_EnvelopeStore,_ecc_opaque_ristretto255_sha512_EnvelopeRecover,_ecc_opaque_ristretto255_sha512_RecoverPublicKey,_ecc_opaque_ristretto255_sha512_GenerateAuthKeyPair,_ecc_opaque_ristretto255_sha512_CreateRegistrationRequestWithBlind,_ecc_opaque_ristretto255_sha512_CreateRegistrationRequest,_ecc_opaque_ristretto255_sha512_CreateRegistrationResponse,_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequestWithNonce,_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequest,_ecc_opaque_ristretto255_sha512_CreateCredentialRequestWithBlind,_ecc_opaque_ristretto255_sha512_CreateCredentialRequest,_ecc_opaque_ristretto255_sha512_CreateCredentialResponseWithMasking,_ecc_opaque_ristretto255_sha512_CreateCredentialResponse,_ecc_opaque_ristretto255_sha512_RecoverCredentials,_ecc_opaque_ristretto255_sha512_3DH_Expand_Label,_ecc_opaque_ristretto255_sha512_3DH_Derive_Secret,_ecc_opaque_ristretto255_sha512_3DH_Preamble,_ecc_opaque_ristretto255_sha512_3DH_TripleDHIKM,_ecc_opaque_ristretto255_sha512_3DH_DeriveKeys,_ecc_opaque_ristretto255_sha512_ClientInitWithSecrets,_ecc_opaque_ristretto255_sha512_3DH_StartWithSecrets,_ecc_opaque_ristretto255_sha512_ClientInit,_ecc_opaque_ristretto255_sha512_3DH_Start,_ecc_opaque_ristretto255_sha512_ClientFinish,_ecc_opaque_ristretto255_sha512_3DH_ClientFinalize,_ecc_opaque_ristretto255_sha512_ServerInitWithSecrets,_ecc_opaque_ristretto255_sha512_3DH_ResponseWithSecrets,_ecc_opaque_ristretto255_sha512_ServerInit,_ecc_opaque_ristretto255_sha512_3DH_Response,_ecc_opaque_ristretto255_sha512_ServerFinish,_ecc_sign_ed25519_Sign,_ecc_sign_ed25519_Verify,_ecc_sign_ed25519_KeyPair,_ecc_sign_ed25519_SeedKeyPair,_ecc_sign_ed25519_SkToSeed,_ecc_sign_ed25519_SkToPk,_ecc_sign_eth_bls_KeyGen,_ecc_sign_eth_bls_SkToPk,_ecc_sign_eth_bls_KeyValidate,_ecc_sign_eth_bls_Sign,_ecc_sign_eth_bls_Verify,_ecc_sign_eth_bls_Aggregate,_ecc_sign_eth_bls_FastAggregateVerify,_ecc_sign_eth_bls_AggregateVerify,_ecc_frost_ristretto255_sha512_nonce_generate_with_randomness,_ecc_frost_ristretto255_sha512_H3_2,_ecc_frost_ristretto255_sha512_nonce_generate,_ecc_frost_ristretto255_sha512_derive_interpolating_value,_ecc_frost_ristretto255_sha512_derive_interpolating_value_with_points,_ecc_frost_ristretto255_sha512_encode_group_commitment_list,_ecc_frost_ristretto255_sha512_participants_from_commitment_list,_ecc_frost_ristretto255_sha512_binding_factor_for_participant,_ecc_frost_ristretto255_sha512_compute_binding_factors,_ecc_frost_ristretto255_sha512_H4,_ecc_frost_ristretto255_sha512_H5,_ecc_frost_ristretto255_sha512_H1,_ecc_frost_ristretto255_sha512_compute_group_commitment,_ecc_frost_ristretto255_sha512_compute_challenge,_ecc_frost_ristretto255_sha512_H2_3,_ecc_frost_ristretto255_sha512_commit_with_randomness,_ecc_frost_ristretto255_sha512_commit,_ecc_frost_ristretto255_sha512_sign,_ecc_frost_ristretto255_sha512_aggregate,_ecc_frost_ristretto255_sha512_verify_signature_share,_ecc_frost_ristretto255_sha512_H1_2,_ecc_frost_ristretto255_sha512_H2,_ecc_frost_ristretto255_sha512_H3,_ecc_frost_ristretto255_sha512_prime_order_sign,_ecc_frost_ristretto255_sha512_prime_order_verify,_ecc_frost_ristretto255_sha512_trusted_dealer_keygen_with_coefficients,_ecc_frost_ristretto255_sha512_secret_share_shard,_ecc_frost_ristretto255_sha512_vss_commit,_ecc_frost_ristretto255_sha512_polynomial_evaluate,_ecc_frost_ristretto255_sha512_secret_share_combine,_ecc_frost_ristretto255_sha512_polynomial_interpolate_constant,_ecc_frost_ristretto255_sha512_vss_verify,_ecc_frost_ristretto255_sha512_derive_group_info,_ecc_pre_schema1_MessageGen,_ecc_pre_schema1_DeriveKey,_ecc_pre_schema1_KeyGen,_ecc_pre_schema1_DeriveSigningKey,_ecc_pre_schema1_SigningKeyGen,_ecc_pre_schema1_EncryptWithSeed,_ecc_pre_schema1_Encrypt,_ecc_pre_schema1_ReKeyGen,_ecc_pre_schema1_ReEncrypt,_ecc_pre_schema1_DecryptLevel1,_ecc_pre_schema1_DecryptLevel2;WebAssembly.instantiate(Module["wasm"],imports).then(function(output){var asm=output.instance.exports;_ecc_memzero=asm["f"];_ecc_randombytes=asm["g"];_ecc_bin2hex=asm["h"];_ecc_hex2bin=asm["i"];_ecc_concat2=asm["j"];_ecc_concat3=asm["k"];_ecc_concat4=asm["l"];_ecc_strxor=asm["m"];_ecc_I2OSP=asm["n"];_ecc_compare=asm["o"];_ecc_is_zero=asm["p"];_ecc_malloc=asm["q"];_ecc_free=asm["r"];_ecc_hash_sha256=asm["t"];_ecc_hash_sha512=asm["u"];_ecc_mac_hmac_sha256=asm["v"];_ecc_mac_hmac_sha512=asm["w"];_ecc_kdf_hkdf_sha256_extract=asm["x"];_ecc_kdf_hkdf_sha256_expand=asm["y"];_ecc_kdf_hkdf_sha512_extract=asm["z"];_ecc_kdf_hkdf_sha512_expand=asm["A"];_ecc_kdf_scrypt=asm["B"];_ecc_ed25519_is_valid_point=asm["C"];_ecc_ed25519_add=asm["D"];_ecc_ed25519_sub=asm["E"];_ecc_ed25519_generator=asm["F"];_ecc_ed25519_scalarmult_base=asm["G"];_ecc_ed25519_from_uniform=asm["H"];_ecc_ed25519_random=asm["I"];_ecc_ed25519_scalar_random=asm["J"];_ecc_ed25519_scalar_invert=asm["K"];_ecc_ed25519_scalar_negate=asm["L"];_ecc_ed25519_scalar_complement=asm["M"];_ecc_ed25519_scalar_add=asm["N"];_ecc_ed25519_scalar_sub=asm["O"];_ecc_ed25519_scalar_mul=asm["P"];_ecc_ed25519_scalar_reduce=asm["Q"];_ecc_ed25519_scalarmult=asm["R"];_ecc_ristretto255_is_valid_point=asm["S"];_ecc_ristretto255_add=asm["T"];_ecc_ristretto255_sub=asm["U"];_ecc_ristretto255_generator=asm["V"];_ecc_ristretto255_scalarmult_base=asm["W"];_ecc_ristretto255_from_hash=asm["X"];_ecc_ristretto255_random=asm["Y"];_ecc_ristretto255_scalar_random=asm["Z"];_ecc_ristretto255_scalar_invert=asm["_"];_ecc_ristretto255_scalar_negate=asm["$"];_ecc_ristretto255_scalar_complement=asm["aa"];_ecc_ristretto255_scalar_add=asm["ba"];_ecc_ristretto255_scalar_sub=asm["ca"];_ecc_ristretto255_scalar_mul=asm["da"];_ecc_ristretto255_scalar_reduce=asm["ea"];_ecc_ristretto255_scalarmult=asm["fa"];_ecc_bls12_381_fp_random=asm["ga"];_ecc_bls12_381_fp12_one=asm["ha"];_ecc_bls12_381_fp12_is_one=asm["ia"];_ecc_bls12_381_fp12_inverse=asm["ja"];_ecc_bls12_381_fp12_sqr=asm["ka"];_ecc_bls12_381_fp12_mul=asm["la"];_ecc_bls12_381_fp12_pow=asm["ma"];_ecc_bls12_381_fp12_random=asm["na"];_ecc_bls12_381_g1_add=asm["oa"];_ecc_bls12_381_g1_negate=asm["pa"];_ecc_bls12_381_g1_generator=asm["qa"];_ecc_bls12_381_g1_scalarmult=asm["ra"];_ecc_bls12_381_g1_scalarmult_base=asm["sa"];_ecc_bls12_381_g2_add=asm["ta"];_ecc_bls12_381_g2_negate=asm["ua"];_ecc_bls12_381_g2_generator=asm["va"];_ecc_bls12_381_g2_scalarmult_base=asm["wa"];_ecc_bls12_381_scalar_random=asm["xa"];_ecc_bls12_381_pairing=asm["ya"];_ecc_bls12_381_pairing_miller_loop=asm["za"];_ecc_bls12_381_pairing_final_exp=asm["Aa"];_ecc_bls12_381_pairing_final_verify=asm["Ba"];_ecc_h2c_expand_message_xmd_sha256=asm["Ca"];_ecc_h2c_expand_message_xmd_sha512=asm["Da"];_ecc_voprf_ristretto255_sha512_GenerateProofWithScalar=asm["Ea"];_ecc_voprf_ristretto255_sha512_ComputeCompositesFast=asm["Fa"];_ecc_voprf_ristretto255_sha512_HashToScalar=asm["Ga"];_ecc_voprf_ristretto255_sha512_HashToScalarWithDST=asm["Ha"];_ecc_voprf_ristretto255_sha512_GenerateProof=asm["Ia"];_ecc_voprf_ristretto255_sha512_VerifyProof=asm["Ja"];_ecc_voprf_ristretto255_sha512_ComputeComposites=asm["Ka"];_ecc_voprf_ristretto255_sha512_GenerateKeyPair=asm["La"];_ecc_voprf_ristretto255_sha512_DeriveKeyPair=asm["Ma"];_ecc_voprf_ristretto255_sha512_BlindWithScalar=asm["Na"];_ecc_voprf_ristretto255_sha512_HashToGroup=asm["Oa"];_ecc_voprf_ristretto255_sha512_HashToGroupWithDST=asm["Pa"];_ecc_voprf_ristretto255_sha512_Blind=asm["Qa"];_ecc_voprf_ristretto255_sha512_BlindEvaluate=asm["Ra"];_ecc_voprf_ristretto255_sha512_Finalize=asm["Sa"];_ecc_voprf_ristretto255_sha512_Evaluate=asm["Ta"];_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateWithScalar=asm["Ua"];_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate=asm["Va"];_ecc_voprf_ristretto255_sha512_VerifiableFinalize=asm["Wa"];_ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar=asm["Xa"];_ecc_voprf_ristretto255_sha512_PartiallyBlind=asm["Ya"];_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar=asm["Za"];_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate=asm["_a"];_ecc_voprf_ristretto255_sha512_PartiallyFinalize=asm["$a"];_ecc_voprf_ristretto255_sha512_PartiallyEvaluate=asm["ab"];_ecc_opaque_ristretto255_sha512_DeriveKeyPair=asm["bb"];_ecc_opaque_ristretto255_sha512_CreateCleartextCredentials=asm["cb"];_ecc_opaque_ristretto255_sha512_EnvelopeStoreWithNonce=asm["db"];_ecc_opaque_ristretto255_sha512_DeriveAuthKeyPair=asm["eb"];_ecc_opaque_ristretto255_sha512_EnvelopeStore=asm["fb"];_ecc_opaque_ristretto255_sha512_EnvelopeRecover=asm["gb"];_ecc_opaque_ristretto255_sha512_RecoverPublicKey=asm["hb"];_ecc_opaque_ristretto255_sha512_GenerateAuthKeyPair=asm["ib"];_ecc_opaque_ristretto255_sha512_CreateRegistrationRequestWithBlind=asm["jb"];_ecc_opaque_ristretto255_sha512_CreateRegistrationRequest=asm["kb"];_ecc_opaque_ristretto255_sha512_CreateRegistrationResponse=asm["lb"];_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequestWithNonce=asm["mb"];_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequest=asm["nb"];_ecc_opaque_ristretto255_sha512_CreateCredentialRequestWithBlind=asm["ob"];_ecc_opaque_ristretto255_sha512_CreateCredentialRequest=asm["pb"];_ecc_opaque_ristretto255_sha512_CreateCredentialResponseWithMasking=asm["qb"];_ecc_opaque_ristretto255_sha512_CreateCredentialResponse=asm["rb"];_ecc_opaque_ristretto255_sha512_RecoverCredentials=asm["sb"];_ecc_opaque_ristretto255_sha512_3DH_Expand_Label=asm["tb"];_ecc_opaque_ristretto255_sha512_3DH_Derive_Secret=asm["ub"];_ecc_opaque_ristretto255_sha512_3DH_Preamble=asm["vb"];_ecc_opaque_ristretto255_sha512_3DH_TripleDHIKM=asm["wb"];_ecc_opaque_ristretto255_sha512_3DH_DeriveKeys=asm["xb"];_ecc_opaque_ristretto255_sha512_ClientInitWithSecrets=asm["yb"];_ecc_opaque_ristretto255_sha512_3DH_StartWithSecrets=asm["zb"];_ecc_opaque_ristretto255_sha512_ClientInit=asm["Ab"];_ecc_opaque_ristretto255_sha512_3DH_Start=asm["Bb"];_ecc_opaque_ristretto255_sha512_ClientFinish=asm["Cb"];_ecc_opaque_ristretto255_sha512_3DH_ClientFinalize=asm["Db"];_ecc_opaque_ristretto255_sha512_ServerInitWithSecrets=asm["Eb"];_ecc_opaque_ristretto255_sha512_3DH_ResponseWithSecrets=asm["Fb"];_ecc_opaque_ristretto255_sha512_ServerInit=asm["Gb"];_ecc_opaque_ristretto255_sha512_3DH_Response=asm["Hb"];_ecc_opaque_ristretto255_sha512_ServerFinish=asm["Ib"];_ecc_sign_ed25519_Sign=asm["Jb"];_ecc_sign_ed25519_Verify=asm["Kb"];_ecc_sign_ed25519_KeyPair=asm["Lb"];_ecc_sign_ed25519_SeedKeyPair=asm["Mb"];_ecc_sign_ed25519_SkToSeed=asm["Nb"];_ecc_sign_ed25519_SkToPk=asm["Ob"];_ecc_sign_eth_bls_KeyGen=asm["Pb"];_ecc_sign_eth_bls_SkToPk=asm["Qb"];_ecc_sign_eth_bls_KeyValidate=asm["Rb"];_ecc_sign_eth_bls_Sign=asm["Sb"];_ecc_sign_eth_bls_Verify=asm["Tb"];_ecc_sign_eth_bls_Aggregate=asm["Ub"];_ecc_sign_eth_bls_FastAggregateVerify=asm["Vb"];_ecc_sign_eth_bls_AggregateVerify=asm["Wb"];_ecc_frost_ristretto255_sha512_nonce_generate_with_randomness=asm["Xb"];_ecc_frost_ristretto255_sha512_H3_2=asm["Yb"];_ecc_frost_ristretto255_sha512_nonce_generate=asm["Zb"];_ecc_frost_ristretto255_sha512_derive_interpolating_value=asm["_b"];_ecc_frost_ristretto255_sha512_derive_interpolating_value_with_points=asm["$b"];_ecc_frost_ristretto255_sha512_encode_group_commitment_list=asm["ac"];_ecc_frost_ristretto255_sha512_participants_from_commitment_list=asm["bc"];_ecc_frost_ristretto255_sha512_binding_factor_for_participant=asm["cc"];_ecc_frost_ristretto255_sha512_compute_binding_factors=asm["dc"];_ecc_frost_ristretto255_sha512_H4=asm["ec"];_ecc_frost_ristretto255_sha512_H5=asm["fc"];_ecc_frost_ristretto255_sha512_H1=asm["gc"];_ecc_frost_ristretto255_sha512_compute_group_commitment=asm["hc"];_ecc_frost_ristretto255_sha512_compute_challenge=asm["ic"];_ecc_frost_ristretto255_sha512_H2_3=asm["jc"];_ecc_frost_ristretto255_sha512_commit_with_randomness=asm["kc"];_ecc_frost_ristretto255_sha512_commit=asm["lc"];_ecc_frost_ristretto255_sha512_sign=asm["mc"];_ecc_frost_ristretto255_sha512_aggregate=asm["nc"];_ecc_frost_ristretto255_sha512_verify_signature_share=asm["oc"];_ecc_frost_ristretto255_sha512_H1_2=asm["pc"];_ecc_frost_ristretto255_sha512_H2=asm["qc"];_ecc_frost_ristretto255_sha512_H3=asm["rc"];_ecc_frost_ristretto255_sha512_prime_order_sign=asm["sc"];_ecc_frost_ristretto255_sha512_prime_order_verify=asm["tc"];_ecc_frost_ristretto255_sha512_trusted_dealer_keygen_with_coefficients=asm["uc"];_ecc_frost_ristretto255_sha512_secret_share_shard=asm["vc"];_ecc_frost_ristretto255_sha512_vss_commit=asm["wc"];_ecc_frost_ristretto255_sha512_polynomial_evaluate=asm["xc"];_ecc_frost_ristretto255_sha512_secret_share_combine=asm["yc"];_ecc_frost_ristretto255_sha512_polynomial_interpolate_constant=asm["zc"];_ecc_frost_ristretto255_sha512_vss_verify=asm["Ac"];_ecc_frost_ristretto255_sha512_derive_group_info=asm["Bc"];_ecc_pre_schema1_MessageGen=asm["Cc"];_ecc_pre_schema1_DeriveKey=asm["Dc"];_ecc_pre_schema1_KeyGen=asm["Ec"];_ecc_pre_schema1_DeriveSigningKey=asm["Fc"];_ecc_pre_schema1_SigningKeyGen=asm["Gc"];_ecc_pre_schema1_EncryptWithSeed=asm["Hc"];_ecc_pre_schema1_Encrypt=asm["Ic"];_ecc_pre_schema1_ReKeyGen=asm["Jc"];_ecc_pre_schema1_ReEncrypt=asm["Kc"];_ecc_pre_schema1_DecryptLevel1=asm["Lc"];_ecc_pre_schema1_DecryptLevel2=asm["Mc"];wasmTable=asm["s"];wasmMemory=asm["d"];updateGlobalBufferAndViews(wasmMemory.buffer);initRuntime(asm);ready()});function arraycopy(src,srcPos,dest,destPos,length){dest.set(src.subarray(srcPos,srcPos+length),destPos)}function mput(src,size){if(!src)return 0;const pos=_ecc_malloc(size);arraycopy(src,0,HEAPU8,pos,size);return pos}function mget(dest,pos,size){arraycopy(HEAPU8,pos,dest,0,size)}function mfree(ptr,size){_ecc_free(ptr,size)}Module.ecc_randombytes=(buf,n)=>{const ptr_buf=mput(buf,n);_ecc_randombytes(ptr_buf,n);mget(buf,ptr_buf,n);mfree(ptr_buf,n)};Module.ecc_concat2=(out,a1,a1_len,a2,a2_len)=>{const ptr_out=mput(out,a1_len+a2_len);const ptr_a1=mput(a1,a1_len);const ptr_a2=mput(a2,a2_len);_ecc_concat2(ptr_out,ptr_a1,a1_len,ptr_a2,a2_len);mget(out,ptr_out,a1_len+a2_len);mfree(ptr_out,a1_len+a2_len);mfree(ptr_a1,a1_len);mfree(ptr_a2,a2_len)};Module.ecc_concat3=(out,a1,a1_len,a2,a2_len,a3,a3_len)=>{const ptr_out=mput(out,a1_len+a2_len+a3_len);const ptr_a1=mput(a1,a1_len);const ptr_a2=mput(a2,a2_len);const ptr_a3=mput(a3,a3_len);_ecc_concat3(ptr_out,ptr_a1,a1_len,ptr_a2,a2_len,ptr_a3,a3_len);mget(out,ptr_out,a1_len+a2_len+a3_len);mfree(ptr_out,a1_len+a2_len+a3_len);mfree(ptr_a1,a1_len);mfree(ptr_a2,a2_len);mfree(ptr_a3,a3_len)};Module.ecc_concat4=(out,a1,a1_len,a2,a2_len,a3,a3_len,a4,a4_len)=>{const ptr_out=mput(out,a1_len+a2_len+a3_len+a4_len);const ptr_a1=mput(a1,a1_len);const ptr_a2=mput(a2,a2_len);const ptr_a3=mput(a3,a3_len);const ptr_a4=mput(a4,a4_len);_ecc_concat4(ptr_out,ptr_a1,a1_len,ptr_a2,a2_len,ptr_a3,a3_len,ptr_a4,a4_len);mget(out,ptr_out,a1_len+a2_len+a3_len+a4_len);mfree(ptr_out,a1_len+a2_len+a3_len+a4_len);mfree(ptr_a1,a1_len);mfree(ptr_a2,a2_len);mfree(ptr_a3,a3_len);mfree(ptr_a4,a4_len)};Module.ecc_strxor=(out,a,b,len)=>{const ptr_out=mput(out,len);const ptr_a=mput(a,len);const ptr_b=mput(b,len);_ecc_strxor(ptr_out,ptr_a,ptr_b,len);mget(out,ptr_out,len);mfree(ptr_out,len);mfree(ptr_a,len);mfree(ptr_b,len)};Module.ecc_I2OSP=(out,x,xLen)=>{const ptr_out=mput(out,xLen);_ecc_I2OSP(ptr_out,x,xLen);mget(out,ptr_out,xLen);mfree(ptr_out,xLen)};Module.ecc_compare=(a,b,len)=>{const ptr_a=mput(a,len);const ptr_b=mput(b,len);const fun_ret=_ecc_compare(ptr_a,ptr_b,len);mfree(ptr_a,len);mfree(ptr_b,len);return fun_ret};Module.ecc_is_zero=(n,len)=>{const ptr_n=mput(n,len);const fun_ret=_ecc_is_zero(ptr_n,len);mfree(ptr_n,len);return fun_ret};const ecc_hash_sha256_HASHSIZE=32;Module.ecc_hash_sha256_HASHSIZE=ecc_hash_sha256_HASHSIZE;const ecc_hash_sha512_HASHSIZE=64;Module.ecc_hash_sha512_HASHSIZE=ecc_hash_sha512_HASHSIZE;Module.ecc_hash_sha256=(digest,input,input_len)=>{const ptr_digest=mput(digest,ecc_hash_sha256_HASHSIZE);const ptr_input=mput(input,input_len);_ecc_hash_sha256(ptr_digest,ptr_input,input_len);mget(digest,ptr_digest,ecc_hash_sha256_HASHSIZE);mfree(ptr_digest,ecc_hash_sha256_HASHSIZE);mfree(ptr_input,input_len)};Module.ecc_hash_sha512=(digest,input,input_len)=>{const ptr_digest=mput(digest,ecc_hash_sha512_HASHSIZE);const ptr_input=mput(input,input_len);_ecc_hash_sha512(ptr_digest,ptr_input,input_len);mget(digest,ptr_digest,ecc_hash_sha512_HASHSIZE);mfree(ptr_digest,ecc_hash_sha512_HASHSIZE);mfree(ptr_input,input_len)};const ecc_mac_hmac_sha256_HASHSIZE=32;Module.ecc_mac_hmac_sha256_HASHSIZE=ecc_mac_hmac_sha256_HASHSIZE;const ecc_mac_hmac_sha512_HASHSIZE=64;Module.ecc_mac_hmac_sha512_HASHSIZE=ecc_mac_hmac_sha512_HASHSIZE;Module.ecc_mac_hmac_sha256=(digest,text,text_len,key,key_len)=>{const ptr_digest=mput(digest,ecc_mac_hmac_sha256_HASHSIZE);const ptr_text=mput(text,text_len);const ptr_key=mput(key,key_len);_ecc_mac_hmac_sha256(ptr_digest,ptr_text,text_len,ptr_key,key_len);mget(digest,ptr_digest,ecc_mac_hmac_sha256_HASHSIZE);mfree(ptr_digest,ecc_mac_hmac_sha256_HASHSIZE);mfree(ptr_text,text_len);mfree(ptr_key,key_len)};Module.ecc_mac_hmac_sha512=(digest,text,text_len,key,key_len)=>{const ptr_digest=mput(digest,ecc_mac_hmac_sha512_HASHSIZE);const ptr_text=mput(text,text_len);const ptr_key=mput(key,key_len);_ecc_mac_hmac_sha512(ptr_digest,ptr_text,text_len,ptr_key,key_len);mget(digest,ptr_digest,ecc_mac_hmac_sha512_HASHSIZE);mfree(ptr_digest,ecc_mac_hmac_sha512_HASHSIZE);mfree(ptr_text,text_len);mfree(ptr_key,key_len)};const ecc_kdf_hkdf_sha256_KEYSIZE=32;Module.ecc_kdf_hkdf_sha256_KEYSIZE=ecc_kdf_hkdf_sha256_KEYSIZE;const ecc_kdf_hkdf_sha512_KEYSIZE=64;Module.ecc_kdf_hkdf_sha512_KEYSIZE=ecc_kdf_hkdf_sha512_KEYSIZE;Module.ecc_kdf_hkdf_sha256_extract=(prk,salt,salt_len,ikm,ikm_len)=>{const ptr_prk=mput(prk,ecc_kdf_hkdf_sha256_KEYSIZE);const ptr_salt=mput(salt,salt_len);const ptr_ikm=mput(ikm,ikm_len);_ecc_kdf_hkdf_sha256_extract(ptr_prk,ptr_salt,salt_len,ptr_ikm,ikm_len);mget(prk,ptr_prk,ecc_kdf_hkdf_sha256_KEYSIZE);mfree(ptr_prk,ecc_kdf_hkdf_sha256_KEYSIZE);mfree(ptr_salt,salt_len);mfree(ptr_ikm,ikm_len)};Module.ecc_kdf_hkdf_sha256_expand=(okm,prk,info,info_len,len)=>{const ptr_okm=mput(okm,len);const ptr_prk=mput(prk,ecc_kdf_hkdf_sha256_KEYSIZE);const ptr_info=mput(info,info_len);_ecc_kdf_hkdf_sha256_expand(ptr_okm,ptr_prk,ptr_info,info_len,len);mget(okm,ptr_okm,len);mfree(ptr_okm,len);mfree(ptr_prk,ecc_kdf_hkdf_sha256_KEYSIZE);mfree(ptr_info,info_len)};Module.ecc_kdf_hkdf_sha512_extract=(prk,salt,salt_len,ikm,ikm_len)=>{const ptr_prk=mput(prk,ecc_kdf_hkdf_sha512_KEYSIZE);const ptr_salt=mput(salt,salt_len);const ptr_ikm=mput(ikm,ikm_len);_ecc_kdf_hkdf_sha512_extract(ptr_prk,ptr_salt,salt_len,ptr_ikm,ikm_len);mget(prk,ptr_prk,ecc_kdf_hkdf_sha512_KEYSIZE);mfree(ptr_prk,ecc_kdf_hkdf_sha512_KEYSIZE);mfree(ptr_salt,salt_len);mfree(ptr_ikm,ikm_len)};Module.ecc_kdf_hkdf_sha512_expand=(okm,prk,info,info_len,len)=>{const ptr_okm=mput(okm,len);const ptr_prk=mput(prk,ecc_kdf_hkdf_sha512_KEYSIZE);const ptr_info=mput(info,info_len);_ecc_kdf_hkdf_sha512_expand(ptr_okm,ptr_prk,ptr_info,info_len,len);mget(okm,ptr_okm,len);mfree(ptr_okm,len);mfree(ptr_prk,ecc_kdf_hkdf_sha512_KEYSIZE);mfree(ptr_info,info_len)};Module.ecc_kdf_scrypt=(out,passphrase,passphrase_len,salt,salt_len,cost,block_size,parallelization,len)=>{const ptr_out=mput(out,len);const ptr_passphrase=mput(passphrase,passphrase_len);const ptr_salt=mput(salt,salt_len);const fun_ret=_ecc_kdf_scrypt(ptr_out,ptr_passphrase,passphrase_len,ptr_salt,salt_len,cost,block_size,parallelization,len);mget(out,ptr_out,len);mfree(ptr_out,len);mfree(ptr_passphrase,passphrase_len);mfree(ptr_salt,salt_len);return fun_ret};const ecc_ed25519_ELEMENTSIZE=32;Module.ecc_ed25519_ELEMENTSIZE=ecc_ed25519_ELEMENTSIZE;const ecc_ed25519_UNIFORMSIZE=32;Module.ecc_ed25519_UNIFORMSIZE=ecc_ed25519_UNIFORMSIZE;const ecc_ed25519_SCALARSIZE=32;Module.ecc_ed25519_SCALARSIZE=ecc_ed25519_SCALARSIZE;const ecc_ed25519_NONREDUCEDSCALARSIZE=64;Module.ecc_ed25519_NONREDUCEDSCALARSIZE=ecc_ed25519_NONREDUCEDSCALARSIZE;Module.ecc_ed25519_is_valid_point=p=>{const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);const fun_ret=_ecc_ed25519_is_valid_point(ptr_p);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE);return fun_ret};Module.ecc_ed25519_add=(r,p,q)=>{const ptr_r=mput(r,ecc_ed25519_ELEMENTSIZE);const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);const ptr_q=mput(q,ecc_ed25519_ELEMENTSIZE);const fun_ret=_ecc_ed25519_add(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_ed25519_ELEMENTSIZE);mfree(ptr_r,ecc_ed25519_ELEMENTSIZE);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE);mfree(ptr_q,ecc_ed25519_ELEMENTSIZE);return fun_ret};Module.ecc_ed25519_sub=(r,p,q)=>{const ptr_r=mput(r,ecc_ed25519_ELEMENTSIZE);const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);const ptr_q=mput(q,ecc_ed25519_ELEMENTSIZE);const fun_ret=_ecc_ed25519_sub(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_ed25519_ELEMENTSIZE);mfree(ptr_r,ecc_ed25519_ELEMENTSIZE);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE);mfree(ptr_q,ecc_ed25519_ELEMENTSIZE);return fun_ret};Module.ecc_ed25519_generator=g=>{const ptr_g=mput(g,ecc_ed25519_ELEMENTSIZE);_ecc_ed25519_generator(ptr_g);mget(g,ptr_g,ecc_ed25519_ELEMENTSIZE);mfree(ptr_g,ecc_ed25519_ELEMENTSIZE)};Module.ecc_ed25519_from_uniform=(p,r)=>{const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);const ptr_r=mput(r,ecc_ed25519_UNIFORMSIZE);_ecc_ed25519_from_uniform(ptr_p,ptr_r);mget(p,ptr_p,ecc_ed25519_ELEMENTSIZE);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE);mfree(ptr_r,ecc_ed25519_UNIFORMSIZE)};Module.ecc_ed25519_random=p=>{const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);_ecc_ed25519_random(ptr_p);mget(p,ptr_p,ecc_ed25519_ELEMENTSIZE);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE)};Module.ecc_ed25519_scalar_random=r=>{const ptr_r=mput(r,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_random(ptr_r);mget(r,ptr_r,ecc_ed25519_SCALARSIZE);mfree(ptr_r,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_invert=(recip,s)=>{const ptr_recip=mput(recip,ecc_ed25519_SCALARSIZE);const ptr_s=mput(s,ecc_ed25519_SCALARSIZE);const fun_ret=_ecc_ed25519_scalar_invert(ptr_recip,ptr_s);mget(recip,ptr_recip,ecc_ed25519_SCALARSIZE);mfree(ptr_recip,ecc_ed25519_SCALARSIZE);mfree(ptr_s,ecc_ed25519_SCALARSIZE);return fun_ret};Module.ecc_ed25519_scalar_negate=(neg,s)=>{const ptr_neg=mput(neg,ecc_ed25519_SCALARSIZE);const ptr_s=mput(s,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_negate(ptr_neg,ptr_s);mget(neg,ptr_neg,ecc_ed25519_SCALARSIZE);mfree(ptr_neg,ecc_ed25519_SCALARSIZE);mfree(ptr_s,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_complement=(comp,s)=>{const ptr_comp=mput(comp,ecc_ed25519_SCALARSIZE);const ptr_s=mput(s,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_complement(ptr_comp,ptr_s);mget(comp,ptr_comp,ecc_ed25519_SCALARSIZE);mfree(ptr_comp,ecc_ed25519_SCALARSIZE);mfree(ptr_s,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_add=(z,x,y)=>{const ptr_z=mput(z,ecc_ed25519_SCALARSIZE);const ptr_x=mput(x,ecc_ed25519_SCALARSIZE);const ptr_y=mput(y,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_add(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_x,ecc_ed25519_SCALARSIZE);mfree(ptr_y,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_sub=(z,x,y)=>{const ptr_z=mput(z,ecc_ed25519_SCALARSIZE);const ptr_x=mput(x,ecc_ed25519_SCALARSIZE);const ptr_y=mput(y,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_sub(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_x,ecc_ed25519_SCALARSIZE);mfree(ptr_y,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_mul=(z,x,y)=>{const ptr_z=mput(z,ecc_ed25519_SCALARSIZE);const ptr_x=mput(x,ecc_ed25519_SCALARSIZE);const ptr_y=mput(y,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_mul(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_x,ecc_ed25519_SCALARSIZE);mfree(ptr_y,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_reduce=(r,s)=>{const ptr_r=mput(r,ecc_ed25519_SCALARSIZE);const ptr_s=mput(s,ecc_ed25519_NONREDUCEDSCALARSIZE);_ecc_ed25519_scalar_reduce(ptr_r,ptr_s);mget(r,ptr_r,ecc_ed25519_SCALARSIZE);mfree(ptr_r,ecc_ed25519_SCALARSIZE);mfree(ptr_s,ecc_ed25519_NONREDUCEDSCALARSIZE)};Module.ecc_ed25519_scalarmult=(q,n,p)=>{const ptr_q=mput(q,ecc_ed25519_ELEMENTSIZE);const ptr_n=mput(n,ecc_ed25519_SCALARSIZE);const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);const fun_ret=_ecc_ed25519_scalarmult(ptr_q,ptr_n,ptr_p);mget(q,ptr_q,ecc_ed25519_ELEMENTSIZE);mfree(ptr_q,ecc_ed25519_ELEMENTSIZE);mfree(ptr_n,ecc_ed25519_SCALARSIZE);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE);return fun_ret};Module.ecc_ed25519_scalarmult_base=(q,n)=>{const ptr_q=mput(q,ecc_ed25519_ELEMENTSIZE);const ptr_n=mput(n,ecc_ed25519_SCALARSIZE);const fun_ret=_ecc_ed25519_scalarmult_base(ptr_q,ptr_n);mget(q,ptr_q,ecc_ed25519_ELEMENTSIZE);mfree(ptr_q,ecc_ed25519_ELEMENTSIZE);mfree(ptr_n,ecc_ed25519_SCALARSIZE);return fun_ret};const ecc_ristretto255_ELEMENTSIZE=32;Module.ecc_ristretto255_ELEMENTSIZE=ecc_ristretto255_ELEMENTSIZE;const ecc_ristretto255_HASHSIZE=64;Module.ecc_ristretto255_HASHSIZE=ecc_ristretto255_HASHSIZE;const ecc_ristretto255_SCALARSIZE=32;Module.ecc_ristretto255_SCALARSIZE=ecc_ristretto255_SCALARSIZE;const ecc_ristretto255_NONREDUCEDSCALARSIZE=64;Module.ecc_ristretto255_NONREDUCEDSCALARSIZE=ecc_ristretto255_NONREDUCEDSCALARSIZE;Module.ecc_ristretto255_is_valid_point=p=>{const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);const fun_ret=_ecc_ristretto255_is_valid_point(ptr_p);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE);return fun_ret};Module.ecc_ristretto255_add=(r,p,q)=>{const ptr_r=mput(r,ecc_ristretto255_ELEMENTSIZE);const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);const ptr_q=mput(q,ecc_ristretto255_ELEMENTSIZE);const fun_ret=_ecc_ristretto255_add(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_r,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_q,ecc_ristretto255_ELEMENTSIZE);return fun_ret};Module.ecc_ristretto255_sub=(r,p,q)=>{const ptr_r=mput(r,ecc_ristretto255_ELEMENTSIZE);const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);const ptr_q=mput(q,ecc_ristretto255_ELEMENTSIZE);const fun_ret=_ecc_ristretto255_sub(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_r,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_q,ecc_ristretto255_ELEMENTSIZE);return fun_ret};Module.ecc_ristretto255_generator=g=>{const ptr_g=mput(g,ecc_ristretto255_ELEMENTSIZE);_ecc_ristretto255_generator(ptr_g);mget(g,ptr_g,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_g,ecc_ristretto255_ELEMENTSIZE)};Module.ecc_ristretto255_from_hash=(p,r)=>{const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);const ptr_r=mput(r,ecc_ristretto255_HASHSIZE);_ecc_ristretto255_from_hash(ptr_p,ptr_r);mget(p,ptr_p,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_r,ecc_ristretto255_HASHSIZE)};Module.ecc_ristretto255_random=p=>{const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);_ecc_ristretto255_random(ptr_p);mget(p,ptr_p,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE)};Module.ecc_ristretto255_scalar_random=r=>{const ptr_r=mput(r,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_random(ptr_r);mget(r,ptr_r,ecc_ristretto255_SCALARSIZE);mfree(ptr_r,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_invert=(recip,s)=>{const ptr_recip=mput(recip,ecc_ristretto255_SCALARSIZE);const ptr_s=mput(s,ecc_ristretto255_SCALARSIZE);const fun_ret=_ecc_ristretto255_scalar_invert(ptr_recip,ptr_s);mget(recip,ptr_recip,ecc_ristretto255_SCALARSIZE);mfree(ptr_recip,ecc_ristretto255_SCALARSIZE);mfree(ptr_s,ecc_ristretto255_SCALARSIZE);return fun_ret};Module.ecc_ristretto255_scalar_negate=(neg,s)=>{const ptr_neg=mput(neg,ecc_ristretto255_SCALARSIZE);const ptr_s=mput(s,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_negate(ptr_neg,ptr_s);mget(neg,ptr_neg,ecc_ristretto255_SCALARSIZE);mfree(ptr_neg,ecc_ristretto255_SCALARSIZE);mfree(ptr_s,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_complement=(comp,s)=>{const ptr_comp=mput(comp,ecc_ristretto255_SCALARSIZE);const ptr_s=mput(s,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_complement(ptr_comp,ptr_s);mget(comp,ptr_comp,ecc_ristretto255_SCALARSIZE);mfree(ptr_comp,ecc_ristretto255_SCALARSIZE);mfree(ptr_s,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_add=(z,x,y)=>{const ptr_z=mput(z,ecc_ristretto255_SCALARSIZE);const ptr_x=mput(x,ecc_ristretto255_SCALARSIZE);const ptr_y=mput(y,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_add(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_x,ecc_ristretto255_SCALARSIZE);mfree(ptr_y,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_sub=(z,x,y)=>{const ptr_z=mput(z,ecc_ristretto255_SCALARSIZE);const ptr_x=mput(x,ecc_ristretto255_SCALARSIZE);const ptr_y=mput(y,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_sub(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_x,ecc_ristretto255_SCALARSIZE);mfree(ptr_y,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_mul=(z,x,y)=>{const ptr_z=mput(z,ecc_ristretto255_SCALARSIZE);const ptr_x=mput(x,ecc_ristretto255_SCALARSIZE);const ptr_y=mput(y,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_mul(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_x,ecc_ristretto255_SCALARSIZE);mfree(ptr_y,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_reduce=(r,s)=>{const ptr_r=mput(r,ecc_ristretto255_SCALARSIZE);const ptr_s=mput(s,ecc_ristretto255_NONREDUCEDSCALARSIZE);_ecc_ristretto255_scalar_reduce(ptr_r,ptr_s);mget(r,ptr_r,ecc_ristretto255_SCALARSIZE);mfree(ptr_r,ecc_ristretto255_SCALARSIZE);mfree(ptr_s,ecc_ristretto255_NONREDUCEDSCALARSIZE)};Module.ecc_ristretto255_scalarmult=(q,n,p)=>{const ptr_q=mput(q,ecc_ristretto255_ELEMENTSIZE);const ptr_n=mput(n,ecc_ristretto255_SCALARSIZE);const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);const fun_ret=_ecc_ristretto255_scalarmult(ptr_q,ptr_n,ptr_p);mget(q,ptr_q,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_q,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_n,ecc_ristretto255_SCALARSIZE);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE);return fun_ret};Module.ecc_ristretto255_scalarmult_base=(q,n)=>{const ptr_q=mput(q,ecc_ristretto255_ELEMENTSIZE);const ptr_n=mput(n,ecc_ristretto255_SCALARSIZE);const fun_ret=_ecc_ristretto255_scalarmult_base(ptr_q,ptr_n);mget(q,ptr_q,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_q,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_n,ecc_ristretto255_SCALARSIZE);return fun_ret};const ecc_bls12_381_G1SIZE=48;Module.ecc_bls12_381_G1SIZE=ecc_bls12_381_G1SIZE;const ecc_bls12_381_G2SIZE=96;Module.ecc_bls12_381_G2SIZE=ecc_bls12_381_G2SIZE;const ecc_bls12_381_SCALARSIZE=32;Module.ecc_bls12_381_SCALARSIZE=ecc_bls12_381_SCALARSIZE;const ecc_bls12_381_FPSIZE=48;Module.ecc_bls12_381_FPSIZE=ecc_bls12_381_FPSIZE;const ecc_bls12_381_FP12SIZE=576;Module.ecc_bls12_381_FP12SIZE=ecc_bls12_381_FP12SIZE;Module.ecc_bls12_381_fp_random=ret=>{const ptr_ret=mput(ret,ecc_bls12_381_FPSIZE);_ecc_bls12_381_fp_random(ptr_ret);mget(ret,ptr_ret,ecc_bls12_381_FPSIZE);mfree(ptr_ret,ecc_bls12_381_FPSIZE)};Module.ecc_bls12_381_fp12_one=ret=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_one(ptr_ret);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_fp12_is_one=a=>{const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);const fun_ret=_ecc_bls12_381_fp12_is_one(ptr_a);mfree(ptr_a,ecc_bls12_381_FP12SIZE);return fun_ret};Module.ecc_bls12_381_fp12_inverse=(ret,a)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_inverse(ptr_ret,ptr_a);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_a,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_fp12_sqr=(ret,a)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_sqr(ptr_ret,ptr_a);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_a,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_fp12_mul=(ret,a,b)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);const ptr_b=mput(b,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_mul(ptr_ret,ptr_a,ptr_b);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_a,ecc_bls12_381_FP12SIZE);mfree(ptr_b,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_fp12_pow=(ret,a,n)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_pow(ptr_ret,ptr_a,n);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_a,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_fp12_random=ret=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_random(ptr_ret);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_g1_add=(r,p,q)=>{const ptr_r=mput(r,ecc_bls12_381_G1SIZE);const ptr_p=mput(p,ecc_bls12_381_G1SIZE);const ptr_q=mput(q,ecc_bls12_381_G1SIZE);_ecc_bls12_381_g1_add(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_bls12_381_G1SIZE);mfree(ptr_r,ecc_bls12_381_G1SIZE);mfree(ptr_p,ecc_bls12_381_G1SIZE);mfree(ptr_q,ecc_bls12_381_G1SIZE)};Module.ecc_bls12_381_g1_negate=(neg,p)=>{const ptr_neg=mput(neg,ecc_bls12_381_G1SIZE);const ptr_p=mput(p,ecc_bls12_381_G1SIZE);_ecc_bls12_381_g1_negate(ptr_neg,ptr_p);mget(neg,ptr_neg,ecc_bls12_381_G1SIZE);mfree(ptr_neg,ecc_bls12_381_G1SIZE);mfree(ptr_p,ecc_bls12_381_G1SIZE)};Module.ecc_bls12_381_g1_generator=g=>{const ptr_g=mput(g,ecc_bls12_381_G1SIZE);_ecc_bls12_381_g1_generator(ptr_g);mget(g,ptr_g,ecc_bls12_381_G1SIZE);mfree(ptr_g,ecc_bls12_381_G1SIZE)};Module.ecc_bls12_381_g1_scalarmult=(q,n,p)=>{const ptr_q=mput(q,ecc_bls12_381_G1SIZE);const ptr_n=mput(n,ecc_bls12_381_SCALARSIZE);const ptr_p=mput(p,ecc_bls12_381_G1SIZE);_ecc_bls12_381_g1_scalarmult(ptr_q,ptr_n,ptr_p);mget(q,ptr_q,ecc_bls12_381_G1SIZE);mfree(ptr_q,ecc_bls12_381_G1SIZE);mfree(ptr_n,ecc_bls12_381_SCALARSIZE);mfree(ptr_p,ecc_bls12_381_G1SIZE)};Module.ecc_bls12_381_g1_scalarmult_base=(q,n)=>{const ptr_q=mput(q,ecc_bls12_381_G1SIZE);const ptr_n=mput(n,ecc_bls12_381_SCALARSIZE);_ecc_bls12_381_g1_scalarmult_base(ptr_q,ptr_n);mget(q,ptr_q,ecc_bls12_381_G1SIZE);mfree(ptr_q,ecc_bls12_381_G1SIZE);mfree(ptr_n,ecc_bls12_381_SCALARSIZE)};Module.ecc_bls12_381_g2_add=(r,p,q)=>{const ptr_r=mput(r,ecc_bls12_381_G2SIZE);const ptr_p=mput(p,ecc_bls12_381_G2SIZE);const ptr_q=mput(q,ecc_bls12_381_G2SIZE);_ecc_bls12_381_g2_add(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_bls12_381_G2SIZE);mfree(ptr_r,ecc_bls12_381_G2SIZE);mfree(ptr_p,ecc_bls12_381_G2SIZE);mfree(ptr_q,ecc_bls12_381_G2SIZE)};Module.ecc_bls12_381_g2_negate=(neg,p)=>{const ptr_neg=mput(neg,ecc_bls12_381_G2SIZE);const ptr_p=mput(p,ecc_bls12_381_G2SIZE);_ecc_bls12_381_g2_negate(ptr_neg,ptr_p);mget(neg,ptr_neg,ecc_bls12_381_G2SIZE);mfree(ptr_neg,ecc_bls12_381_G2SIZE);mfree(ptr_p,ecc_bls12_381_G2SIZE)};Module.ecc_bls12_381_g2_generator=g=>{const ptr_g=mput(g,ecc_bls12_381_G2SIZE);_ecc_bls12_381_g2_generator(ptr_g);mget(g,ptr_g,ecc_bls12_381_G2SIZE);mfree(ptr_g,ecc_bls12_381_G2SIZE)};Module.ecc_bls12_381_g2_scalarmult_base=(q,n)=>{const ptr_q=mput(q,ecc_bls12_381_G2SIZE);const ptr_n=mput(n,ecc_bls12_381_SCALARSIZE);_ecc_bls12_381_g2_scalarmult_base(ptr_q,ptr_n);mget(q,ptr_q,ecc_bls12_381_G2SIZE);mfree(ptr_q,ecc_bls12_381_G2SIZE);mfree(ptr_n,ecc_bls12_381_SCALARSIZE)};Module.ecc_bls12_381_scalar_random=r=>{const ptr_r=mput(r,ecc_bls12_381_SCALARSIZE);_ecc_bls12_381_scalar_random(ptr_r);mget(r,ptr_r,ecc_bls12_381_SCALARSIZE);mfree(ptr_r,ecc_bls12_381_SCALARSIZE)};Module.ecc_bls12_381_pairing=(ret,p1_g1,p2_g2)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_p1_g1=mput(p1_g1,ecc_bls12_381_G1SIZE);const ptr_p2_g2=mput(p2_g2,ecc_bls12_381_G2SIZE);_ecc_bls12_381_pairing(ptr_ret,ptr_p1_g1,ptr_p2_g2);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_p1_g1,ecc_bls12_381_G1SIZE);mfree(ptr_p2_g2,ecc_bls12_381_G2SIZE)};Module.ecc_bls12_381_pairing_miller_loop=(ret,p1_g1,p2_g2)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_p1_g1=mput(p1_g1,ecc_bls12_381_G1SIZE);const ptr_p2_g2=mput(p2_g2,ecc_bls12_381_G2SIZE);_ecc_bls12_381_pairing_miller_loop(ptr_ret,ptr_p1_g1,ptr_p2_g2);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_p1_g1,ecc_bls12_381_G1SIZE);mfree(ptr_p2_g2,ecc_bls12_381_G2SIZE)};Module.ecc_bls12_381_pairing_final_exp=(ret,a)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_pairing_final_exp(ptr_ret,ptr_a);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_a,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_pairing_final_verify=(a,b)=>{const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);const ptr_b=mput(b,ecc_bls12_381_FP12SIZE);const fun_ret=_ecc_bls12_381_pairing_final_verify(ptr_a,ptr_b);mfree(ptr_a,ecc_bls12_381_FP12SIZE);mfree(ptr_b,ecc_bls12_381_FP12SIZE);return fun_ret};const ecc_h2c_expand_message_xmd_sha256_MAXSIZE=8160;Module.ecc_h2c_expand_message_xmd_sha256_MAXSIZE=ecc_h2c_expand_message_xmd_sha256_MAXSIZE;const ecc_h2c_expand_message_xmd_sha256_DSTMAXSIZE=255;Module.ecc_h2c_expand_message_xmd_sha256_DSTMAXSIZE=ecc_h2c_expand_message_xmd_sha256_DSTMAXSIZE;const ecc_h2c_expand_message_xmd_sha512_MAXSIZE=16320;Module.ecc_h2c_expand_message_xmd_sha512_MAXSIZE=ecc_h2c_expand_message_xmd_sha512_MAXSIZE;const ecc_h2c_expand_message_xmd_sha512_DSTMAXSIZE=255;Module.ecc_h2c_expand_message_xmd_sha512_DSTMAXSIZE=ecc_h2c_expand_message_xmd_sha512_DSTMAXSIZE;Module.ecc_h2c_expand_message_xmd_sha256=(out,msg,msg_len,dst,dst_len,len)=>{const ptr_out=mput(out,len);const ptr_msg=mput(msg,msg_len);const ptr_dst=mput(dst,dst_len);const fun_ret=_ecc_h2c_expand_message_xmd_sha256(ptr_out,ptr_msg,msg_len,ptr_dst,dst_len,len);mget(out,ptr_out,len);mfree(ptr_out,len);mfree(ptr_msg,msg_len);mfree(ptr_dst,dst_len);return fun_ret};Module.ecc_h2c_expand_message_xmd_sha512=(out,msg,msg_len,dst,dst_len,len)=>{const ptr_out=mput(out,len);const ptr_msg=mput(msg,msg_len);const ptr_dst=mput(dst,dst_len);const fun_ret=_ecc_h2c_expand_message_xmd_sha512(ptr_out,ptr_msg,msg_len,ptr_dst,dst_len,len);mget(out,ptr_out,len);mfree(ptr_out,len);mfree(ptr_msg,msg_len);mfree(ptr_dst,dst_len);return fun_ret};const ecc_voprf_ristretto255_sha512_ELEMENTSIZE=32;Module.ecc_voprf_ristretto255_sha512_ELEMENTSIZE=ecc_voprf_ristretto255_sha512_ELEMENTSIZE;const ecc_voprf_ristretto255_sha512_SCALARSIZE=32;Module.ecc_voprf_ristretto255_sha512_SCALARSIZE=ecc_voprf_ristretto255_sha512_SCALARSIZE;const ecc_voprf_ristretto255_sha512_PROOFSIZE=64;Module.ecc_voprf_ristretto255_sha512_PROOFSIZE=ecc_voprf_ristretto255_sha512_PROOFSIZE;const ecc_voprf_ristretto255_sha512_Nh=64;Module.ecc_voprf_ristretto255_sha512_Nh=ecc_voprf_ristretto255_sha512_Nh;const ecc_voprf_ristretto255_sha512_MODE_OPRF=0;Module.ecc_voprf_ristretto255_sha512_MODE_OPRF=ecc_voprf_ristretto255_sha512_MODE_OPRF;const ecc_voprf_ristretto255_sha512_MODE_VOPRF=1;Module.ecc_voprf_ristretto255_sha512_MODE_VOPRF=ecc_voprf_ristretto255_sha512_MODE_VOPRF;const ecc_voprf_ristretto255_sha512_MODE_POPRF=2;Module.ecc_voprf_ristretto255_sha512_MODE_POPRF=ecc_voprf_ristretto255_sha512_MODE_POPRF;const ecc_voprf_ristretto255_sha512_MAXINFOSIZE=2e3;Module.ecc_voprf_ristretto255_sha512_MAXINFOSIZE=ecc_voprf_ristretto255_sha512_MAXINFOSIZE;Module.ecc_voprf_ristretto255_sha512_GenerateProofWithScalar=(proof,k,A,B,C,D,m,mode,r)=>{const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_k=mput(k,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_A=mput(A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_B=mput(B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_C=mput(C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_D=mput(D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_r=mput(r,ecc_voprf_ristretto255_sha512_SCALARSIZE);_ecc_voprf_ristretto255_sha512_GenerateProofWithScalar(ptr_proof,ptr_k,ptr_A,ptr_B,ptr_C,ptr_D,m,mode,ptr_r);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_k,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_r,ecc_voprf_ristretto255_sha512_SCALARSIZE)};Module.ecc_voprf_ristretto255_sha512_GenerateProof=(proof,k,A,B,C,D,m,mode)=>{const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_k=mput(k,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_A=mput(A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_B=mput(B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_C=mput(C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_D=mput(D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_GenerateProof(ptr_proof,ptr_k,ptr_A,ptr_B,ptr_C,ptr_D,m,mode);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_k,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_ComputeCompositesFast=(M,Z,k,B,C,D,m,mode)=>{const ptr_M=mput(M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_Z=mput(Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_k=mput(k,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_B=mput(B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_C=mput(C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_D=mput(D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_ComputeCompositesFast(ptr_M,ptr_Z,ptr_k,ptr_B,ptr_C,ptr_D,m,mode);mget(M,ptr_M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(Z,ptr_Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_k,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_VerifyProof=(A,B,C,D,m,mode,proof)=>{const ptr_A=mput(A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_B=mput(B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_C=mput(C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_D=mput(D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_VerifyProof(ptr_A,ptr_B,ptr_C,ptr_D,m,mode,ptr_proof);mfree(ptr_A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_ComputeComposites=(M,Z,B,C,D,m,mode)=>{const ptr_M=mput(M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_Z=mput(Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_B=mput(B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_C=mput(C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_D=mput(D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_ComputeComposites(ptr_M,ptr_Z,ptr_B,ptr_C,ptr_D,m,mode);mget(M,ptr_M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(Z,ptr_Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_GenerateKeyPair=(skS,pkS)=>{const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_GenerateKeyPair(ptr_skS,ptr_pkS);mget(skS,ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mget(pkS,ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_DeriveKeyPair=(skS,pkS,seed,info,infoLen,mode)=>{const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_seed=mput(seed,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_info=mput(info,infoLen);const fun_ret=_ecc_voprf_ristretto255_sha512_DeriveKeyPair(ptr_skS,ptr_pkS,ptr_seed,ptr_info,infoLen,mode);mget(skS,ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mget(pkS,ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_seed,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_info,infoLen);return fun_ret};Module.ecc_voprf_ristretto255_sha512_BlindWithScalar=(blindedElement,input,inputLen,blind,mode)=>{const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_BlindWithScalar(ptr_blindedElement,ptr_input,inputLen,ptr_blind,mode);mget(blindedElement,ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_Blind=(blind,blindedElement,input,inputLen,mode)=>{const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);const fun_ret=_ecc_voprf_ristretto255_sha512_Blind(ptr_blind,ptr_blindedElement,ptr_input,inputLen,mode);mget(blind,ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mget(blindedElement,ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen);return fun_ret};Module.ecc_voprf_ristretto255_sha512_BlindEvaluate=(evaluatedElement,skS,blindedElement)=>{const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_BlindEvaluate(ptr_evaluatedElement,ptr_skS,ptr_blindedElement);mget(evaluatedElement,ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_Finalize=(output,input,inputLen,blind,evaluatedElement)=>{const ptr_output=mput(output,ecc_voprf_ristretto255_sha512_Nh);const ptr_input=mput(input,inputLen);const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_Finalize(ptr_output,ptr_input,inputLen,ptr_blind,ptr_evaluatedElement);mget(output,ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_input,inputLen);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_Evaluate=(output,skS,input,inputLen,mode)=>{const ptr_output=mput(output,ecc_voprf_ristretto255_sha512_Nh);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_input=mput(input,inputLen);const fun_ret=_ecc_voprf_ristretto255_sha512_Evaluate(ptr_output,ptr_skS,ptr_input,inputLen,mode);mget(output,ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_input,inputLen);return fun_ret};Module.ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateWithScalar=(evaluatedElement,proof,skS,pkS,blindedElement,r)=>{const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_r=mput(r,ecc_voprf_ristretto255_sha512_SCALARSIZE);_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateWithScalar(ptr_evaluatedElement,ptr_proof,ptr_skS,ptr_pkS,ptr_blindedElement,ptr_r);mget(evaluatedElement,ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_r,ecc_voprf_ristretto255_sha512_SCALARSIZE)};Module.ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate=(evaluatedElement,proof,skS,pkS,blindedElement)=>{const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate(ptr_evaluatedElement,ptr_proof,ptr_skS,ptr_pkS,ptr_blindedElement);mget(evaluatedElement,ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_VerifiableFinalize=(output,input,inputLen,blind,evaluatedElement,blindedElement,pkS,proof)=>{const ptr_output=mput(output,ecc_voprf_ristretto255_sha512_Nh);const ptr_input=mput(input,inputLen);const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_VerifiableFinalize(ptr_output,ptr_input,inputLen,ptr_blind,ptr_evaluatedElement,ptr_blindedElement,ptr_pkS,ptr_proof);mget(output,ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_input,inputLen);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar=(blindedElement,tweakedKey,input,inputLen,info,infoLen,pkS,blind)=>{const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_tweakedKey=mput(tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);const ptr_info=mput(info,infoLen);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar(ptr_blindedElement,ptr_tweakedKey,ptr_input,inputLen,ptr_info,infoLen,ptr_pkS,ptr_blind);mget(blindedElement,ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(tweakedKey,ptr_tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen);mfree(ptr_info,infoLen);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyBlind=(blind,blindedElement,tweakedKey,input,inputLen,info,infoLen,pkS)=>{const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_tweakedKey=mput(tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);const ptr_info=mput(info,infoLen);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyBlind(ptr_blind,ptr_blindedElement,ptr_tweakedKey,ptr_input,inputLen,ptr_info,infoLen,ptr_pkS);mget(blind,ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mget(blindedElement,ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(tweakedKey,ptr_tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen);mfree(ptr_info,infoLen);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar=(evaluatedElement,proof,skS,blindedElement,info,infoLen,r)=>{const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_info=mput(info,infoLen);const ptr_r=mput(r,ecc_voprf_ristretto255_sha512_SCALARSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar(ptr_evaluatedElement,ptr_proof,ptr_skS,ptr_blindedElement,ptr_info,infoLen,ptr_r);mget(evaluatedElement,ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_info,infoLen);mfree(ptr_r,ecc_voprf_ristretto255_sha512_SCALARSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate=(evaluatedElement,proof,skS,blindedElement,info,infoLen)=>{const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_info=mput(info,infoLen);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate(ptr_evaluatedElement,ptr_proof,ptr_skS,ptr_blindedElement,ptr_info,infoLen);mget(evaluatedElement,ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_info,infoLen);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyFinalize=(output,input,inputLen,blind,evaluatedElement,blindedElement,proof,info,infoLen,tweakedKey)=>{const ptr_output=mput(output,ecc_voprf_ristretto255_sha512_Nh);const ptr_input=mput(input,inputLen);const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_info=mput(info,infoLen);const ptr_tweakedKey=mput(tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyFinalize(ptr_output,ptr_input,inputLen,ptr_blind,ptr_evaluatedElement,ptr_blindedElement,ptr_proof,ptr_info,infoLen,ptr_tweakedKey);mget(output,ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_input,inputLen);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_info,infoLen);mfree(ptr_tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyEvaluate=(output,skS,input,inputLen,info,infoLen)=>{const ptr_output=mput(output,ecc_voprf_ristretto255_sha512_Nh);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_input=mput(input,inputLen);const ptr_info=mput(info,infoLen);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyEvaluate(ptr_output,ptr_skS,ptr_input,inputLen,ptr_info,infoLen);mget(output,ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_input,inputLen);mfree(ptr_info,infoLen);return fun_ret};Module.ecc_voprf_ristretto255_sha512_HashToGroupWithDST=(out,input,inputLen,dst,dstLen)=>{const ptr_out=mput(out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);const ptr_dst=mput(dst,dstLen);_ecc_voprf_ristretto255_sha512_HashToGroupWithDST(ptr_out,ptr_input,inputLen,ptr_dst,dstLen);mget(out,ptr_out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen);mfree(ptr_dst,dstLen)};Module.ecc_voprf_ristretto255_sha512_HashToGroup=(out,input,inputLen,mode)=>{const ptr_out=mput(out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);_ecc_voprf_ristretto255_sha512_HashToGroup(ptr_out,ptr_input,inputLen,mode);mget(out,ptr_out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen)};Module.ecc_voprf_ristretto255_sha512_HashToScalarWithDST=(out,input,inputLen,dst,dstLen)=>{const ptr_out=mput(out,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_input=mput(input,inputLen);const ptr_dst=mput(dst,dstLen);_ecc_voprf_ristretto255_sha512_HashToScalarWithDST(ptr_out,ptr_input,inputLen,ptr_dst,dstLen);mget(out,ptr_out,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_out,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_input,inputLen);mfree(ptr_dst,dstLen)};Module.ecc_voprf_ristretto255_sha512_HashToScalar=(out,input,inputLen,mode)=>{const ptr_out=mput(out,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_input=mput(input,inputLen);_ecc_voprf_ristretto255_sha512_HashToScalar(ptr_out,ptr_input,inputLen,mode);mget(out,ptr_out,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_out,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_input,inputLen)};const ecc_opaque_ristretto255_sha512_Nn=32;Module.ecc_opaque_ristretto255_sha512_Nn=ecc_opaque_ristretto255_sha512_Nn;const ecc_opaque_ristretto255_sha512_Nm=64;Module.ecc_opaque_ristretto255_sha512_Nm=ecc_opaque_ristretto255_sha512_Nm;const ecc_opaque_ristretto255_sha512_Nh=64;Module.ecc_opaque_ristretto255_sha512_Nh=ecc_opaque_ristretto255_sha512_Nh;const ecc_opaque_ristretto255_sha512_Nx=64;Module.ecc_opaque_ristretto255_sha512_Nx=ecc_opaque_ristretto255_sha512_Nx;const ecc_opaque_ristretto255_sha512_Npk=32;Module.ecc_opaque_ristretto255_sha512_Npk=ecc_opaque_ristretto255_sha512_Npk;const ecc_opaque_ristretto255_sha512_Nsk=32;Module.ecc_opaque_ristretto255_sha512_Nsk=ecc_opaque_ristretto255_sha512_Nsk;const ecc_opaque_ristretto255_sha512_Noe=32;Module.ecc_opaque_ristretto255_sha512_Noe=ecc_opaque_ristretto255_sha512_Noe;const ecc_opaque_ristretto255_sha512_Ns=32;Module.ecc_opaque_ristretto255_sha512_Ns=ecc_opaque_ristretto255_sha512_Ns;const ecc_opaque_ristretto255_sha512_Nok=32;Module.ecc_opaque_ristretto255_sha512_Nok=ecc_opaque_ristretto255_sha512_Nok;const ecc_opaque_ristretto255_sha512_Ne=96;Module.ecc_opaque_ristretto255_sha512_Ne=ecc_opaque_ristretto255_sha512_Ne;const ecc_opaque_ristretto255_sha512_PASSWORDMAXSIZE=200;Module.ecc_opaque_ristretto255_sha512_PASSWORDMAXSIZE=ecc_opaque_ristretto255_sha512_PASSWORDMAXSIZE;const ecc_opaque_ristretto255_sha512_IDENTITYMAXSIZE=200;Module.ecc_opaque_ristretto255_sha512_IDENTITYMAXSIZE=ecc_opaque_ristretto255_sha512_IDENTITYMAXSIZE;const ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE=434;Module.ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE=ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE;const ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE=32;Module.ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE=ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE;const ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE=64;Module.ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE=ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE;const ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE=192;Module.ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE=ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE;const ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE=32;Module.ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE=ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE;const ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE=192;Module.ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE=ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE;const ecc_opaque_ristretto255_sha512_KE1SIZE=96;Module.ecc_opaque_ristretto255_sha512_KE1SIZE=ecc_opaque_ristretto255_sha512_KE1SIZE;const ecc_opaque_ristretto255_sha512_KE2SIZE=320;Module.ecc_opaque_ristretto255_sha512_KE2SIZE=ecc_opaque_ristretto255_sha512_KE2SIZE;const ecc_opaque_ristretto255_sha512_KE3SIZE=64;Module.ecc_opaque_ristretto255_sha512_KE3SIZE=ecc_opaque_ristretto255_sha512_KE3SIZE;const ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE=361;Module.ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE=ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE;const ecc_opaque_ristretto255_sha512_SERVERSTATESIZE=128;Module.ecc_opaque_ristretto255_sha512_SERVERSTATESIZE=ecc_opaque_ristretto255_sha512_SERVERSTATESIZE;const ecc_opaque_ristretto255_sha512_MHF_IDENTITY=0;Module.ecc_opaque_ristretto255_sha512_MHF_IDENTITY=ecc_opaque_ristretto255_sha512_MHF_IDENTITY;const ecc_opaque_ristretto255_sha512_MHF_SCRYPT=1;Module.ecc_opaque_ristretto255_sha512_MHF_SCRYPT=ecc_opaque_ristretto255_sha512_MHF_SCRYPT;Module.ecc_opaque_ristretto255_sha512_DeriveKeyPair=(private_key,public_key,seed)=>{const ptr_private_key=mput(private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_public_key=mput(public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_seed=mput(seed,ecc_opaque_ristretto255_sha512_Nn);_ecc_opaque_ristretto255_sha512_DeriveKeyPair(ptr_private_key,ptr_public_key,ptr_seed);mget(private_key,ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mget(public_key,ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_seed,ecc_opaque_ristretto255_sha512_Nn)};Module.ecc_opaque_ristretto255_sha512_CreateCleartextCredentials=(cleartext_credentials,server_public_key,client_public_key,server_identity,server_identity_len,client_identity,client_identity_len)=>{const ptr_cleartext_credentials=mput(cleartext_credentials,ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);_ecc_opaque_ristretto255_sha512_CreateCleartextCredentials(ptr_cleartext_credentials,ptr_server_public_key,ptr_client_public_key,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len);mget(cleartext_credentials,ptr_cleartext_credentials,ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE);mfree(ptr_cleartext_credentials,ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len)};Module.ecc_opaque_ristretto255_sha512_EnvelopeStoreWithNonce=(envelope,client_public_key,masking_key,export_key,randomized_pwd,server_public_key,server_identity,server_identity_len,client_identity,client_identity_len,nonce)=>{const ptr_envelope=mput(envelope,ecc_opaque_ristretto255_sha512_Ne);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_masking_key=mput(masking_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_randomized_pwd=mput(randomized_pwd,64);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_nonce=mput(nonce,ecc_opaque_ristretto255_sha512_Nn);_ecc_opaque_ristretto255_sha512_EnvelopeStoreWithNonce(ptr_envelope,ptr_client_public_key,ptr_masking_key,ptr_export_key,ptr_randomized_pwd,ptr_server_public_key,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len,ptr_nonce);mget(envelope,ptr_envelope,ecc_opaque_ristretto255_sha512_Ne);mget(client_public_key,ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mget(masking_key,ptr_masking_key,ecc_opaque_ristretto255_sha512_Nh);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_envelope,ecc_opaque_ristretto255_sha512_Ne);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_masking_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_randomized_pwd,64);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len);mfree(ptr_nonce,ecc_opaque_ristretto255_sha512_Nn)};Module.ecc_opaque_ristretto255_sha512_EnvelopeStore=(envelope,client_public_key,masking_key,export_key,randomized_pwd,server_public_key,server_identity,server_identity_len,client_identity,client_identity_len)=>{const ptr_envelope=mput(envelope,ecc_opaque_ristretto255_sha512_Ne);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_masking_key=mput(masking_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_randomized_pwd=mput(randomized_pwd,64);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);_ecc_opaque_ristretto255_sha512_EnvelopeStore(ptr_envelope,ptr_client_public_key,ptr_masking_key,ptr_export_key,ptr_randomized_pwd,ptr_server_public_key,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len);mget(envelope,ptr_envelope,ecc_opaque_ristretto255_sha512_Ne);mget(client_public_key,ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mget(masking_key,ptr_masking_key,ecc_opaque_ristretto255_sha512_Nh);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_envelope,ecc_opaque_ristretto255_sha512_Ne);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_masking_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_randomized_pwd,64);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len)};Module.ecc_opaque_ristretto255_sha512_EnvelopeRecover=(client_private_key,export_key,randomized_pwd,server_public_key,envelope_raw,server_identity,server_identity_len,client_identity,client_identity_len)=>{const ptr_client_private_key=mput(client_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_randomized_pwd=mput(randomized_pwd,64);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_envelope_raw=mput(envelope_raw,ecc_opaque_ristretto255_sha512_Ne);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);const fun_ret=_ecc_opaque_ristretto255_sha512_EnvelopeRecover(ptr_client_private_key,ptr_export_key,ptr_randomized_pwd,ptr_server_public_key,ptr_envelope_raw,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len);mget(client_private_key,ptr_client_private_key,ecc_opaque_ristretto255_sha512_Nsk);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_client_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_randomized_pwd,64);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_envelope_raw,ecc_opaque_ristretto255_sha512_Ne);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len);return fun_ret};Module.ecc_opaque_ristretto255_sha512_RecoverPublicKey=(public_key,private_key)=>{const ptr_public_key=mput(public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_private_key=mput(private_key,ecc_opaque_ristretto255_sha512_Nsk);_ecc_opaque_ristretto255_sha512_RecoverPublicKey(ptr_public_key,ptr_private_key);mget(public_key,ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk)};Module.ecc_opaque_ristretto255_sha512_GenerateAuthKeyPair=(private_key,public_key)=>{const ptr_private_key=mput(private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_public_key=mput(public_key,ecc_opaque_ristretto255_sha512_Npk);_ecc_opaque_ristretto255_sha512_GenerateAuthKeyPair(ptr_private_key,ptr_public_key);mget(private_key,ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mget(public_key,ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_public_key,ecc_opaque_ristretto255_sha512_Npk)};Module.ecc_opaque_ristretto255_sha512_DeriveAuthKeyPair=(private_key,public_key,seed)=>{const ptr_private_key=mput(private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_public_key=mput(public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_seed=mput(seed,ecc_opaque_ristretto255_sha512_Nn);_ecc_opaque_ristretto255_sha512_DeriveAuthKeyPair(ptr_private_key,ptr_public_key,ptr_seed);mget(private_key,ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mget(public_key,ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_seed,ecc_opaque_ristretto255_sha512_Nn)};Module.ecc_opaque_ristretto255_sha512_CreateRegistrationRequestWithBlind=(request,password,password_len,blind)=>{const ptr_request=mput(request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);_ecc_opaque_ristretto255_sha512_CreateRegistrationRequestWithBlind(ptr_request,ptr_password,password_len,ptr_blind);mget(request,ptr_request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);mfree(ptr_request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns)};Module.ecc_opaque_ristretto255_sha512_CreateRegistrationRequest=(request,blind,password,password_len)=>{const ptr_request=mput(request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);const ptr_password=mput(password,password_len);_ecc_opaque_ristretto255_sha512_CreateRegistrationRequest(ptr_request,ptr_blind,ptr_password,password_len);mget(request,ptr_request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);mget(blind,ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_password,password_len)};Module.ecc_opaque_ristretto255_sha512_CreateRegistrationResponse=(response,request,server_public_key,credential_identifier,credential_identifier_len,oprf_seed)=>{const ptr_response=mput(response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);const ptr_request=mput(request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_credential_identifier=mput(credential_identifier,credential_identifier_len);const ptr_oprf_seed=mput(oprf_seed,ecc_opaque_ristretto255_sha512_Nh);_ecc_opaque_ristretto255_sha512_CreateRegistrationResponse(ptr_response,ptr_request,ptr_server_public_key,ptr_credential_identifier,credential_identifier_len,ptr_oprf_seed);mget(response,ptr_response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);mfree(ptr_response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);mfree(ptr_request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_credential_identifier,credential_identifier_len);mfree(ptr_oprf_seed,ecc_opaque_ristretto255_sha512_Nh)};Module.ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequestWithNonce=(record,export_key,password,password_len,blind,response,server_identity,server_identity_len,client_identity,client_identity_len,mhf,nonce)=>{const ptr_record=mput(record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);const ptr_response=mput(response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_nonce=mput(nonce,ecc_opaque_ristretto255_sha512_Nn);_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequestWithNonce(ptr_record,ptr_export_key,ptr_password,password_len,ptr_blind,ptr_response,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len,mhf,ptr_nonce);mget(record,ptr_record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len);mfree(ptr_nonce,ecc_opaque_ristretto255_sha512_Nn)};Module.ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequest=(record,export_key,password,password_len,blind,response,server_identity,server_identity_len,client_identity,client_identity_len,mhf)=>{const ptr_record=mput(record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);const ptr_response=mput(response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequest(ptr_record,ptr_export_key,ptr_password,password_len,ptr_blind,ptr_response,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len,mhf);mget(record,ptr_record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len)};Module.ecc_opaque_ristretto255_sha512_CreateCredentialRequestWithBlind=(request,password,password_len,blind)=>{const ptr_request=mput(request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);_ecc_opaque_ristretto255_sha512_CreateCredentialRequestWithBlind(ptr_request,ptr_password,password_len,ptr_blind);mget(request,ptr_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns)};Module.ecc_opaque_ristretto255_sha512_CreateCredentialRequest=(request,blind,password,password_len)=>{const ptr_request=mput(request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);const ptr_password=mput(password,password_len);_ecc_opaque_ristretto255_sha512_CreateCredentialRequest(ptr_request,ptr_blind,ptr_password,password_len);mget(request,ptr_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mget(blind,ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_password,password_len)};Module.ecc_opaque_ristretto255_sha512_CreateCredentialResponseWithMasking=(response_raw,request_raw,server_public_key,record_raw,credential_identifier,credential_identifier_len,oprf_seed,masking_nonce)=>{const ptr_response_raw=mput(response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);const ptr_request_raw=mput(request_raw,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_record_raw=mput(record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_credential_identifier=mput(credential_identifier,credential_identifier_len);const ptr_oprf_seed=mput(oprf_seed,ecc_opaque_ristretto255_sha512_Nh);const ptr_masking_nonce=mput(masking_nonce,ecc_opaque_ristretto255_sha512_Nn);_ecc_opaque_ristretto255_sha512_CreateCredentialResponseWithMasking(ptr_response_raw,ptr_request_raw,ptr_server_public_key,ptr_record_raw,ptr_credential_identifier,credential_identifier_len,ptr_oprf_seed,ptr_masking_nonce);mget(response_raw,ptr_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_request_raw,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_credential_identifier,credential_identifier_len);mfree(ptr_oprf_seed,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_masking_nonce,ecc_opaque_ristretto255_sha512_Nn)};Module.ecc_opaque_ristretto255_sha512_CreateCredentialResponse=(response_raw,request_raw,server_public_key,record_raw,credential_identifier,credential_identifier_len,oprf_seed)=>{const ptr_response_raw=mput(response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);const ptr_request_raw=mput(request_raw,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_record_raw=mput(record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_credential_identifier=mput(credential_identifier,credential_identifier_len);const ptr_oprf_seed=mput(oprf_seed,ecc_opaque_ristretto255_sha512_Nh);_ecc_opaque_ristretto255_sha512_CreateCredentialResponse(ptr_response_raw,ptr_request_raw,ptr_server_public_key,ptr_record_raw,ptr_credential_identifier,credential_identifier_len,ptr_oprf_seed);mget(response_raw,ptr_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_request_raw,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_credential_identifier,credential_identifier_len);mfree(ptr_oprf_seed,ecc_opaque_ristretto255_sha512_Nh)};Module.ecc_opaque_ristretto255_sha512_RecoverCredentials=(client_private_key,server_public_key,export_key,password,password_len,blind,response,server_identity,server_identity_len,client_identity,client_identity_len,mhf)=>{const ptr_client_private_key=mput(client_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Noe);const ptr_response=mput(response,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);const fun_ret=_ecc_opaque_ristretto255_sha512_RecoverCredentials(ptr_client_private_key,ptr_server_public_key,ptr_export_key,ptr_password,password_len,ptr_blind,ptr_response,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len,mhf);mget(client_private_key,ptr_client_private_key,ecc_opaque_ristretto255_sha512_Nsk);mget(server_public_key,ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_client_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Noe);mfree(ptr_response,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len);return fun_ret};Module.ecc_opaque_ristretto255_sha512_3DH_Expand_Label=(out,secret,label,label_len,context,context_len,length)=>{const ptr_out=mput(out,length);const ptr_secret=mput(secret,64);const ptr_label=mput(label,label_len);const ptr_context=mput(context,context_len);_ecc_opaque_ristretto255_sha512_3DH_Expand_Label(ptr_out,ptr_secret,ptr_label,label_len,ptr_context,context_len,length);mget(out,ptr_out,length);mfree(ptr_out,length);mfree(ptr_secret,64);mfree(ptr_label,label_len);mfree(ptr_context,context_len)};Module.ecc_opaque_ristretto255_sha512_3DH_Derive_Secret=(out,secret,label,label_len,transcript_hash,transcript_hash_len)=>{const ptr_out=mput(out,ecc_opaque_ristretto255_sha512_Nx);const ptr_secret=mput(secret,64);const ptr_label=mput(label,label_len);const ptr_transcript_hash=mput(transcript_hash,transcript_hash_len);_ecc_opaque_ristretto255_sha512_3DH_Derive_Secret(ptr_out,ptr_secret,ptr_label,label_len,ptr_transcript_hash,transcript_hash_len);mget(out,ptr_out,ecc_opaque_ristretto255_sha512_Nx);mfree(ptr_out,ecc_opaque_ristretto255_sha512_Nx);mfree(ptr_secret,64);mfree(ptr_label,label_len);mfree(ptr_transcript_hash,transcript_hash_len)};Module.ecc_opaque_ristretto255_sha512_3DH_Preamble=(preamble,preamble_len,context,context_len,client_identity,client_identity_len,client_public_key,ke1,server_identity,server_identity_len,server_public_key,ke2)=>{const ptr_preamble=mput(preamble,preamble_len);const ptr_context=mput(context,context_len);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_ke1=mput(ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_ke2=mput(ke2,ecc_opaque_ristretto255_sha512_KE2SIZE);const fun_ret=_ecc_opaque_ristretto255_sha512_3DH_Preamble(ptr_preamble,preamble_len,ptr_context,context_len,ptr_client_identity,client_identity_len,ptr_client_public_key,ptr_ke1,ptr_server_identity,server_identity_len,ptr_server_public_key,ptr_ke2);mget(preamble,ptr_preamble,preamble_len);mfree(ptr_preamble,preamble_len);mfree(ptr_context,context_len);mfree(ptr_client_identity,client_identity_len);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_ke2,ecc_opaque_ristretto255_sha512_KE2SIZE);return fun_ret};Module.ecc_opaque_ristretto255_sha512_3DH_TripleDHIKM=(ikm,sk1,pk1,sk2,pk2,sk3,pk3)=>{const ptr_ikm=mput(ikm,96);const ptr_sk1=mput(sk1,32);const ptr_pk1=mput(pk1,32);const ptr_sk2=mput(sk2,32);const ptr_pk2=mput(pk2,32);const ptr_sk3=mput(sk3,32);const ptr_pk3=mput(pk3,32);_ecc_opaque_ristretto255_sha512_3DH_TripleDHIKM(ptr_ikm,ptr_sk1,ptr_pk1,ptr_sk2,ptr_pk2,ptr_sk3,ptr_pk3);mget(ikm,ptr_ikm,96);mfree(ptr_ikm,96);mfree(ptr_sk1,32);mfree(ptr_pk1,32);mfree(ptr_sk2,32);mfree(ptr_pk2,32);mfree(ptr_sk3,32);mfree(ptr_pk3,32)};Module.ecc_opaque_ristretto255_sha512_3DH_DeriveKeys=(km2,km3,session_key,ikm,ikm_len,preamble,preamble_len)=>{const ptr_km2=mput(km2,64);const ptr_km3=mput(km3,64);const ptr_session_key=mput(session_key,64);const ptr_ikm=mput(ikm,ikm_len);const ptr_preamble=mput(preamble,preamble_len);_ecc_opaque_ristretto255_sha512_3DH_DeriveKeys(ptr_km2,ptr_km3,ptr_session_key,ptr_ikm,ikm_len,ptr_preamble,preamble_len);mget(km2,ptr_km2,64);mget(km3,ptr_km3,64);mget(session_key,ptr_session_key,64);mfree(ptr_km2,64);mfree(ptr_km3,64);mfree(ptr_session_key,64);mfree(ptr_ikm,ikm_len);mfree(ptr_preamble,preamble_len)};Module.ecc_opaque_ristretto255_sha512_ClientInitWithSecrets=(ke1,state,password,password_len,blind,client_nonce,client_secret,client_keyshare)=>{const ptr_ke1=mput(ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);const ptr_client_nonce=mput(client_nonce,ecc_opaque_ristretto255_sha512_Nn);const ptr_client_secret=mput(client_secret,ecc_opaque_ristretto255_sha512_Nsk);const ptr_client_keyshare=mput(client_keyshare,ecc_opaque_ristretto255_sha512_Npk);_ecc_opaque_ristretto255_sha512_ClientInitWithSecrets(ptr_ke1,ptr_state,ptr_password,password_len,ptr_blind,ptr_client_nonce,ptr_client_secret,ptr_client_keyshare);mget(ke1,ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_client_nonce,ecc_opaque_ristretto255_sha512_Nn);mfree(ptr_client_secret,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_client_keyshare,ecc_opaque_ristretto255_sha512_Npk)};Module.ecc_opaque_ristretto255_sha512_ClientInit=(ke1,state,password,password_len)=>{const ptr_ke1=mput(ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_password=mput(password,password_len);_ecc_opaque_ristretto255_sha512_ClientInit(ptr_ke1,ptr_state,ptr_password,password_len);mget(ke1,ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_password,password_len)};Module.ecc_opaque_ristretto255_sha512_ClientFinish=(ke3_raw,session_key,export_key,state,client_identity,client_identity_len,server_identity,server_identity_len,ke2,mhf,context,context_len)=>{const ptr_ke3_raw=mput(ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);const ptr_session_key=mput(session_key,64);const ptr_export_key=mput(export_key,64);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_ke2=mput(ke2,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_context=mput(context,context_len);const fun_ret=_ecc_opaque_ristretto255_sha512_ClientFinish(ptr_ke3_raw,ptr_session_key,ptr_export_key,ptr_state,ptr_client_identity,client_identity_len,ptr_server_identity,server_identity_len,ptr_ke2,mhf,ptr_context,context_len);mget(ke3_raw,ptr_ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);mget(session_key,ptr_session_key,64);mget(export_key,ptr_export_key,64);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);mfree(ptr_session_key,64);mfree(ptr_export_key,64);mfree(ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_client_identity,client_identity_len);mfree(ptr_server_identity,server_identity_len);mfree(ptr_ke2,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_context,context_len);return fun_ret};Module.ecc_opaque_ristretto255_sha512_3DH_StartWithSecrets=(ke1,state,credential_request,client_nonce,client_secret,client_keyshare)=>{const ptr_ke1=mput(ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_credential_request=mput(credential_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);const ptr_client_nonce=mput(client_nonce,ecc_opaque_ristretto255_sha512_Nn);const ptr_client_secret=mput(client_secret,ecc_opaque_ristretto255_sha512_Nsk);const ptr_client_keyshare=mput(client_keyshare,ecc_opaque_ristretto255_sha512_Npk);_ecc_opaque_ristretto255_sha512_3DH_StartWithSecrets(ptr_ke1,ptr_state,ptr_credential_request,ptr_client_nonce,ptr_client_secret,ptr_client_keyshare);mget(ke1,ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_credential_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_client_nonce,ecc_opaque_ristretto255_sha512_Nn);mfree(ptr_client_secret,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_client_keyshare,ecc_opaque_ristretto255_sha512_Npk)};Module.ecc_opaque_ristretto255_sha512_3DH_Start=(ke1,state,credential_request)=>{const ptr_ke1=mput(ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_credential_request=mput(credential_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);_ecc_opaque_ristretto255_sha512_3DH_Start(ptr_ke1,ptr_state,ptr_credential_request);mget(ke1,ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_credential_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE)};Module.ecc_opaque_ristretto255_sha512_3DH_ClientFinalize=(ke3_raw,session_key,state_raw,client_identity,client_identity_len,client_private_key,server_identity,server_identity_len,server_public_key,ke2_raw,context,context_len)=>{const ptr_ke3_raw=mput(ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);const ptr_session_key=mput(session_key,64);const ptr_state_raw=mput(state_raw,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_client_private_key=mput(client_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_ke2_raw=mput(ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_context=mput(context,context_len);const fun_ret=_ecc_opaque_ristretto255_sha512_3DH_ClientFinalize(ptr_ke3_raw,ptr_session_key,ptr_state_raw,ptr_client_identity,client_identity_len,ptr_client_private_key,ptr_server_identity,server_identity_len,ptr_server_public_key,ptr_ke2_raw,ptr_context,context_len);mget(ke3_raw,ptr_ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);mget(session_key,ptr_session_key,64);mget(state_raw,ptr_state_raw,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);mfree(ptr_session_key,64);mfree(ptr_state_raw,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_client_identity,client_identity_len);mfree(ptr_client_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_context,context_len);return fun_ret};Module.ecc_opaque_ristretto255_sha512_ServerInitWithSecrets=(ke2_raw,state_raw,server_identity,server_identity_len,server_private_key,server_public_key,record_raw,credential_identifier,credential_identifier_len,oprf_seed,ke1_raw,client_identity,client_identity_len,context,context_len,masking_nonce,server_nonce,server_secret,server_keyshare)=>{const ptr_ke2_raw=mput(ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_state_raw=mput(state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_private_key=mput(server_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_record_raw=mput(record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_credential_identifier=mput(credential_identifier,credential_identifier_len);const ptr_oprf_seed=mput(oprf_seed,ecc_opaque_ristretto255_sha512_Nh);const ptr_ke1_raw=mput(ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_context=mput(context,context_len);const ptr_masking_nonce=mput(masking_nonce,ecc_opaque_ristretto255_sha512_Nn);const ptr_server_nonce=mput(server_nonce,ecc_opaque_ristretto255_sha512_Nn);const ptr_server_secret=mput(server_secret,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_keyshare=mput(server_keyshare,ecc_opaque_ristretto255_sha512_Npk);_ecc_opaque_ristretto255_sha512_ServerInitWithSecrets(ptr_ke2_raw,ptr_state_raw,ptr_server_identity,server_identity_len,ptr_server_private_key,ptr_server_public_key,ptr_record_raw,ptr_credential_identifier,credential_identifier_len,ptr_oprf_seed,ptr_ke1_raw,ptr_client_identity,client_identity_len,ptr_context,context_len,ptr_masking_nonce,ptr_server_nonce,ptr_server_secret,ptr_server_keyshare);mget(ke2_raw,ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mget(state_raw,ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_credential_identifier,credential_identifier_len);mfree(ptr_oprf_seed,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_client_identity,client_identity_len);mfree(ptr_context,context_len);mfree(ptr_masking_nonce,ecc_opaque_ristretto255_sha512_Nn);mfree(ptr_server_nonce,ecc_opaque_ristretto255_sha512_Nn);mfree(ptr_server_secret,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_keyshare,ecc_opaque_ristretto255_sha512_Npk)};Module.ecc_opaque_ristretto255_sha512_ServerInit=(ke2_raw,state_raw,server_identity,server_identity_len,server_private_key,server_public_key,record_raw,credential_identifier,credential_identifier_len,oprf_seed,ke1_raw,client_identity,client_identity_len,context,context_len)=>{const ptr_ke2_raw=mput(ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_state_raw=mput(state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_private_key=mput(server_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_record_raw=mput(record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_credential_identifier=mput(credential_identifier,credential_identifier_len);const ptr_oprf_seed=mput(oprf_seed,ecc_opaque_ristretto255_sha512_Nh);const ptr_ke1_raw=mput(ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_context=mput(context,context_len);_ecc_opaque_ristretto255_sha512_ServerInit(ptr_ke2_raw,ptr_state_raw,ptr_server_identity,server_identity_len,ptr_server_private_key,ptr_server_public_key,ptr_record_raw,ptr_credential_identifier,credential_identifier_len,ptr_oprf_seed,ptr_ke1_raw,ptr_client_identity,client_identity_len,ptr_context,context_len);mget(ke2_raw,ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mget(state_raw,ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_credential_identifier,credential_identifier_len);mfree(ptr_oprf_seed,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_client_identity,client_identity_len);mfree(ptr_context,context_len)};Module.ecc_opaque_ristretto255_sha512_ServerFinish=(session_key,state,ke3)=>{const ptr_session_key=mput(session_key,64);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);const ptr_ke3=mput(ke3,ecc_opaque_ristretto255_sha512_KE3SIZE);const fun_ret=_ecc_opaque_ristretto255_sha512_ServerFinish(ptr_session_key,ptr_state,ptr_ke3);mget(session_key,ptr_session_key,64);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_session_key,64);mfree(ptr_state,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_ke3,ecc_opaque_ristretto255_sha512_KE3SIZE);return fun_ret};Module.ecc_opaque_ristretto255_sha512_3DH_ResponseWithSecrets=(ke2_raw,state_raw,server_identity,server_identity_len,server_private_key,server_public_key,client_identity,client_identity_len,client_public_key,ke1_raw,credential_response_raw,context,context_len,server_nonce,server_secret,server_keyshare)=>{const ptr_ke2_raw=mput(ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_state_raw=mput(state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_private_key=mput(server_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_ke1_raw=mput(ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_credential_response_raw=mput(credential_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);const ptr_context=mput(context,context_len);const ptr_server_nonce=mput(server_nonce,ecc_opaque_ristretto255_sha512_Nn);const ptr_server_secret=mput(server_secret,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_keyshare=mput(server_keyshare,ecc_opaque_ristretto255_sha512_Npk);_ecc_opaque_ristretto255_sha512_3DH_ResponseWithSecrets(ptr_ke2_raw,ptr_state_raw,ptr_server_identity,server_identity_len,ptr_server_private_key,ptr_server_public_key,ptr_client_identity,client_identity_len,ptr_client_public_key,ptr_ke1_raw,ptr_credential_response_raw,ptr_context,context_len,ptr_server_nonce,ptr_server_secret,ptr_server_keyshare);mget(ke2_raw,ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mget(state_raw,ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_client_identity,client_identity_len);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_credential_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_context,context_len);mfree(ptr_server_nonce,ecc_opaque_ristretto255_sha512_Nn);mfree(ptr_server_secret,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_keyshare,ecc_opaque_ristretto255_sha512_Npk)};Module.ecc_opaque_ristretto255_sha512_3DH_Response=(ke2_raw,state_raw,server_identity,server_identity_len,server_private_key,server_public_key,client_identity,client_identity_len,client_public_key,ke1_raw,credential_response_raw,context,context_len)=>{const ptr_ke2_raw=mput(ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_state_raw=mput(state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_private_key=mput(server_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_ke1_raw=mput(ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_credential_response_raw=mput(credential_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);const ptr_context=mput(context,context_len);_ecc_opaque_ristretto255_sha512_3DH_Response(ptr_ke2_raw,ptr_state_raw,ptr_server_identity,server_identity_len,ptr_server_private_key,ptr_server_public_key,ptr_client_identity,client_identity_len,ptr_client_public_key,ptr_ke1_raw,ptr_credential_response_raw,ptr_context,context_len);mget(ke2_raw,ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mget(state_raw,ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_client_identity,client_identity_len);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_credential_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_context,context_len)};const ecc_sign_ed25519_SIGNATURESIZE=64;Module.ecc_sign_ed25519_SIGNATURESIZE=ecc_sign_ed25519_SIGNATURESIZE;const ecc_sign_ed25519_SEEDSIZE=32;Module.ecc_sign_ed25519_SEEDSIZE=ecc_sign_ed25519_SEEDSIZE;const ecc_sign_ed25519_PUBLICKEYSIZE=32;Module.ecc_sign_ed25519_PUBLICKEYSIZE=ecc_sign_ed25519_PUBLICKEYSIZE;const ecc_sign_ed25519_SECRETKEYSIZE=64;Module.ecc_sign_ed25519_SECRETKEYSIZE=ecc_sign_ed25519_SECRETKEYSIZE;const ecc_sign_eth_bls_PRIVATEKEYSIZE=32;Module.ecc_sign_eth_bls_PRIVATEKEYSIZE=ecc_sign_eth_bls_PRIVATEKEYSIZE;const ecc_sign_eth_bls_PUBLICKEYSIZE=48;Module.ecc_sign_eth_bls_PUBLICKEYSIZE=ecc_sign_eth_bls_PUBLICKEYSIZE;const ecc_sign_eth_bls_SIGNATURESIZE=96;Module.ecc_sign_eth_bls_SIGNATURESIZE=ecc_sign_eth_bls_SIGNATURESIZE;Module.ecc_sign_ed25519_Sign=(signature,message,message_len,sk)=>{const ptr_signature=mput(signature,ecc_sign_ed25519_SIGNATURESIZE);const ptr_message=mput(message,message_len);const ptr_sk=mput(sk,ecc_sign_ed25519_SECRETKEYSIZE);_ecc_sign_ed25519_Sign(ptr_signature,ptr_message,message_len,ptr_sk);mget(signature,ptr_signature,ecc_sign_ed25519_SIGNATURESIZE);mfree(ptr_signature,ecc_sign_ed25519_SIGNATURESIZE);mfree(ptr_message,message_len);mfree(ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE)};Module.ecc_sign_ed25519_Verify=(signature,message,message_len,pk)=>{const ptr_signature=mput(signature,ecc_sign_ed25519_SIGNATURESIZE);const ptr_message=mput(message,message_len);const ptr_pk=mput(pk,ecc_sign_ed25519_PUBLICKEYSIZE);const fun_ret=_ecc_sign_ed25519_Verify(ptr_signature,ptr_message,message_len,ptr_pk);mfree(ptr_signature,ecc_sign_ed25519_SIGNATURESIZE);mfree(ptr_message,message_len);mfree(ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);return fun_ret};Module.ecc_sign_ed25519_KeyPair=(pk,sk)=>{const ptr_pk=mput(pk,ecc_sign_ed25519_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_sign_ed25519_SECRETKEYSIZE);_ecc_sign_ed25519_KeyPair(ptr_pk,ptr_sk);mget(pk,ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mget(sk,ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE);mfree(ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mfree(ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE)};Module.ecc_sign_ed25519_SeedKeyPair=(pk,sk,seed)=>{const ptr_pk=mput(pk,ecc_sign_ed25519_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_sign_ed25519_SECRETKEYSIZE);const ptr_seed=mput(seed,ecc_sign_ed25519_SEEDSIZE);_ecc_sign_ed25519_SeedKeyPair(ptr_pk,ptr_sk,ptr_seed);mget(pk,ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mget(sk,ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE);mfree(ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mfree(ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE);mfree(ptr_seed,ecc_sign_ed25519_SEEDSIZE)};Module.ecc_sign_ed25519_SkToSeed=(seed,sk)=>{const ptr_seed=mput(seed,ecc_sign_ed25519_SEEDSIZE);const ptr_sk=mput(sk,ecc_sign_ed25519_SECRETKEYSIZE);_ecc_sign_ed25519_SkToSeed(ptr_seed,ptr_sk);mget(seed,ptr_seed,ecc_sign_ed25519_SEEDSIZE);mfree(ptr_seed,ecc_sign_ed25519_SEEDSIZE);mfree(ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE)};Module.ecc_sign_ed25519_SkToPk=(pk,sk)=>{const ptr_pk=mput(pk,ecc_sign_ed25519_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_sign_ed25519_SECRETKEYSIZE);_ecc_sign_ed25519_SkToPk(ptr_pk,ptr_sk);mget(pk,ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mfree(ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mfree(ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE)};Module.ecc_sign_eth_bls_KeyGen=(sk,ikm,ikm_len)=>{const ptr_sk=mput(sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);const ptr_ikm=mput(ikm,ikm_len);_ecc_sign_eth_bls_KeyGen(ptr_sk,ptr_ikm,ikm_len);mget(sk,ptr_sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);mfree(ptr_sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);mfree(ptr_ikm,ikm_len)};Module.ecc_sign_eth_bls_SkToPk=(pk,sk)=>{const ptr_pk=mput(pk,ecc_sign_eth_bls_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);_ecc_sign_eth_bls_SkToPk(ptr_pk,ptr_sk);mget(pk,ptr_pk,ecc_sign_eth_bls_PUBLICKEYSIZE);mfree(ptr_pk,ecc_sign_eth_bls_PUBLICKEYSIZE);mfree(ptr_sk,ecc_sign_eth_bls_PRIVATEKEYSIZE)};Module.ecc_sign_eth_bls_KeyValidate=pk=>{const ptr_pk=mput(pk,ecc_sign_eth_bls_PUBLICKEYSIZE);const fun_ret=_ecc_sign_eth_bls_KeyValidate(ptr_pk);mfree(ptr_pk,ecc_sign_eth_bls_PUBLICKEYSIZE);return fun_ret};Module.ecc_sign_eth_bls_Sign=(signature,sk,message,message_len)=>{const ptr_signature=mput(signature,ecc_sign_eth_bls_SIGNATURESIZE);const ptr_sk=mput(sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);const ptr_message=mput(message,message_len);_ecc_sign_eth_bls_Sign(ptr_signature,ptr_sk,ptr_message,message_len);mget(signature,ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);mfree(ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);mfree(ptr_sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);mfree(ptr_message,message_len)};Module.ecc_sign_eth_bls_Verify=(pk,message,message_len,signature)=>{const ptr_pk=mput(pk,ecc_sign_eth_bls_PUBLICKEYSIZE);const ptr_message=mput(message,message_len);const ptr_signature=mput(signature,ecc_sign_eth_bls_SIGNATURESIZE);const fun_ret=_ecc_sign_eth_bls_Verify(ptr_pk,ptr_message,message_len,ptr_signature);mfree(ptr_pk,ecc_sign_eth_bls_PUBLICKEYSIZE);mfree(ptr_message,message_len);mfree(ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);return fun_ret};Module.ecc_sign_eth_bls_Aggregate=(signature,signatures,n)=>{const ptr_signature=mput(signature,ecc_sign_eth_bls_SIGNATURESIZE);const ptr_signatures=mput(signatures,n*ecc_sign_eth_bls_SIGNATURESIZE);const fun_ret=_ecc_sign_eth_bls_Aggregate(ptr_signature,ptr_signatures,n);mget(signature,ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);mfree(ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);mfree(ptr_signatures,n*ecc_sign_eth_bls_SIGNATURESIZE);return fun_ret};Module.ecc_sign_eth_bls_FastAggregateVerify=(pks,n,message,message_len,signature)=>{const ptr_pks=mput(pks,n*ecc_sign_eth_bls_PUBLICKEYSIZE);const ptr_message=mput(message,message_len);const ptr_signature=mput(signature,ecc_sign_eth_bls_SIGNATURESIZE);const fun_ret=_ecc_sign_eth_bls_FastAggregateVerify(ptr_pks,n,ptr_message,message_len,ptr_signature);mfree(ptr_pks,n*ecc_sign_eth_bls_PUBLICKEYSIZE);mfree(ptr_message,message_len);mfree(ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);return fun_ret};Module.ecc_sign_eth_bls_AggregateVerify=(n,pks,messages,messages_len,signature)=>{const ptr_pks=mput(pks,n*ecc_sign_eth_bls_PUBLICKEYSIZE);const ptr_messages=mput(messages,messages_len);const ptr_signature=mput(signature,ecc_sign_eth_bls_SIGNATURESIZE);const fun_ret=_ecc_sign_eth_bls_AggregateVerify(n,ptr_pks,ptr_messages,messages_len,ptr_signature);mfree(ptr_pks,n*ecc_sign_eth_bls_PUBLICKEYSIZE);mfree(ptr_messages,messages_len);mfree(ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);return fun_ret};const ecc_frost_ristretto255_sha512_SCALARSIZE=32;Module.ecc_frost_ristretto255_sha512_SCALARSIZE=ecc_frost_ristretto255_sha512_SCALARSIZE;const ecc_frost_ristretto255_sha512_ELEMENTSIZE=32;Module.ecc_frost_ristretto255_sha512_ELEMENTSIZE=ecc_frost_ristretto255_sha512_ELEMENTSIZE;const ecc_frost_ristretto255_sha512_POINTSIZE=64;Module.ecc_frost_ristretto255_sha512_POINTSIZE=ecc_frost_ristretto255_sha512_POINTSIZE;const ecc_frost_ristretto255_sha512_COMMITMENTSIZE=96;Module.ecc_frost_ristretto255_sha512_COMMITMENTSIZE=ecc_frost_ristretto255_sha512_COMMITMENTSIZE;const ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE=64;Module.ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE=ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE;const ecc_frost_ristretto255_sha512_SECRETKEYSIZE=32;Module.ecc_frost_ristretto255_sha512_SECRETKEYSIZE=ecc_frost_ristretto255_sha512_SECRETKEYSIZE;const ecc_frost_ristretto255_sha512_PUBLICKEYSIZE=32;Module.ecc_frost_ristretto255_sha512_PUBLICKEYSIZE=ecc_frost_ristretto255_sha512_PUBLICKEYSIZE;const ecc_frost_ristretto255_sha512_SIGNATURESIZE=64;Module.ecc_frost_ristretto255_sha512_SIGNATURESIZE=ecc_frost_ristretto255_sha512_SIGNATURESIZE;const ecc_frost_ristretto255_sha512_NONCEPAIRSIZE=64;Module.ecc_frost_ristretto255_sha512_NONCEPAIRSIZE=ecc_frost_ristretto255_sha512_NONCEPAIRSIZE;const ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE=64;Module.ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE=ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE;Module.ecc_frost_ristretto255_sha512_nonce_generate_with_randomness=(nonce,secret,random_bytes)=>{const ptr_nonce=mput(nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_secret=mput(secret,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_random_bytes=mput(random_bytes,32);_ecc_frost_ristretto255_sha512_nonce_generate_with_randomness(ptr_nonce,ptr_secret,ptr_random_bytes);mget(nonce,ptr_nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_secret,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_random_bytes,32)};Module.ecc_frost_ristretto255_sha512_nonce_generate=(nonce,secret)=>{const ptr_nonce=mput(nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_secret=mput(secret,ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_nonce_generate(ptr_nonce,ptr_secret);mget(nonce,ptr_nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_secret,ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_derive_interpolating_value=(L_i,x_i,L,L_len)=>{const ptr_L_i=mput(L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_x_i=mput(x_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_L=mput(L,L_len*ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_derive_interpolating_value(ptr_L_i,ptr_x_i,ptr_L,L_len);mget(L_i,ptr_L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_x_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_L,L_len*ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_derive_interpolating_value_with_points=(L_i,x_i,L,L_len)=>{const ptr_L_i=mput(L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_x_i=mput(x_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_L=mput(L,L_len*ecc_frost_ristretto255_sha512_POINTSIZE);_ecc_frost_ristretto255_sha512_derive_interpolating_value_with_points(ptr_L_i,ptr_x_i,ptr_L,L_len);mget(L_i,ptr_L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_x_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_L,L_len*ecc_frost_ristretto255_sha512_POINTSIZE)};Module.ecc_frost_ristretto255_sha512_encode_group_commitment_list=(out,commitment_list,commitment_list_len)=>{const ptr_out=mput(out,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);_ecc_frost_ristretto255_sha512_encode_group_commitment_list(ptr_out,ptr_commitment_list,commitment_list_len);mget(out,ptr_out,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);mfree(ptr_out,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE)};Module.ecc_frost_ristretto255_sha512_participants_from_commitment_list=(identifiers,commitment_list,commitment_list_len)=>{const ptr_identifiers=mput(identifiers,commitment_list_len*ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);_ecc_frost_ristretto255_sha512_participants_from_commitment_list(ptr_identifiers,ptr_commitment_list,commitment_list_len);mget(identifiers,ptr_identifiers,commitment_list_len*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_identifiers,commitment_list_len*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE)};Module.ecc_frost_ristretto255_sha512_binding_factor_for_participant=(binding_factor,binding_factor_list,binding_factor_list_len,identifier)=>{const ptr_binding_factor=mput(binding_factor,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_binding_factor_list=mput(binding_factor_list,binding_factor_list_len*ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);const ptr_identifier=mput(identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);const fun_ret=_ecc_frost_ristretto255_sha512_binding_factor_for_participant(ptr_binding_factor,ptr_binding_factor_list,binding_factor_list_len,ptr_identifier);mget(binding_factor,ptr_binding_factor,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_binding_factor,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_binding_factor_list,binding_factor_list_len*ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);mfree(ptr_identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);return fun_ret};Module.ecc_frost_ristretto255_sha512_compute_binding_factors=(binding_factor_list,commitment_list,commitment_list_len,msg,msg_len)=>{const ptr_binding_factor_list=mput(binding_factor_list,commitment_list_len*ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);const ptr_msg=mput(msg,msg_len);_ecc_frost_ristretto255_sha512_compute_binding_factors(ptr_binding_factor_list,ptr_commitment_list,commitment_list_len,ptr_msg,msg_len);mget(binding_factor_list,ptr_binding_factor_list,commitment_list_len*ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);mfree(ptr_binding_factor_list,commitment_list_len*ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);mfree(ptr_msg,msg_len)};Module.ecc_frost_ristretto255_sha512_compute_group_commitment=(group_comm,commitment_list,commitment_list_len,binding_factor_list,binding_factor_list_len)=>{const ptr_group_comm=mput(group_comm,ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);const ptr_binding_factor_list=mput(binding_factor_list,ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);_ecc_frost_ristretto255_sha512_compute_group_commitment(ptr_group_comm,ptr_commitment_list,commitment_list_len,ptr_binding_factor_list,binding_factor_list_len);mget(group_comm,ptr_group_comm,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_group_comm,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);mfree(ptr_binding_factor_list,ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE)};Module.ecc_frost_ristretto255_sha512_compute_challenge=(challenge,group_commitment,group_public_key,msg,msg_len)=>{const ptr_challenge=mput(challenge,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_group_commitment=mput(group_commitment,ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_group_public_key=mput(group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const ptr_msg=mput(msg,msg_len);_ecc_frost_ristretto255_sha512_compute_challenge(ptr_challenge,ptr_group_commitment,ptr_group_public_key,ptr_msg,msg_len);mget(challenge,ptr_challenge,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_challenge,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_group_commitment,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);mfree(ptr_msg,msg_len)};Module.ecc_frost_ristretto255_sha512_commit_with_randomness=(nonce,comm,sk_i,hiding_nonce_randomness,binding_nonce_randomness)=>{const ptr_nonce=mput(nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);const ptr_comm=mput(comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);const ptr_sk_i=mput(sk_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_hiding_nonce_randomness=mput(hiding_nonce_randomness,32);const ptr_binding_nonce_randomness=mput(binding_nonce_randomness,32);_ecc_frost_ristretto255_sha512_commit_with_randomness(ptr_nonce,ptr_comm,ptr_sk_i,ptr_hiding_nonce_randomness,ptr_binding_nonce_randomness);mget(nonce,ptr_nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);mget(comm,ptr_comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);mfree(ptr_nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);mfree(ptr_comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);mfree(ptr_sk_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_hiding_nonce_randomness,32);mfree(ptr_binding_nonce_randomness,32)};Module.ecc_frost_ristretto255_sha512_commit=(nonce,comm,sk_i)=>{const ptr_nonce=mput(nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);const ptr_comm=mput(comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);const ptr_sk_i=mput(sk_i,ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_commit(ptr_nonce,ptr_comm,ptr_sk_i);mget(nonce,ptr_nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);mget(comm,ptr_comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);mfree(ptr_nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);mfree(ptr_comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);mfree(ptr_sk_i,ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_sign=(sig_share,identifier,sk_i,group_public_key,nonce_i,msg,msg_len,commitment_list,commitment_list_len)=>{const ptr_sig_share=mput(sig_share,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_identifier=mput(identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_sk_i=mput(sk_i,ecc_frost_ristretto255_sha512_SECRETKEYSIZE);const ptr_group_public_key=mput(group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const ptr_nonce_i=mput(nonce_i,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);const ptr_msg=mput(msg,msg_len);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);_ecc_frost_ristretto255_sha512_sign(ptr_sig_share,ptr_identifier,ptr_sk_i,ptr_group_public_key,ptr_nonce_i,ptr_msg,msg_len,ptr_commitment_list,commitment_list_len);mget(sig_share,ptr_sig_share,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_sig_share,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_sk_i,ecc_frost_ristretto255_sha512_SECRETKEYSIZE);mfree(ptr_group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);mfree(ptr_nonce_i,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);mfree(ptr_msg,msg_len);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE)};Module.ecc_frost_ristretto255_sha512_aggregate=(signature,commitment_list,commitment_list_len,msg,msg_len,sig_shares,sig_shares_len)=>{const ptr_signature=mput(signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const ptr_msg=mput(msg,msg_len);const ptr_sig_shares=mput(sig_shares,sig_shares_len*ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_aggregate(ptr_signature,ptr_commitment_list,commitment_list_len,ptr_msg,msg_len,ptr_sig_shares,sig_shares_len);mget(signature,ptr_signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);mfree(ptr_signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);mfree(ptr_msg,msg_len);mfree(ptr_sig_shares,sig_shares_len*ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_verify_signature_share=(identifier,public_key_share_i,comm_i,sig_share_i,commitment_list,commitment_list_len,group_public_key,msg,msg_len)=>{const ptr_identifier=mput(identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_public_key_share_i=mput(public_key_share_i,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const ptr_comm_i=mput(comm_i,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);const ptr_sig_share_i=mput(sig_share_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);const ptr_group_public_key=mput(group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const ptr_msg=mput(msg,msg_len);const fun_ret=_ecc_frost_ristretto255_sha512_verify_signature_share(ptr_identifier,ptr_public_key_share_i,ptr_comm_i,ptr_sig_share_i,ptr_commitment_list,commitment_list_len,ptr_group_public_key,ptr_msg,msg_len);mfree(ptr_identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_public_key_share_i,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);mfree(ptr_comm_i,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);mfree(ptr_sig_share_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);mfree(ptr_group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);mfree(ptr_msg,msg_len);return fun_ret};Module.ecc_frost_ristretto255_sha512_H1=(h1,m,m_len)=>{const ptr_h1=mput(h1,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m=mput(m,m_len);_ecc_frost_ristretto255_sha512_H1(ptr_h1,ptr_m,m_len);mget(h1,ptr_h1,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h1,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m,m_len)};Module.ecc_frost_ristretto255_sha512_H1_2=(h1,m1,m1_len,m2,m2_len)=>{const ptr_h1=mput(h1,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m1=mput(m1,m1_len);const ptr_m2=mput(m2,m2_len);_ecc_frost_ristretto255_sha512_H1_2(ptr_h1,ptr_m1,m1_len,ptr_m2,m2_len);mget(h1,ptr_h1,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h1,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m1,m1_len);mfree(ptr_m2,m2_len)};Module.ecc_frost_ristretto255_sha512_H2=(h2,m,m_len)=>{const ptr_h2=mput(h2,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m=mput(m,m_len);_ecc_frost_ristretto255_sha512_H2(ptr_h2,ptr_m,m_len);mget(h2,ptr_h2,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h2,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m,m_len)};Module.ecc_frost_ristretto255_sha512_H2_3=(h2,m1,m1_len,m2,m2_len,m3,m3_len)=>{const ptr_h2=mput(h2,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m1=mput(m1,m1_len);const ptr_m2=mput(m2,m2_len);const ptr_m3=mput(m3,m3_len);_ecc_frost_ristretto255_sha512_H2_3(ptr_h2,ptr_m1,m1_len,ptr_m2,m2_len,ptr_m3,m3_len);mget(h2,ptr_h2,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h2,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m1,m1_len);mfree(ptr_m2,m2_len);mfree(ptr_m3,m3_len)};Module.ecc_frost_ristretto255_sha512_H3=(h3,m,m_len)=>{const ptr_h3=mput(h3,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m=mput(m,m_len);_ecc_frost_ristretto255_sha512_H3(ptr_h3,ptr_m,m_len);mget(h3,ptr_h3,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h3,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m,m_len)};Module.ecc_frost_ristretto255_sha512_H3_2=(h3,m1,m1_len,m2,m2_len)=>{const ptr_h3=mput(h3,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m1=mput(m1,m1_len);const ptr_m2=mput(m2,m2_len);_ecc_frost_ristretto255_sha512_H3_2(ptr_h3,ptr_m1,m1_len,ptr_m2,m2_len);mget(h3,ptr_h3,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h3,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m1,m1_len);mfree(ptr_m2,m2_len)};Module.ecc_frost_ristretto255_sha512_H4=(h4,m,m_len)=>{const ptr_h4=mput(h4,64);const ptr_m=mput(m,m_len);_ecc_frost_ristretto255_sha512_H4(ptr_h4,ptr_m,m_len);mget(h4,ptr_h4,64);mfree(ptr_h4,64);mfree(ptr_m,m_len)};Module.ecc_frost_ristretto255_sha512_H5=(h5,m,m_len)=>{const ptr_h5=mput(h5,64);const ptr_m=mput(m,m_len);_ecc_frost_ristretto255_sha512_H5(ptr_h5,ptr_m,m_len);mget(h5,ptr_h5,64);mfree(ptr_h5,64);mfree(ptr_m,m_len)};Module.ecc_frost_ristretto255_sha512_prime_order_sign=(signature,msg,msg_len,SK)=>{const ptr_signature=mput(signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);const ptr_msg=mput(msg,msg_len);const ptr_SK=mput(SK,ecc_frost_ristretto255_sha512_SECRETKEYSIZE);_ecc_frost_ristretto255_sha512_prime_order_sign(ptr_signature,ptr_msg,msg_len,ptr_SK);mget(signature,ptr_signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);mfree(ptr_signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);mfree(ptr_msg,msg_len);mfree(ptr_SK,ecc_frost_ristretto255_sha512_SECRETKEYSIZE)};Module.ecc_frost_ristretto255_sha512_prime_order_verify=(msg,msg_len,signature,PK)=>{const ptr_msg=mput(msg,msg_len);const ptr_signature=mput(signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);const ptr_PK=mput(PK,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const fun_ret=_ecc_frost_ristretto255_sha512_prime_order_verify(ptr_msg,msg_len,ptr_signature,ptr_PK);mfree(ptr_msg,msg_len);mfree(ptr_signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);mfree(ptr_PK,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);return fun_ret};Module.ecc_frost_ristretto255_sha512_trusted_dealer_keygen_with_coefficients=(participant_private_keys,group_public_key,vss_commitment,polynomial_coefficients,secret_key,n,t,coefficients)=>{const ptr_participant_private_keys=mput(participant_private_keys,n*ecc_frost_ristretto255_sha512_POINTSIZE);const ptr_group_public_key=mput(group_public_key,ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_vss_commitment=mput(vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_polynomial_coefficients=mput(polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_secret_key=mput(secret_key,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_coefficients=mput(coefficients,(t-1)*ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_trusted_dealer_keygen_with_coefficients(ptr_participant_private_keys,ptr_group_public_key,ptr_vss_commitment,ptr_polynomial_coefficients,ptr_secret_key,n,t,ptr_coefficients);mget(participant_private_keys,ptr_participant_private_keys,n*ecc_frost_ristretto255_sha512_POINTSIZE);mget(group_public_key,ptr_group_public_key,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mget(vss_commitment,ptr_vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mget(polynomial_coefficients,ptr_polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_participant_private_keys,n*ecc_frost_ristretto255_sha512_POINTSIZE);mfree(ptr_group_public_key,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_secret_key,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_coefficients,(t-1)*ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_secret_share_shard=(secret_key_shares,polynomial_coefficients,s,coefficients,n,t)=>{const ptr_secret_key_shares=mput(secret_key_shares,n*ecc_frost_ristretto255_sha512_POINTSIZE);const ptr_polynomial_coefficients=mput(polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_s=mput(s,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_coefficients=mput(coefficients,(t-1)*ecc_frost_ristretto255_sha512_SCALARSIZE);const fun_ret=_ecc_frost_ristretto255_sha512_secret_share_shard(ptr_secret_key_shares,ptr_polynomial_coefficients,ptr_s,ptr_coefficients,n,t);mget(secret_key_shares,ptr_secret_key_shares,n*ecc_frost_ristretto255_sha512_POINTSIZE);mget(polynomial_coefficients,ptr_polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_secret_key_shares,n*ecc_frost_ristretto255_sha512_POINTSIZE);mfree(ptr_polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_s,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_coefficients,(t-1)*ecc_frost_ristretto255_sha512_SCALARSIZE);return fun_ret};Module.ecc_frost_ristretto255_sha512_secret_share_combine=(s,shares,shares_len)=>{const ptr_s=mput(s,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_shares=mput(shares,shares_len*ecc_frost_ristretto255_sha512_POINTSIZE);const fun_ret=_ecc_frost_ristretto255_sha512_secret_share_combine(ptr_s,ptr_shares,shares_len);mget(s,ptr_s,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_s,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_shares,shares_len*ecc_frost_ristretto255_sha512_POINTSIZE);return fun_ret};Module.ecc_frost_ristretto255_sha512_polynomial_evaluate=(value,x,coeffs,coeffs_len)=>{const ptr_value=mput(value,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_x=mput(x,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_coeffs=mput(coeffs,coeffs_len*ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_polynomial_evaluate(ptr_value,ptr_x,ptr_coeffs,coeffs_len);mget(value,ptr_value,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_value,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_x,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_coeffs,coeffs_len*ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_polynomial_interpolate_constant=(f_zero,points,points_len)=>{const ptr_f_zero=mput(f_zero,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_points=mput(points,points_len*ecc_frost_ristretto255_sha512_POINTSIZE);_ecc_frost_ristretto255_sha512_polynomial_interpolate_constant(ptr_f_zero,ptr_points,points_len);mget(f_zero,ptr_f_zero,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_f_zero,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_points,points_len*ecc_frost_ristretto255_sha512_POINTSIZE)};Module.ecc_frost_ristretto255_sha512_vss_commit=(vss_commitment,coeffs,coeffs_len)=>{const ptr_vss_commitment=mput(vss_commitment,coeffs_len*ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_coeffs=mput(coeffs,coeffs_len*ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_vss_commit(ptr_vss_commitment,ptr_coeffs,coeffs_len);mget(vss_commitment,ptr_vss_commitment,coeffs_len*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_vss_commitment,coeffs_len*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_coeffs,coeffs_len*ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_vss_verify=(share_i,vss_commitment,t)=>{const ptr_share_i=mput(share_i,ecc_frost_ristretto255_sha512_POINTSIZE);const ptr_vss_commitment=mput(vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);const fun_ret=_ecc_frost_ristretto255_sha512_vss_verify(ptr_share_i,ptr_vss_commitment,t);mfree(ptr_share_i,ecc_frost_ristretto255_sha512_POINTSIZE);mfree(ptr_vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);return fun_ret};Module.ecc_frost_ristretto255_sha512_derive_group_info=(PK,participant_public_keys,n,t,vss_commitment)=>{const ptr_PK=mput(PK,ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_participant_public_keys=mput(participant_public_keys,n*ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_vss_commitment=mput(vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);_ecc_frost_ristretto255_sha512_derive_group_info(ptr_PK,ptr_participant_public_keys,n,t,ptr_vss_commitment);mget(PK,ptr_PK,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mget(participant_public_keys,ptr_participant_public_keys,n*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_PK,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_participant_public_keys,n*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE)};const ecc_pre_schema1_MESSAGESIZE=576;Module.ecc_pre_schema1_MESSAGESIZE=ecc_pre_schema1_MESSAGESIZE;const ecc_pre_schema1_SEEDSIZE=32;Module.ecc_pre_schema1_SEEDSIZE=ecc_pre_schema1_SEEDSIZE;const ecc_pre_schema1_PUBLICKEYSIZE=48;Module.ecc_pre_schema1_PUBLICKEYSIZE=ecc_pre_schema1_PUBLICKEYSIZE;const ecc_pre_schema1_PRIVATEKEYSIZE=32;Module.ecc_pre_schema1_PRIVATEKEYSIZE=ecc_pre_schema1_PRIVATEKEYSIZE;const ecc_pre_schema1_SIGNINGPUBLICKEYSIZE=32;Module.ecc_pre_schema1_SIGNINGPUBLICKEYSIZE=ecc_pre_schema1_SIGNINGPUBLICKEYSIZE;const ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE=64;Module.ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE=ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE;const ecc_pre_schema1_SIGNATURESIZE=64;Module.ecc_pre_schema1_SIGNATURESIZE=ecc_pre_schema1_SIGNATURESIZE;const ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE=752;Module.ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE=ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE;const ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE=2096;Module.ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE=ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE;const ecc_pre_schema1_REKEYSIZE=816;Module.ecc_pre_schema1_REKEYSIZE=ecc_pre_schema1_REKEYSIZE;Module.ecc_pre_schema1_MessageGen=m=>{const ptr_m=mput(m,ecc_pre_schema1_MESSAGESIZE);_ecc_pre_schema1_MessageGen(ptr_m);mget(m,ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_m,ecc_pre_schema1_MESSAGESIZE)};Module.ecc_pre_schema1_DeriveKey=(pk,sk,seed)=>{const ptr_pk=mput(pk,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_pre_schema1_PRIVATEKEYSIZE);const ptr_seed=mput(seed,ecc_pre_schema1_SEEDSIZE);_ecc_pre_schema1_DeriveKey(ptr_pk,ptr_sk,ptr_seed);mget(pk,ptr_pk,ecc_pre_schema1_PUBLICKEYSIZE);mget(sk,ptr_sk,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_pk,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_sk,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_seed,ecc_pre_schema1_SEEDSIZE)};Module.ecc_pre_schema1_KeyGen=(pk,sk)=>{const ptr_pk=mput(pk,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_pre_schema1_PRIVATEKEYSIZE);_ecc_pre_schema1_KeyGen(ptr_pk,ptr_sk);mget(pk,ptr_pk,ecc_pre_schema1_PUBLICKEYSIZE);mget(sk,ptr_sk,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_pk,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_sk,ecc_pre_schema1_PRIVATEKEYSIZE)};Module.ecc_pre_schema1_DeriveSigningKey=(spk,ssk,seed)=>{const ptr_spk=mput(spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk=mput(ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);const ptr_seed=mput(seed,ecc_pre_schema1_SEEDSIZE);_ecc_pre_schema1_DeriveSigningKey(ptr_spk,ptr_ssk,ptr_seed);mget(spk,ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mget(ssk,ptr_ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);mfree(ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);mfree(ptr_seed,ecc_pre_schema1_SEEDSIZE)};Module.ecc_pre_schema1_SigningKeyGen=(spk,ssk)=>{const ptr_spk=mput(spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk=mput(ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);_ecc_pre_schema1_SigningKeyGen(ptr_spk,ptr_ssk);mget(spk,ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mget(ssk,ptr_ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);mfree(ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE)};Module.ecc_pre_schema1_EncryptWithSeed=(C_j_raw,m,pk_j,spk_i,ssk_i,seed)=>{const ptr_C_j_raw=mput(C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);const ptr_m=mput(m,ecc_pre_schema1_MESSAGESIZE);const ptr_pk_j=mput(pk_j,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_spk_i=mput(spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk_i=mput(ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);const ptr_seed=mput(seed,ecc_pre_schema1_SEEDSIZE);_ecc_pre_schema1_EncryptWithSeed(ptr_C_j_raw,ptr_m,ptr_pk_j,ptr_spk_i,ptr_ssk_i,ptr_seed);mget(C_j_raw,ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_pk_j,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);mfree(ptr_seed,ecc_pre_schema1_SEEDSIZE)};Module.ecc_pre_schema1_Encrypt=(C_j_raw,m,pk_j,spk_i,ssk_i)=>{const ptr_C_j_raw=mput(C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);const ptr_m=mput(m,ecc_pre_schema1_MESSAGESIZE);const ptr_pk_j=mput(pk_j,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_spk_i=mput(spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk_i=mput(ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);_ecc_pre_schema1_Encrypt(ptr_C_j_raw,ptr_m,ptr_pk_j,ptr_spk_i,ptr_ssk_i);mget(C_j_raw,ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_pk_j,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE)};Module.ecc_pre_schema1_ReKeyGen=(tk_i_j_raw,sk_i,pk_j,spk_i,ssk_i)=>{const ptr_tk_i_j_raw=mput(tk_i_j_raw,ecc_pre_schema1_REKEYSIZE);const ptr_sk_i=mput(sk_i,ecc_pre_schema1_PRIVATEKEYSIZE);const ptr_pk_j=mput(pk_j,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_spk_i=mput(spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk_i=mput(ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);_ecc_pre_schema1_ReKeyGen(ptr_tk_i_j_raw,ptr_sk_i,ptr_pk_j,ptr_spk_i,ptr_ssk_i);mget(tk_i_j_raw,ptr_tk_i_j_raw,ecc_pre_schema1_REKEYSIZE);mfree(ptr_tk_i_j_raw,ecc_pre_schema1_REKEYSIZE);mfree(ptr_sk_i,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_pk_j,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE)};Module.ecc_pre_schema1_ReEncrypt=(C_j_raw,C_i_raw,tk_i_j_raw,spk_i,pk_j,spk,ssk)=>{const ptr_C_j_raw=mput(C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE);const ptr_C_i_raw=mput(C_i_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);const ptr_tk_i_j_raw=mput(tk_i_j_raw,ecc_pre_schema1_REKEYSIZE);const ptr_spk_i=mput(spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_pk_j=mput(pk_j,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_spk=mput(spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk=mput(ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);const fun_ret=_ecc_pre_schema1_ReEncrypt(ptr_C_j_raw,ptr_C_i_raw,ptr_tk_i_j_raw,ptr_spk_i,ptr_pk_j,ptr_spk,ptr_ssk);mget(C_j_raw,ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE);mfree(ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE);mfree(ptr_C_i_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_tk_i_j_raw,ecc_pre_schema1_REKEYSIZE);mfree(ptr_spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_pk_j,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);return fun_ret};Module.ecc_pre_schema1_DecryptLevel1=(m,C_i_raw,sk_i,spk_i)=>{const ptr_m=mput(m,ecc_pre_schema1_MESSAGESIZE);const ptr_C_i_raw=mput(C_i_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);const ptr_sk_i=mput(sk_i,ecc_pre_schema1_PRIVATEKEYSIZE);const ptr_spk_i=mput(spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const fun_ret=_ecc_pre_schema1_DecryptLevel1(ptr_m,ptr_C_i_raw,ptr_sk_i,ptr_spk_i);mget(m,ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_C_i_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_sk_i,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);return fun_ret};Module.ecc_pre_schema1_DecryptLevel2=(m,C_j_raw,sk_j,spk)=>{const ptr_m=mput(m,ecc_pre_schema1_MESSAGESIZE);const ptr_C_j_raw=mput(C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE);const ptr_sk_j=mput(sk_j,ecc_pre_schema1_PRIVATEKEYSIZE);const ptr_spk=mput(spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const fun_ret=_ecc_pre_schema1_DecryptLevel2(ptr_m,ptr_C_j_raw,ptr_sk_j,ptr_spk);mget(m,ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE);mfree(ptr_sk_j,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);return fun_ret}; +var Module=typeof libecc_module!="undefined"?libecc_module:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_NODE=typeof process=="object";function ready(){readyPromiseResolve(Module)}function randomValueSetup(){if(Module.getRandomValue===undefined){try{var window_="object"===typeof window?window:self;var crypto_=typeof window_.crypto!=="undefined"?window_.crypto:window_.msCrypto;var randomValuesStandard=function(){var buf=new Uint32Array(1);crypto_.getRandomValues(buf);return buf[0]>>>0};randomValuesStandard();Module.getRandomValue=randomValuesStandard}catch(e){try{import("crypto").then(crypto=>{var randomValueNodeJS=function(){var buf=crypto["randomBytes"](4);return(buf[0]<<24|buf[1]<<16|buf[2]<<8|buf[3])>>>0};randomValueNodeJS();Module.getRandomValue=randomValueNodeJS})}catch(e){throw"No secure random number generator found"}}}}randomValueSetup();function abort(what){throw what}for(var base64ReverseLookup=new Uint8Array(123),i=25;i>=0;--i){base64ReverseLookup[48+i]=52+i;base64ReverseLookup[65+i]=i;base64ReverseLookup[97+i]=26+i}base64ReverseLookup[43]=62;base64ReverseLookup[47]=63;function base64Decode(b64){if(typeof ENVIRONMENT_IS_NODE!="undefined"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(b64,"base64");return new Uint8Array(buf.buffer,buf.byteOffset,buf.byteLength)}var b1,b2,i=0,j=0,bLength=b64.length,output=new Uint8Array((bLength*3>>2)-(b64[bLength-2]=="=")-(b64[bLength-1]=="="));for(;i>4;output[j+1]=b1<<4|b2>>2;output[j+2]=b2<<6|base64ReverseLookup[b64.charCodeAt(i+3)]}return output}Module["wasm"]=base64Decode("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KAIAazYCACAAIBQgE2s2AiQgACASIBFrNgIgIAAgECAPazYCHCAAIA4gDWs2AhggACAMIAtrNgIUIAAgCiAJazYCECAAIAggB2s2AgwgACAGIAVrNgIIIAAgBCADazYCBAsKACAAIAEgAhBxCwkAIAAgARCKAgsKACAAIAEgAhBbC34BAn8jAEHAAmsiBCQAQX8hAyAEIAIQY0UEQEEAIQMDQCADQSBHBEAgACADaiABIANqLQAAOgAAIANBAWohAwwBCwsgACAALQAfQf8AcToAHyAEQaABaiIBIAAgBBDPAiAAIAEQf0F/QQAgAEEgEEcbIQMLIARBwAJqJAAgAwsxAQF/IAFBAnYhAkEAIQEDQCABIAJGRQRAIAAgAUECdGpBADYCACABQQFqIQEMAQsLC0ABA38gACABIAFB+ABqIgIQBCAAQShqIAFBKGoiAyABQdAAaiIEEAQgAEHQAGogBCACEAQgAEH4AGogASADEAQLHAAgAEIANwNAIABCADcDSCAAQcCKAkHAABAGGgsLACAAQQAgARATGgswAQJ/IwBBwAJrIgMkACADQaABaiIEIAIQIyADIAEgBBAvIAAgAxAaIANBwAJqJAAL7QEBBH8jAEHABWsiAyQAAkACQCAAKAJIQQN2Qf8AcSIEQfAATwRAQYABIARrIQUDQCACIAVGDQIgACACIARqaiACQYCQAmotAAA6AFAgAkEBaiECDAALAAtB8AAgBGshBQNAIAIgBUYNAiAAIAIgBGpqIAJBgJACai0AADoAUCACQQFqIQIMAAsACyAAIABB0ABqIgIgAyADQYAFahCfASACQQBB8AAQExoLIABBwAFqIABBQGtBEBDGAiAAIABB0ABqIAMgA0GABWoQnwEgASAAQcAAEMYCIANBwAUQHCAAQdABEBwgA0HABWokAAuXAgIDfgJ/IwBBoAJrIgYkAAJAIAJQDQAgACAAKQMgIgQgAkIDhnw3AyAgAkLAACAEQgOIQj+DIgV9IgRUBEADQCACIANRDQIgACADIAV8p2ogASADp2otAAA6ACggA0IBfCEDDAALAAsDQCADIARSBEAgACADIAV8p2ogASADp2otAAA6ACggA0IBfCEDDAELCyAAIABBKGogBiAGQYACaiIHEKABIAIgBH0hAyABIASnaiEBA0AgA0LAAFQEQEIAIQIDQCACIANUBEAgACACpyIHaiABIAdqLQAAOgAoIAJCAXwhAgwBCwsgBkGgAhAcBSAAIAEgBiAHEKABIANCQHwhAyABQUBrIQEMAQsLCyAGQaACaiQAC/0cAjZ+AX8gACACMwAAIAJBAmoiOTEAAEIQhkKAgPwAg4QiBCABNQAXQgWIQv///wCDIgN+IDk1AABCBYhC////AIMiBSABMwAVIAExABdCEIZCgID8AIOEIgZ+fCACNQAHQgeIQv///wCDIgkgATUAD0IGiEL///8AgyIHfnwgAjUACkIEiEL///8AgyIKIAEzAA0gATEAD0IQhoRCAYhC////AIMiDX58IAIzAAUgAjEAB0IQhoRCAohC////AIMiDiABMwASIAExABRCEIaEQgOIIgt+fCACNQAPQgaIQv///wCDIgggATUAB0IHiEL///8AgyIPfnwgAjMADSACMQAPQhCGhEIBiEL///8AgyIMIAE1AApCBIhC////AIMiEH58IAIzABIgAjEAFEIQhoRCA4giESABMwAFIAExAAdCEIaEQgKIQv///wCDIhJ+fCACNQAXQgWIQv///wCDIhUgATMAACABMQACQhCGQoCA/ACDhCIWfnwgAjMAFSACMQAXQhCGQoCA/ACDhCIXIAE1AAJCBYhC////AIMiGH58IAQgBn4gBSALfnwgCSANfnwgCiAQfnwgByAOfnwgCCASfnwgDCAPfnwgESAYfnwgFiAXfnwiHUKAgEB9Ih5CFYh8IhMgE0KAgEB9IiBCgICAf4N9IAIzABogAkEcaiICMQAAQhCGhEICiEL///8AgyITIAE1ABxCB4giGX4gAjUAAEIHiCIaIAEzABogATEAHEIQhoRCAohC////AIMiG358IAMgGn4gFSAZfnwgEyAbfnwiIUKAgEB9Ih9CFYh8IiIgIkKAgEB9IhxCgICAf4N9IiJCk9gofnwgISAfQoCAgH+DfSAXIBl+IBUgG358IAYgGn58IAMgE358IAMgFX4gESAZfnwgFyAbfnwgCyAafnwgBiATfnwiI0KAgEB9IhRCFYh8Ih9CgIBAfSIkQhWIfCIhQpjaHH58IB8gJEKAgIB/g30iH0Ln9id+fCAjIBRCgICAf4N9IBEgG34gCCAZfnwgBiAVfnwgAyAXfnwgByAafnwgCyATfnwgDCAZfiAIIBt+fCADIBF+fCAL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A4YgBEKAgPAAg0ISiIQ8ABIgACAFQgiIPAAWIAAgEEL///8AgyAFQhWHfCIEQguIPAAZIAAgBEIDiDwAGCAAIAVCEIhCH4MgBEIFhoQ8ABcgACARQv///wCDIARCFYd8IgNCBog8ABsgACADQgKGIARCgIDgAINCE4iEPAAaIAAgCkL///8AgyADQhWHfCIEQhGIPAAfIAAgBEIJiDwAHiAAIARCAYg8AB0gACAEQgeGIANCgID/AINCDoiEPAAcC68CARN/IAEoAgQhDCAAKAIEIQMgASgCCCENIAAoAgghBCABKAIMIQ4gACgCDCEFIAEoAhAhDyAAKAIQIQYgASgCFCEQIAAoAhQhByABKAIYIREgACgCGCEIIAEoAhwhEiAAKAIcIQkgASgCICETIAAoAiAhCiABKAIAIRQgACgCACELIABBACACayICIAAoAiQiFSABKAIkc3EgFXM2AiQgACAKIAIgCiATc3FzNgIgIAAgCSACIAkgEnNxczYCHCAAIAggAiAIIBFzcXM2AhggACAHIAIgByAQc3FzNgIUIAAgBiACIAYgD3NxczYCECAAIAUgAiAFIA5zcXM2AgwgACAEIAIgBCANc3FzNgIIIAAgAyACIAMgDHNxczYCBCAAIAsgAiALIBRzcXM2AgALTQECfyACQQJ2IQRBACECA0AgAiAERkUEQCADIAEgAkECdCIDaigCACAAIANqKAIAc3IhAyACQQFqIQIMAQsLIANBAWsgA0F/c3FBH3YLPgEBfyAAIAFBKGoiAiABEBIgAEEoaiACIAEQFCAAQdAAaiABQdAAakEoEAYaIABB+ABqIAFB+ABqQcAVEAQLJQEBfyMAQSBrIgEkACABIAAQggEgAUEgEEchACABQSBqJAAgAAukAQEFfyMAQeAGayIDJAAgA0HABGoiBCABIAIQUSADQaACaiIFIAFBoAJqIgYgAkGgAmoiBxBRIAMgASAGEHYgAEGgAmoiASACIAcQdiABIAEgAxBRIAEgASAEEHUgASABIAUQdSADQeADaiIBIAEQJiAAIAQgARAHIABB4ABqIANBoAVqIAUQByAAQcABaiADQYAGaiADQYADahAHIANB4AZqJAALNAECfyMAQTBrIgIkACACIAEgAUEwaiIDEFsgACABIAMQcSAAQTBqIAJBMBAQIAJBMGokAAsKACAAIAEgAhAKCwkAIAAgARC5AgsIACAAIAEQfguPAQEBfyMAQRBrIgMgADYCDCADIAE2AgggA0EAOgAHIANBAToABgNAIAIEQCACQQFrIgIgAygCDGotAAAhACADIAMtAAcgAy0ABiADKAIIIAJqLQAAIgEgAGtBCHZxcjoAByADIAMtAAYgACABc0EBa0EIdnE6AAYMAQsLIAMtAAYgAy0AByADLQAHampBAWsLUQECfyMAQeADayIDJABBfyEEAkAgA0HAAmogARBjDQAgA0GgAWogAhBjDQAgAyADQcACaiADQaABahAdIAAgAxB/QQAhBAsgA0HgA2okACAEC78BAQJ/IAAgACkDICACrXw3AyACQCACRQ0AIAAoAmgiA0UNACACQcAAIANrIgRJBEAgACADakEoaiABIAIQeyAAIAAoAmggAmo2AmgPCyADIABBKGoiA2ogASAEEHsgACADQQEQRiADQcAAEBkgAEEANgJoIAIgBGshAiABIARqIQELIAJBwABJBH8gAgUgACABIAJBBnYQRiABIAJBQHFqIQEgAkE/cQsiAwRAIAAgAzYCaCAAQShqIAEgAxB7CwszAQF/IAFBACABQQBKGyEBA0AgASADRkUEQCAAIAAQZSADQQFqIQMMAQsLIAAgACACECALjQEBBH8jAEGgAmsiAyQAIANBqAFqIABBKBAGGiADQdABaiAAQShqQSgQBhogA0H4AWogAEHQAGpBKBAGGiABQQAgAUEAShshAQNAIAEgBEZFBEAgBEEBaiEEIANBCGoiBSADQagBaiIGEDQgBiAFEDgMAQsLIAAgA0EIahAaIAAgACACEB0gA0GgAmokAAuVAQEEfyMAQTBrIgUkACAAIAFBKGoiAyABEBIgAEEoaiIEIAMgARAUIABB0ABqIgMgACACEAQgBCAEIAJBKGoQBCAAQfgAaiIGIAJB+ABqIAFB+ABqEAQgACABQdAAaiACQdAAahAEIAUgACAAEBIgACADIAQQFCAEIAMgBBASIAMgBSAGEBIgBiAFIAYQFCAFQTBqJAALqgEBCX8gASgCBCECIAEoAgghAyABKAIMIQQgASgCECEFIAEoAhQhBiABKAIYIQcgASgCHCEIIAEoAiAhCSABKAIkIQogAEEAIAEoAgBrNgIAIABBACAKazYCJCAAQQAgCWs2AiAgAEEAIAhr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AGAgACAAQShqIAQgBEGAAmoQoAFBACECA0AgAkEIRwRAIAEgAkECdCIDaiAAIANqKAIAIgNBGHQgA0GA/gNxQQh0ciADQQh2QYD+A3EgA0EYdnJyNgAAIAJBAWohAgwBCwsgBEGgAhAcIABB6AAQHCAEQaACaiQACygAIAAgASACECEgAEEoaiABQShqIAIQISAAQdAAaiABQdAAaiACECELOAAgACABIAIQISAAQShqIAFBKGogAhAhIABB0ABqIAFB0ABqIAIQISAAQfgAaiABQfgAaiACECELCAAgACABEEcLRgEBfyMAQYABayIEJAAgBEG1CCkAADcABSAEQbAIKQAANwMAIAAgASACIARBEGoiACAAIAMgBEENEGsQtAEgBEGAAWokAAsJACAAIAEQowILrAEBA38jAEGgAmsiAyQAQcABIQICQCABQcABaiIEQeAAEA8EQCAAQeAAELYCDAELIARB4JUCQeAAECJFBEAgAyABEJYBIAMhAQsjAEEwayICJAAgAiABQTBqEJgBIAAgAkEwEHogAiABEJgBIABBMGogAkEwEHogAUHgAGoQlQEhASACQTBqJAAgAC0AACABQQR0QSBxckGAf3IhAgsgACACOgAAIANBoAJqJAALpgUBFX8jAEFAaiELIAAoAhwhDyAAKAIYIRAgACgCFCERIAAoAhAhEiAAKAIMIRMgACgCCCEUIAAoAgQhFSAAKAIAIRYDQCACBEAgAkEBayECQQAhByAVIQMgFCEEIBMhDCASIQggESEGIBAhBSAPIQ0gFiEOA0AgBSEKIAYhBSAIIQYgBCEJIAMhBEEQIQMgB0EQRkUEQCALIAdBAnQiCGogASgAACIDQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZyciIDNgIAIAhB8JoCaigCACAFIAZxIAZBGncgBkEVd3MgBkEHd3NqIA1qIAogBkF/c3FqaiADaiIXIAxqIQggB0EBaiEHIAFBBGohASAKIQ0gDiIDQR53IANBE3dzIANBCndzIAMgCSIMIARzcSAEIAlxc2ogF2ohDgwBCwsDQCAKIQcgBSEKIAYhBSAJIQggBCEJIANBwABGRQRAIAsgA0EPcUECdGoiBCAEKAIAIAsgA0EJakEPcUECdGooAgAgCyADQQFqIhdBD3FBAnRqKAIAIgRBGXcgBEEOd3MgBEEDdnNqaiALIANBDmpBD3FBAnRqKAIAIgRBD3cgBEENd3MgBEEKdnNqIgQ2AgAgA0ECdEHwmgJqKAIAIAUgCnEgBUEadyAFQRV3cyAFQQd3c2ogDWogByAFQX9zcWpqIARqIgMgDGohBiAHIQ0gDiIEQR53IARBE3dzIARBCndzIAQgCCIMIAlzcSAIIAlxc2ogA2ohDiAXIQMMAQsLIAAgDSAPaiIPNgIcIAAgByAQaiIQNgIYIAAgCiARaiIRNgIUIAAgBSASaiISNgIQIAAgDCATaiITNgIMIAAgCCAUaiIUNgIIIAAgCSAVaiIVNgIEIAAgDiAWaiIWNgIADAELCwtGAQJ/IwBBEGsiA0EAOgAPA0AgASACRkUEQCADIAAgAmotAAAgAy0AD3I6AA8gAkEBaiECDAELCyADLQAPQQFrQQh2QQFxCzkAIABCADcDICAAQeCHAikDADcDACAAQeiHAikDADcDCCAAQfCHAikDADcDECAAQfiHAikDADcDGAszAQF/IAFBACABQQBKGyEBA0AgASADRkUEQCAAIAAQCyADQQFqIQMMAQsLIAAgACACEAQLSgECfyMAQYABayICJAAgAkEIaiIDIAFBKBAGGiACQTBqIAFBKGpBKBAGGiACQdgAaiABQdAAakEoEAYaIAAgAxA0IAJBgAFqJAALJwEBfyMAQSBrIgEkACABIAAQggEgAS0AACEAIAFBIGokACAAQQFxC14BAn8jAEHADWsiAyQAIANBgAlqIgQgAUHABBAGGiADQcAEaiIBIAJBwAQQBhogAyAEIAEQmAIgACADQcAEEAYaIARBwAQQAyABQcAEEAMgA0HABBADIANBwA1qJAALCQAgACABEJ0CCxQAIAAgASACQbCVAkH9/3NBDBBaC5wDAQZ/IwBBoAJrIgQhByAEJAAgBCADQaACbGsiBSIEJAAgBCADQeAAbGsiCCQAAkACQCADQQFHDQAgAUHAARAPIAJB4AAQD3JFDQAgAEHglQJBwAQQEAwBC0EAIQQDQCADIARGRQRAIAggBEHgAGwiCWoiBiACIAlqIgkgCRAXIAYgBkEBEDYgBkEwaiAJQTBqIgYgBhAXIAUgBEGgAmxqIgYgASAEQcABbGpBwAEQECAGQcABakHglQJB4AAQECAEQQFqIQQMAQsLIAcgBSAFEMgBIAcgCBCOASAAQcAEEBkgACAHQcABEBAgAEGAA2ogB0HAAWpB4AAQEEEBIAMgA0EBTRshAkEBIQQDQCACIARGRQRAIAcgBSAEQaACbGoiBiAGEMgBIAcgCCAEQeAAbGoQjgEgACAAIAcQyQEgBEEBaiEEDAELCyAAIAUgASAIIANBAhB0IAAgBSABIAggA0EDEHQgACAFIAEgCCADQQkQdCAAIAUgASAIIANBIBB0IAAgBSABIAggA0EQEHQgABA9CyAHQaACaiQAC6ECAQh/IwBBwARrIgIkACACQYADaiIEIAEgAUGAA2oiBhDKASACQcABaiIFIAFBoAJqIgcgAUHAAWoiAxDKASACIAFB4ABqIgggAUHgA2oiCRDKASAAIAQgARAJIAAgACAAEAcgACAAIAQQByAAQeAAaiIBIAUgCBAJIAEgASABEAcgASABIAUQByAAQcABaiIBIAIgAxAJIAEgASABEAcgASABIAIQByACQeAAaiIDIAMQJiAAQaACaiIBIAMgBxAHIAEgASABEAcgASABIAMQByAAQYADaiIBIAJB4ANqIgMgBhAHIAEgASABEAcgASABIAMQByAAQeADaiIAIAJBoAJqIgEgCRAHIAAgACAAEAcgACAAIAEQByACQcAEaiQAC4wCAQp/IwBBwARrIgMkACADQeADaiIHIAEgAhAFIANBgANqIgggAUHgAGoiBCACQeAAaiIKEAUgA0GgAmoiCSABQcABaiILIAJBwAFqIgwQBSADQeAAaiIFIAQgCxAHIAMgCiAMEAcgA0HAAWoiBiAFIAMQBSAGIAYgCBAJIAYgBiAJEAkgBiAGECYgBSABIAQQByADIAIgChAHIABB4ABqIgQgBSADEAUgBCAEIAcQCSAEIAQgCBAJIAUgCRAmIAQgBCAFEAcgBSABIAsQByADIAIgDBAHIABBwAFqIgEgBSADEAUgASABIAcQCSABIAEgCRAJIAEgASAIEAcgACAGIAcQByADQcAEaiQAC04AIAAgAUGgAhAQIABBMGoiASABQQEQNiAAIABBgKACEAUgAEGQAWoiASABQQEQNiAAQeAAaiIBIAFB4KACEAUgAEHwAWoiACAAQQEQNgu+AQEFfyMAQaACayIDJAAgA0HAAWoiBCABEA4gA0HgAGoiAiABQeAAaiIGEA4gAyACEA4gAiACIAEQByACIAIQDiACIAIgBBAJIAIgAiADEAkgAiACIAIQByAEIAQQlAEgACAEEA4gACAAIAIQCSAAIAAgAhAJIABBwAFqIgUgAUHAAWoiASABEAcgBSAFIAYQBSADIAMQoQIgAEHgAGoiASACIAAQCSABIAEgBBAFIAEgASADEAkgA0GgAmokAAtYAQN/IwBBkAFrIgIkACACQeAAaiIDIAFB0ABqEKUBIAJBMGoiBCABIAMQBCACIAFBKGogAxAEIAAgAhCCASAAIAQQS0EHdCAALQAfczoAHyACQZABaiQAC/8BAQZ/IwBB0AJrIgMkACAAQShqIgYgARBmIABB0ABqIgJBATYCACAAQdQAakEAQSQQExogA0GgAmoiBCAGEAsgA0HwAWoiBSAEQdAMEAQgBCAEIAIQFCAFIAUgAhASIAAgBCAFEAQgACAAEKQBIAAgBCAAEAQgA0HAAWoiAiAAEAsgAiACIAUQBCADQZABaiIFIAIgBBAUIANB4ABqIgcgAiAEEBIgBRAkIQIgBxAkIQQgAyAAQYANEAQgACADQQEgAmsQISADQTBqIgUgABAwIAAgBSAAEEsgAS0AH0EHdnMQISAAQfgAaiAAIAYQBCADQdACaiQAIAIgBHJBAWsLNgEBfyMAQaADayIFJAAgBSADIAQQpwEgBSABIAKsECcgBSAAEKYBIAVBoAMQAyAFQaADaiQACwkAIAAgARC4AgtSAgN/AX4gAkEBcSEFA0AgAyAERkUEQCAAIARBAnQiBmogASAGaigCACACc60gBa18Igc+AgAgBEEBaiEEIAdCIIinIQUMAQsLQQAgB6dBH3ZrCz8BAX8jAEEgayIBJAAgAUIANwMYIAFCADcDECABQgA3AwAgAUIANwMIIAFBAToAACAAIAEQuQIaIAFBIGokAAupBAIKfwR+IwAgBUECdEEEckEPakFwcWshByACNQIAIRADQCAFIAZGRQRAIAcgBkECdCIJaiAIrSABIAlqNQIAIBB+fCIRPgIAIAZBAWohBiARQiCIpyEIDAELCyAHKAIAIQYgByAFQQJ0aiILIAg2AgAgB0EBIAUgBUEBTRsiDEECdGoiDUEEayEOIAM1AgAhE0EAIQlCACEQA0AgBzUCACATIAQgBmytIhJ+fCERQQEhBgNAIBFCIIghESAGIAxGRQRAIAcgBkECdCIIaiIKQQRrIAo1AgAgAyAIajUCACASfiARfHwiET4CACAGQQFqIQYMAQsLIA4gDTUCACAQIBF8fCIQPgIAIBBCIIghEAJAIAUgCUEBaiIJRgRAQQAhAUEAIQYDQCAFIAZGDQIgACAGQQJ0IgJqIAIgB2o1AgAgAiADajUCACABrXx9IhE+AgAgEUIgiKdBAXEhASAGQQFqIQYMAAsACyACIAlBAnRqNQIAIRFBACEIQQAhBgNAIAUgBkZFBEAgByAGQQJ0IgpqIg8gDzUCACAIrSABIApqNQIAIBF+fHwiEj4CACASQiCIpyEIIAZBAWohBgwBCwsgBygCACEGIAsgECAIrXwiED4CACAQQiCIIRAMAQsLIBCnIAFrIgFBf3MhAkEAIQYDQCAFIAZGRQRAIAAgBkECdCIDaiIEIAMgB2ooAgAgAXEgBCgCACACcXI2AgAgBkEBaiEGDAELCwsRACAAIAEgAkGwlQJBDBCMAQsaACAAIAEgAhDDASAAQTBqIAFBMGogAhDDAQsQACAAQeAAaiIAIAAgARBcCygAIAAgAUEDdmotAAAgACABIAJqQQFrQQN2ai0AAEEIdHIgAUEHcXYLuwEBBX8jAEGQAWsiAyQAIANB4ABqIgQgARAWIANBMGoiAiABQTBqIgYQFiADIAIQFiACIAIgARAXIAIgAhAWIAIgAiAEEBUgAiACIAMQFSACIAIgAhAXIAQgBBCyAiAAIAQQFiAAIAAgAhAVIAAgACACEBUgAEHgAGoiBSABQeAAaiIBIAEQFyAFIAUgBhAIIAMgAxC/ASAAQTBqIgEgAiAAEBUgASABIAQQCCABIAEgAxAVIANBkAFqJAALjQEBAn8jAEGQAWsiAyQAIAACfyABQeAAaiICQTAQDwRAIABBMBC2AkHAAQwBCyACQeCVAkEwECJFBEAgAyABENQBIAMhAQsjAEEwayICJAAgAiABEJgBIAAgAkEwEHogAUEwahC0AiEBIAJBMGokACAALQAAIAFBBHRBIHFyQYB/cgs6AAAgA0GQAWokAAsiACAAIAFB4AAQECAAQeAAaiABQeCVAkEwIAFB4AAQDxARC7ABAgF+An8gASkDICECIAFBKGoiAyABKAJoIgRqQYABOgAAIARBOGtBRk0EQCABIANBARBGIANBwAAQGQsgASACQiuGQoCAgICAgMD/AIMgAkI7hoQgAkIbhkKAgICAgOA/gyACQguGQoCAgIDwH4OEhCACQgWIQoCAgPgPgyACQhWIQoCA/AeDhCACQiWIQoD+A4MgAkIDhkI4iISEhDcAYCABIANBARBGIAAgARCaAQuuAwEGfyMAQeADayIDJAAgAS0AHyIFQX9zQf8AcSEEQR4hAgNAIAIEQCAEIAEgAmotAABBf3NyIQQgAkEBayECDAELC0F/IQIgBEH/AXFBAWtB7AEgAS0AACIEa3FBCHYgBCAFQQd2cnJBAXFFBEAgA0HQAmoiByABEGYgA0GgAmoiAiAHEAsgA0EBNgLwASADQfABaiIFQQRyQQBBJBATGiAFIAUgAhAUIANBkAFqIgYgBRALIANBATYCwAEgA0HAAWoiAUEEckEAQSQQExogASABIAIQEiADQeAAaiICIAEQCyADQTBqIgRB0AwgBhAEIAQgBBAwIAQgBCACEBQgAyAEIAIQBCADQQE2AoADIANBgANqIgJBBHJBAEEkEBMaIANBsANqIgYgAiADENkBIQIgACAGIAEQBCAAQShqIgEgBiAAEAQgASABIAQQBCAAIAAgBxAEIAAgACAAEBIgACAAEKEBIAEgBSABEAQgAEEBNgJQIABB1ABqQQBBJBATGiAAQfgAaiIEIAAgARAEQQAgBBBLQQEgAmtyIAEQJHJrIQILIANB4ANqJAAgAgv+EQEVfiAAIAA1ADFCB4hC////AIMiAkLTjEN+IAAzABogADEAHEIQhoRCAohC////AIN8IAA1ADRCBIhC////AIMiAULn9id+fCAAMwAvIAAxADFCEIaEQgKIQv///wCDIgNC0asIfnwgADUAOUIGiEL///8AgyIEQpPYKH58IAAzADcgADEAOUIQhoRCAYhC////AIMiBUKY2hx+fCIGIAA1ACxCBYhC////AIMgADUAPEIDiCIHQoOhVn4gADMAKiAAMQAsQhCGQoCA/ACDhHwiCEKAgEB9IglCFYd8IgpCg6FWfnwgBkKAgEB9IhFCgICAf4N9IAJC5/YnfiAANQAXQgWIQv///wCDfCABQpjaHH58IANC04xDfnwgAkKY2hx+IAAzABUgADEAF0IQhkKAgPwAg4R8IAFCk9gofnwgA0Ln9id+fCILQoCAQH0iDEIViHwgBUKT2Ch+fCIGQoCAQH0iDUIVh3wiEiASQoCAQH0iEkKAgIB/g30gBiAKQtGrCH58IA1CgICAf4N9IAggCUKAgIB/g30gB0LRqwh+IAAzACcgADEAKUIQhoRCA4h8IARCg6FWfnwgB0LTjEN+IAA1ACRCBohC////AIN8IARC0asIfnwgBUKDoVZ+fCIJQoCAQH0iDUIVh3wiCEKAgEB9Ig5CFYd8IgZCg6FWfnwgCyAMQoCAgP///wODfSACQpPYKH4gADMAEiAAMQAUQhCGhEIDiHwgA0KY2hx+fCADQpPYKH4gADUAD0IGiEL///8Ag3wiC0KAgEB9IgxCFYh8Ig9CgIBAfSIQQhWIfCAKQtOMQ358IAZC0asIfnwgCCAOQoCAgH+DfSIIQoOhVn58Ig5CgIBAfSITQhWHfCIUQoCAQH0iFUIVh3wgFCAVQoCAgH+DfSAOIBNCgICAf4N9IA8gEEKAgIB/g30gCkLn9id+fCAGQtOMQ358IAhC0asIfnwgCSANQoCAgH+DfSABQoOhVn4gADMAIiAAMQAkQhCGhEIBiEL///8Ag3wgB0Ln9id+fCAEQtOMQ358IAVC0asIfnwgAkKDoVZ+IAA1AB9CBIhC////AIN8IAFC0asIfnwgB0KY2hx+fCAEQuf2J358IAVC04xDfnwiDUKAgEB9Ig5CFYd8Ig9CgIBAfSIQQhWHfCIJQoOhVn58IAsgDEKAgID///8Bg30gCkKY2hx+fCAGQuf2J358IAhC04xDfnwgCULRqwh+fCAPIBBCgICAf4N9IgtCg6FWfnwiDEKAgEB9Ig9CFYd8IhBCgIBAfSITQhWHfCAQIBNCgICAf4N9IAwgD0KAgIB/g30gCkKT2Ch+IAAzAA0gADEAD0IQhoRCAYhC////AIN8IAZCmNocfnwgCELn9id+fCAJQtOMQ358IAtC0asIfnwgDSAOQoCAgH+DfSACQtGrCH4gADUAHEIHiEL///8Ag3wgAULTjEN+fCADQoOhVn58IAdCk9gofnwgBEKY2hx+fCAFQuf2J358IBFCFYd8IgFCgIBAfSIDQhWHfCICQoOhVn58IAZCk9gofiAANQAKQgSIQv///wCDfCAIQpjaHH58IAlC5/YnfnwgC0LTjEN+fCACQtGrCH58IgRCgIBAfSIFQhWHfCIHQoCAQH0iCkIVh3wgByABIANCgICAf4N9IBJCFYd8IgNCgIBAfSIGQhWHIgFCg6FWfnwgCkKAgIB/g30gBCAFQoCAgH+DfSABQtGrCH58IAhCk9gofiAANQAHQgeIQv///wCDfCAJQpjaHH58IAtC5/YnfnwgAkLTjEN+fCAJQpPYKH4gADMABSAAMQAHQhCGhEICiEL///8Ag3wgC0KY2hx+fCACQuf2J358IgRCgIBAfSIFQhWHfCIHQoCAQH0iCkIVh3wgByABQtOMQ358IApCgICAf4N9IAQgBUKAgIB/g30gAULn9id+fCALQpPYKH4gADUAAkIFiEL///8Ag3wgAkKY2hx+fCACQpPYKH4gADMAACAAMQACQhCGQoCA/ACDhHwiAkKAgEB9IgRCFYd8IgVCgIBAfSIHQhWHfCABQpjaHH4gBXwgB0KAgIB/g30gAiAEQoCAgH+DfSABQpPYKH58IgFCFYd8IgRCFYd8IgVCFYd8IgdCFYd8IgpCFYd8IghCFYd8IglCFYd8IgtCFYd8IhFCFYd8IgxCFYd8Ig1CFYcgAyAGQoCAgH+DfXwiBkIVhyICQpPYKH4gAUL///8Ag3wiAzwAACAAIANCCIg8AAEgACACQpjaHH4gBEL///8Ag3wgA0IVh3wiAUILiDwABCAAIAFCA4g8AAMgACADQhCIQh+DIAFCBYaEPAACIAAgAkLn9id+IAVC////AIN8IAFCFYd8IgNCBog8AAYgACADQgKGIAFCgIDgAINCE4iEPAAFIAAgAkLTjEN+IAdC////AIN8IANCFYd8IgFCCYg8AAkgACABQgGIPAAIIAAgAUIHhiADQoCA/wCDQg6IhDwAByAAIAJC0asIfiAKQv///wCDfCABQhWHfCIDQgyIPAAMIAAgA0IEiDwACyAAIANCBIYgAUKAgPgAg0IRiIQ8AAogACACQoOhVn4gCEL///8Ag3wgA0IVh3wiAUIHiDwADiAAIAFCAYYgA0KAgMAAg0IUiIQ8AA0gACAJQv///wCDIAFCFYd8IgJCCog8ABEgACACQgKIPAAQIAAgAkIGhiABQoCA/gCDQg+IhDwADyAAIAtC////AIMgAkIVh3wiAUINiDwAFCAAIAFCBYg8ABMgACARQv///wCDIAFCFYd8IgM8ABUgACABQgOGIAJCgIDwAINCEoiEPAASIAAgA0IIiDwAFiAAIAxC////AIMgA0IVh3wiAkILiDwAGSAAIAJCA4g8ABggACADQhCIQh+DIAJCBYaEPAAXIAAgDUL///8AgyACQhWHfCIBQgaIPAAbIAAgAUIChiACQoCA4ACDQhOIhDwAGiAAIAZC////AIMgAUIVh3wiAkIRiDwAHyAAIAJCCYg8AB4gACACQgGIPAAdIAAgAkIHhiABQoCA/wCDQg6IhDwAHAsKACAAIAEgARAgC/QEARl+IAE1AAAhBSABMQAGIQQgATEABSEGIAExAAQhAiABMQAJIQMgATEACCEMIAExAAchDSABMQAMIQcgATEACyEIIAExAAohCSABMQAPIQogATEADiEOIAExAA0hDyABMQAfIRAgATEAHiERIAExAB0hEiABMQAcIRMgATEAGyEUIAExABohFSABMQAZIRYgATEAGCEXIAExABchGCAAIAExABVCD4YgATEAFEIHhoQgATEAFkIXhoQgATUAECIZQoCAgAh8IhpCGYh8IgsgC0KAgIAQfCILQoCAgOAPg30+AhggACAZIBpCgICA8A+DfSAOQgqGIA9CAoaEIApCEoaEIAhCC4YgCUIDhoQgB0IThoQiB0KAgIAIfCIIQhmIfCIJQoCAgBB8IgpCGoh8PgIUIAAgCSAKQoCAgOAPg30+AhAgACAMQg2GIA1CBYaEIANCFYaEIAZCDoYgAkIGhoQgBEIWhoQiBEKAgIAIfCIGQhmIfCICIAJCgICAEHwiAkKAgIDgD4N9PgIIIAAgF0INhiAYQgWGhCAWQhWGhCIDIAtCGoh8IANCgICACHwiA0KAgIDwA4N9PgIcIAAgAkIaiCAHfCAIQoCAgPAAg30+AgwgACAUQgyGIBVCBIaEIBNCFIaEIANCGYh8IgIgAkKAgIAQfCICQoCAgOAPg30+AiAgACAQQhKGQoCA8A+DIBFCCoYgEkIChoSEIgMgAkIaiHwgA0KAgIAIfCICQoCAgBCDfT4CJCAAIAQgBkKAgIDwB4N9IAUgAkIZiEITfnwiBUKAgIAQfCIEQhqIfD4CBCAAIAUgBEKAgIDgD4N9PgIACzQBAX8jAEEgayICJAAgACACED8gAEHoAGoiACACQiAQHyAAIAEQPyACQSAQHCACQSBqJAAL6wEBA38jAEHgAGsiBCQAIAJBwQBPBEAgABBIIAAgASACrRAfIAAgBBA/QSAhAiAEIQELIAAQSCAEQSBqQTZBwAAQExoDQCACIANHBEAgBEEgaiADaiIFIAUtAAAgASADai0AAHM6AAAgA0EBaiEDDAELCyAAIARBIGoiA0LAABAfIABB6ABqIgAQSCADQdwAQcAAEBMaQQAhAwNAIAIgA0cEQCAEQSBqIANqIgUgBS0AACABIANqLQAAczoAACADQQFqIQMMAQsLIAAgBEEgaiIAQsAAEB8gAEHAABAcIARBIBAcIARB4ABqJAALDAAgACABIAKsENgBC0YBAX8jAEGAAWsiBCQAIARBrAgoAAA2AgggBEGkCCkAADcDACAAIAEgAiAEQRBqIgAgACADIARBDBBrEPIBIARBgAFqJAALpwEBAn8jAEEwayIEJAAgBEHBCC8AADsBLCAEQb0IKAAANgIoIARB3wgoAAA2AB8gBEHYCCkDADcDGCAEQdAIKQMANwMQIARBLToADyAAIQUgAgRAIAAgAiADQQBBABAMIAAgA2ohBQsgBSAEQShqQQYgBEEPaiICQQEQDCAFQQdqIAFBARANIAVBCGogAkEBIARBEGpBExAMIARBMGokACAFIABrQRxqCz0BAX8gA0EAIANBAEobIQMDQCADIARHBEAgACAEaiACIARqLQAAIAEgBGotAABzOgAAIARBAWohBAwBCwsLbAECfyMAQaALayIDJAAgA0HACmoiBCABEDUaIANBgAlqIgEgAhBEGiADQcAEaiICIAEgBBCPASADIAIQkQIgACADQcAEEAYaIARB4AAQAyABQcABEAMgAkHABBADIANBwAQQAyADQaALaiQACyMAIAAgACABQQAQOgNAIAIEQCAAIAAQUyACQQFrIQIMAQsLCyIAIAAgACABEJcBA0AgAgRAIAAgABBfIAJBAWshAgwBCwsLtAICBn8CfiAEQQJ0IgYjACAGQQ9qQXBxayIGakEEayEKA0AgBCAIRgRAAkBBACEFA0AgBCAFRg0BIAAgBUECdCIBaiABIAZqNQIAIAEgAmo1AgAgB618fSILPgIAIAtCIIinQQFxIQcgBUEBaiEFDAALAAsFIAEoAgAiBSADbK0iDCACNQIAfiAFrXwhC0EBIQUDQCALQiCIIQsgBCAFRkUEQCAFQQJ0IgkgBmpBBGsgASAJajUCACACIAlqNQIAIAx+IAt8fCILPgIAIAVBAWohBQwBCwsgCiALPgIAIAhBAWohCCAGIQEMAQsLQQAhBUEAIAdr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RkUEQCADQZADaiACaiIBIAEtAAAgBGoiASABQQhqIgFB8AFxazoAACACQQFqIQIgAcBBBHUhBAwBCwsgAyADLQDPAyAEajoAzwMgAEEAQSgQEyIAQQE2AiggAEEsakEAQSQQExogAEEBNgJQIABB1ABqQQBBzAAQExpBASECA0AgAkE/S0UEQCADIAJBAXYgA0GQA2ogAmosAAAQzQIgA0HwAWoiASAAIAMQ3QEgACABEBogAkECaiECDAELCyADQfABaiIBIAAQSiADQfgAaiICIAEQOCABIAIQNCACIAEQOCABIAIQNCACIAEQOCABIAIQNCAAIAEQGkEAIQIDQCACQT9LRQRAIAMgAkEBdiADQZADaiACaiwAABDNAiADQfABaiIBIAAgAxDdASAAIAEQGiACQQJqIQIMAQsLIANB0ANqJAAFIANBkANqIAJBAXRqIgUgASACai0AACIGQQR2OgABIAUgBkEPcToAACACQQFqIQIMAQsLC+kDAQN/IwBBkAFrIgMkACADQeAAaiICIAEQCyADQTBqIgQgAhALIAQgBBALIAQgASAEEAQgAiACIAQQBCACIAIQCyACIAQgAhAEIAQgAhALQQEhAgNAIAJBBUZFBEAgAkEBaiECIANBMGoiBCAEEAsMAQsLIANB4ABqIgIgA0EwaiIEIAIQBCAEIAIQC0EBIQIDQCACQQpGRQRAIAJBAWohAiADQTBqIgQgBBALDAELCyADQTBqIgIgAiADQeAAahAEIAMgAhALQQEhAgNAIAJBFEZFBEAgAkEBaiECIAMgAxALDAELCyADQTBqIgIgAyACEARBASECA0AgAkELRkUEQCACQQFqIQIgA0EwaiIEIAQQCwwBCwsgA0HgAGoiAiADQTBqIgQgAhAEIAQgAhALQQEhAgNAIAJBMkZFBEAgAkEBaiECIANBMGoiBCAEEAsMAQsLIANBMGoiAiACIANB4ABqEAQgAyACEAtBASECA0AgAkHkAEZFBEAgAkEBaiECIAMgAxALDAELCyADQTBqIgIgAyACEARBASECA0AgAkEzRkUEQCACQQFqIQIgA0EwaiIEIAQQCwwBCwsgA0HgAGoiAiADQTBqIAIQBCACIAIQCyACIAIQCyAAIAIgARAEIANBkAFqJAALkAQBA38jAEHAAWsiAiQAIAJBkAFqIgQgARALIAJB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QcANaiIBIAAQUCACIAEQcyACIAIQUCADIAIQcyAEIABBwAQQECAEED0gAiACIAQQJSACED0gAiACIAMQJSADIAIQcyADIAMQUCAEIAMQcyAEIAQQUCACED0gBCAEIAIQJSACED0gAiACQQMQkAEgAyADQQIQkAEgAiACIAMQJSADIAQQcyADIAMQUCADIAMgARAlIAMgAyAAECUgAiACIAMQJSADIARBARCQASAAIAIgAxAlIARBgBJqJAALvwIBCX8jAEGgBWsiBCQAIARB4ANqIgkgAhAOIARBgANqIgUgAkHgAGoiBhAOIARBwARqIgogAkHAAWoiCxAOIARBoAJqIgcgBRAOIARBwAFqIgMgAiAFEAcgAyADEA4gAyADIAkQCSADIAMgBxAJIAMgAyADEAcgBEHgAGoiCCAJEJQBIAQgCBAOIAAgCCACEAcgASAEIAMQCSABIAEgAxAJIAFBwAFqIgIgBiALEAcgAiACEA4gAiACIAUQCSACIAIgChAJIAcgBxChAiABQeAAaiIGIAMgARAJIAYgBiAIEAUgBiAGIAcQCSAAIAAQDiAAIAAgCRAJIAAgACAEEAkgBSAFQQIQxAEgBUEwaiIBIAFBAhDEASAAIAAgBRAJIABB4ABqIAggChAFIABBwAFqIAIgChAFIARBoAVqJAAL1wEBB38jAEHgBmsiAyQAIANBwARqIgYgASACEJcCIAMgAUHgA2ogAkHAAWoiBBAFIANB4ANqIgUgAUGAA2ogBBAFIANBgANqIgggAUGgAmoiCSAEEAUgA0GgAmoiByADECYgAyACQeAAEBAgA0HgAGogAkHgAGogBBAHIABBoAJqIgIgASAJEHYgAiACIAMQlwIgAiACIAYQdSACIAIgBxB1IAUgBRAmIAAgBiAFEAcgAEHgAGogA0GgBWogBxAHIABBwAFqIANBgAZqIAgQByADQeAGaiQAC1oBA38jAEHAAWsiBCQAIARB4ABqIgUgARAOIAQgAhAOIABB4ABqIgMgASACEAcgACAEECYgACAAIAUQByADIAMQDiADIAMgBRAJIAMgAyAEEAkgBEHAAWokAAtAAQF/IwBBoAJrIgEkACABIABBwAEQECABQcABaiAAQeCVAkHgACAAQcABEA8QESABEMwBIQAgAUGgAmokACAAC9sBAQp/IwBBwARrIgIkACAC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akESdyAGcyEGIBFBAmohEQwBCwsL0QICA38BfiMAQfADayIGJAAgBkGgAmoiByAAIAEQaCAHIAIgA60QOUEAIQIDQCAFIAJBBXQiB0sEQCAGIAJBAWoiAkEYdCACQYD+A3FBCHRyIAJBCHZBgP4DcSACQRh2cnI2AEwgBkHQAGoiAyAGQaACakHQARAGGiADIAZBzABqQgQQOSADIAZBIGoQZyAGIAYpAzg3AxggBiAGKQMwNwMQIAYgBikDKDcDCCAGIAYpAyA3AwBCAiEJA0AgCUIBWARAIAZB0ABqIgMgACABEGggAyAGQSBqIghCIBA5IAMgCBBnQQAhAwNAIANBIEcEQCADIAZqIgggCC0AACAGQSBqIANqLQAAczoAACADQQFqIQMMAQsLIAlCAXwhCQwBCwsgBCAHaiAGQSAgBSAHayIDIANBIE8bEAYaDAELCyAGQaACakHQARAcIAZB8ANqJAALGgAgACgCABD8ASAAQQA2AgggAEIANwIAQQALUAEBfyMAQUBqIgIkACACIAFBwAAQBiIBEGQgACABKQMYNwAYIAAgASkDEDcAECAAIAEpAwg3AAggACABKQMANwAAIAFBwAAQHCABQUBrJAAL9gECA38CfiMAQYABayIDJAAgA0IANwNoIANCADcDcCADQgA3A3ggA0IANwNgIAMgASkAEDcDUCADIAEpABg3A1ggASkACCEGIAEpAAAhByADQgA3AyggA0IANwMwIANCADcDOCADIAc3A0AgAyAGNwNIIANCADcDICADIAIpABA3AxAgAyACKQAYNwMYIAMgAikAADcDACADIAIpAAg3AwggA0FAayEEQQAhAUEAIQIDQCABQSBHBEAgASAEaiIFIAEgA2otAAAgAiAFLQAAamoiAjoAACACQQh2IQIgAUEBaiEBDAELCyAAIAQQvwIgA0GAAWokAAveAQEBfyMAQYABayICJAAgAkIANwNQIAJCADcDWCACQgA3AyggAkIANwMwIAJCADcDOCACQciRAikDADcDaCACQdCRAikDADcDcCACQdiRAikDADcDeCACQgA3A0AgAkIANwNIIAJCADcDICACQcCRAikDADcDYCACIAEpABA3AxAgAiABKQAYNwMYIAIgASkAADcDACACIAEpAAg3AwggAkFAayIBIAIQwgIgARBkIAAgAikDWDcA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QGoiAyQAIANByAwoAgA2AjggA0HADCkDADcDMCADQbgMKQMANwMoIANBsAwpAwA3AyAgAyACQSAgA0EgakEcQSAQtgEaIAAgASADEOECIANBIBADIANBQGskAAsyAQJ/IAFBACABQQBKGyEDQQEhAQN/IAIgA0YEfyABBSACQQFqIQIgACABbCEBDAELCwt1AQV/IwBBQGoiAyQAIABBIBADIAJBACACQQBKGyEFA0AgBCAFRgRAIANBIGpBIBADIANBIBADIANBQGskAAUgAyABIARBBnRqIgYgASACEN8CIANBIGoiByAGQSBqIAMQMyAAIAAgBxA8IARBAWohBAwBCwsLMAAgAEEgEAMDQCADQQBKBEAgACABIAAQMyAAIAAgAiADQQFrIgNBBXRqEDwMAQsLCzYBAn8gAkEAIAJBAEobIQIDQCACIANHBEAgACADQQV0IgRqIAEgBGoQKBogA0EBaiEDDAELCwvsAgEEfyMAQUBqIgYkAEF/IQcgBCAFSCAFQQJIckUEQCABIAIpAAA3AAAgASACKQAYNwAYIAEgAikAEDcAECABIAIpAAg3AAggBUEBayEJQQAhAgN/IAIgCUYEfyAEQQAgBEEAShtBAWohA0EBIQcDfyADIAdGBH8gBkEgakEgEANBAAUgBkIANwMYIAZCADcDECAGQgA3AwAgBkIANwMIIAYgBzoAACAGQSBqIAYgASAFENgCIAdBBnQgAGpBQGoiAiAGKQMANwAAIAIgBikDGDcAGCACIAYpAxA3ABAgAiAGKQMINwAIIAIgBikDIDcAICACIAYpAyg3ACggAiAGKQMwNwAwIAIgBikDODcAOCAHQQFqIQcMAQsLBSABIAJBAWoiB0EFdGoiCCADIAJBBXRqIgIpAAA3AAAgCCACKQAYNwAYIAggAikAEDcAECAIIAIpAAg3AAggByECDAELCyEHCyAGQUBrJAAgBwsqACAAIAIgAxCtASAAQSBqIgMgAiAEEK0BIAEgABAoGiABQSBqIAMQKBoLfwEBfyMAQbACayIDJAAgA0GICykDADcDqAIgA0GACykDADcDoAIgA0H4CikDADcDmAIgA0HwCikDADcDkAIgAxAbIAMgA0GQAmpCIBAKIAMgASACrBAKIAMgA0HQAWoiARAeIAAgARBNIAFBwAAQAyADQdABEAMgA0GwAmok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IAJBkAEQAyADQZABEAMgA0GAA2okAAsKACAAQeCRAhBgC0QBAn8jAEHwAWsiAiQAIAJBkAFqIgMgARA1GiACIAMQYSACQQEQmQEgACACEGAgA0HgABADIAJBkAEQAyACQfABaiQAC3oBA38jAEHwBGsiAyQAIANBkARqIgQgARA1GiADQYADaiIBIAQQYSADQaACaiIFIAIQNRogA0GQAWoiAiAFEGEgAyABIAIQ0gEgACADEGAgBEHgABADIAFBkAEQAyAFQeAAEAMgAkGQARADIANBkAEQAyADQfAEaiQAC84BAQJ/IwBBgAlrIgMkAAJAIAJFBEAgAEHglQJBwAQQBhoMAQsCQCACQQBIBEAgA0HABGogARD4AUEAIAJrIQIMAQsgA0HABGogAUHABBAGGgsgA0HglQJBwAQQBiEBA0AgAkECTwRAAkAgAkEBcUUEQCABQcAEaiIEIAQQuAEMAQsgAkEBayECIAEgAUHABGoiBCABEEwgBCAEELgBCyACQQF2IQIMAQsLIAAgAUHABGoiACABEEwgAEHABBADIAFBwAQQAwsgA0GACWokAAtBAQF/IwBBwARrIgEkACABIABBwAQQBiIAQeCVAkHgABAiIABB4ABqQeADEA9xIQEgAEHABBADIABBwARqJAAgAQsOACAAQeCVAkHABBAGGgsJACAAIAEQsQILCQAgACABELUCC1gBAn8gAEGgAhAZIAFBoAJrIQYgAiAFcSEHQQEhAQNAIAEgBEZFBEAgACAGIAFBoAJsaiABIAdzQQFrQR92EIYDIAFBAWohAQwBCwsgACACIAN2QQFxEF0LWQECfyAAQZABEBkgAUGQAWshBiACIAVxIQdBASEBA0AgASAERkUEQCAAIAYgAUGQAWxqIAEgB3NBAWtBH3YQhwMgAUEBaiEBDAELCyAAIAIgA3ZBAXEQmQELBgAgABA+CyIBAX8jAEFAaiIBJAAgAUHAABB+IAAgARDIAiABQUBrJAALDwAgACABIABBoAIgAhARCw8AIAAgASAAQZABIAIQEQtSAQJ/IwBB4ANrIgMkAEF/IQQCQCADQcACaiABEGMNACADQaABaiACEGMNACADIANBwAJqIANBoAFqENwBIAAgAxB/QQAhBAsgA0HgA2okACAEC6AEAQt/IAJBAXYhDCACIQgCfwJAAkACQANAIAUgCCAFIAhLGyEKA0AgBSAKRgRAIAohBQwDCyABIAVqLQAAIgdB3wFxQTdrQf8BcSILQfb/A2ogC0Hw/wNqc0EIdiIGIAdBMHMiA0H2/wNqQQh2IgJyQf8BcUUEQCAEQf8BcUEBcg0DQQAhAgJ/IAcEQAJAQQAoAgAiBEF/cyAEQYGChAhrcUGAgYKEeHENACAHQYGChAhsIQYDQCAEIAZzIgNBf3MgA0GBgoQIa3FBgIGChHhxDQEgAigCBCEEIAJBBGohAiAEQYGChAhrIARBf3NxQYCBgoR4cUUNAAsLA0AgAiIDLQAAIgYEQCADQQFqIQIgBiAHRw0BCwsgAwwBC0EAIQMDQCADIgJBBGohAyACKAIAIgZBf3MgBkGBgoQIa3FBgIGChHhxRQ0ACwNAIAIiA0EBaiECIAMtAAANAAsgAwsiAkEAIAcgAi0AAEYbRQ0FIAVBAWohBUEAIQQMAQsLIAkgDEkEQCAGIAtxIAIgA3FyIQICQCAEQf8BcUUEQCACQQR0IQ0MAQsgACAJaiACIA1yOgAAIAlBAWohCQsgBUEBaiEFIARBf3MhBAwBCwtBkMcCQcQANgIAIARB/wFxDQFBfwwDCyAEQf8BcUUNAQtBkMcCQRw2AgAgBUEBayEFQX8MAQtBAAshACAFIAhHBH9BkMcCQRw2AgBBAAUgAAsaCyEBAX8jAEGgAWsiASQAIAEgABBjIQAgAUGgAWokACAARQuvAQECfyMAQcACayIDJABBfyEEAkAgAhDbAUUNACADIAIQVQ0AIAMQgAENACADEMwCRQ0AQQAhAgNAIAJBIEcEQCAAIAJqIAEgAmotAAA6AAAgAkEBaiECDAELCyAAIAAtAABB+AFxOgAAIAAgAC0AH0HAAHJB/wBxOgAfIANBoAFqIgIgACADEM8CIAAgAhBUIAAQuwINAEF/QQAgAUEgEEcbIQQLIANBwAJqJAAgBAu2AQEFfwJAIAJBAXRBAXIhAwJAIAJB/v///wdLDQAgAkEBdCIFIANPDQBBACEDA0AgAiADRwRAIAAgA0EBdGoiBCABIANqLQAAIgZBD3EiB0EIdCAHQfb/A2pBgLIDcWpBgK4BakEIdjoAASAEIAZBBHYiBCAEQfb/A2pBCHZB2QFxakHXAGo6AAAgA0EBaiEDDAELCyAAIAVqQQA6AAAMAQtB/L4CKAIAIgAEQCAAEQwACxABAAsLIQEBfyMAQSBrIgEkACABQSAQfiAAIAEQygIgAUEgaiQACwkAIAAgARDKAgsGAEGikQILLAECfyMAQRBrIgAkACAAQQA6AA9B5LgCIABBD2pBABAAIQEgAEEQaiQAIAELKQEBfyMAQRBrIgAkACAAQQA6AA9BiLkCIABBD2pBABAAGiAAQRBqJAALMAEBfwNAIAEgAkcEQBDVASAAIAJqQeC+AigCACgCBBEVADoAACACQQFqIQIMAQsLCwkAIAAgARC6Ags/AQF/IwBBIGsiASQAIAFCADcDGCABQgA3AxAgAUIANwMAIAFCADcDCCABQQE6AAAgACABELoCGiABQSBqJAALagECfyMAQeADayIDJABBfyEEAkAgA0HAAmogARBVDQAgA0HAAmoQgQFFDQAgA0GgAWogAhBVDQAgA0GgAWoQgQFFDQAgAyADQcACaiADQaABahDcASAAIAMQVEEAIQQLIANB4ANqJAAgBAtpAQJ/IwBB4ANrIgMkAEF/IQQCQCADQcACaiABEFUNACADQcACahCBAUUNACADQaABaiACEFUNACADQaABahCBAUUNACADIANBwAJqIANBoAFqEB0gACADEFRBACEECyADQeADaiQAIAQLRAECfyMAQaABayIBJAACQCAAENsBRQ0AIAEgABBVDQAgARCBAUUNACABEIABDQAgARDMAkEARyECCyABQaABaiQAIAILuwIBB38jAEHAEmsiBCQAIARB8BBqIgUQGyAFIAFC0A8QJyAFIANCIBAnQX8hBgJAIAUgAUHwD2ogAxCeAQ0AIAFB0A9qIANBIBAqDQAgBEGwDGoiAyABQaAGaiABQfAFaiACEN8BIARB8AdqIgUgAUGQC2ogAUHgCmogAhDfASAEQZAHaiIHIAMQ0wIgBEGwBmoiCCAFENMCIARB0AVqIgkgByAIEIcBIARBkAFqIgogASAJEG0gACABQTBqIAoQTCAEQQhqIgIQSCACIAFCMBAfIAIgAELABBAfIAIgBEHwAGoiABA/IAAgAUHwBGpBIBAqIQYgBEHwEGpB0AEQAyADQcAEEAMgBUHABBADIAdB4AAQAyAIQeAAEAMgCUHgABADIApBwAQQAyACQegAEAMLIARBwBJqJAAgBgtiAQJ/IwBB0AFrIgQkACAEEBsgBCABQrAFECdBfyEFAkAgBCABQbAFaiADEJ4BDQAgAUGQBWogA0EgECoNACAAIAFBMGogASACEN8BIARB0AEQA0EAIQULIARB0AFqJAAgBQugAwEFfyMAQfAQayIHJAAgB0GgD2oiCBAbIAggAUKwBRAnQX8hCQJAIAggAUGwBWogAxCeAQ0AIAFBkAVqIANBIBAqDQAgB0GgD2oiCBAbIAggAkKQBRAnIAggAkGQBWogAxCeAQ0AIAJB8ARqIANBIBAqDQAgAEHgCmogB0GAD2oiCBDhASAHQcAKaiIDEIgBIABBkAtqIAMgBCAIEOABIAdB4AlqIgQgAxDUAiAHQYAJaiIKIAJB0AVqIAQQhwEgB0HABGoiCyABIAoQbSAHIAFBMGogCxBMIAAgAUHwBRAGIgBBMGogB0HABBAGGiAAQfAFaiACQTAQBhogAEGgBmogAkEwakHABBAGGiAAQegPaiAFKQAYNwAAIABB4A9qIAUpABA3AAAgAEHYD2ogBSkACDcAACAAIAUpAAA3ANAPIAdBoA9qIgEQGyABIABC8A8QJ0EAIQkgASAAQfAPaiAGENcBIAFB0AEQAyAIQSAQAyADQcAEEAMgBEHgABADIApB4AAQAyALQcAEEAMgB0HABBADCyAHQfAQaiQAIAkL3wEBA38jAEHQCGsiBSQAIAAgBUGwCGoiBxDhASAFQfADaiIGEIgBIABBMGogBiACIAcQ4AEgACADKQAYNwCIBSAAIAMpABA3AIAFIAAgAykACDcA+AQgACADKQAANwDwBCAFQaACaiICEBsgAiAAQpAFECcgAiAAQZAFaiAEENcBIAVBwAFqIgMgBhDUAiAFQeAAaiIEIAEQhgEgBSAEELcBIABB0AVqIAMgBRCHASAHQSAQAyAGQcAEEAMgAkHQARADIANB4AAQAyAEQeAAEAMgBUHgABADIAVB0AhqJAALLwEBfyMAQSBrIgUkACAFQSAQKSAAIAEgAiADIAQgBRDSAiAFQSAQAyAFQSBqJAALKQEBfyMAQSBrIgIkACACQSAQKSAAIAEgAhDVAiACQSAQAyACQSBqJAALlgICA38BfiAAIQYgASEHIwBBgAJrIgUkACAFQQE6AA8CQCAEQeA/TQRAIAOtIQhBACEAA0AgBCAAQSBqIgFPBEAgBUEwaiAHQSAQaCAABEAgBUEwaiAAIAZqQSBrQiAQOQsgBUEwaiIDIAIgCBA5IAMgBUEPakIBEDkgAyAAIAZqEGcgBSAFLQAPQQFqOgAPIAEhAAwBCwsgBEEfcSIBBEAgBUEwaiAHQSAQaCAABEAgBUEwaiAAIAZqQSBrQiAQOQsgBUEwaiIDIAIgCBA5IAMgBUEPakIBEDkgAyAFQRBqIgIQZyAAIAZqIAIgARAGGiACQSAQHAsgBUEwakHQARAcDAELQZDHAkEcNgIACyAFQYACaiQACwcAIAAQiAELnQIBBH8jAEHgAGsiBSQAIAAgBCkAADcAACAAIAQpABg3ABggACAEKQAQNwAQIAAgBCkACDcACCADQQAgA0EAShshBiACQQAgAkEAShtBAWohAkEBIQMDQAJAIAVBQGtBIBADQQAhACACIANGDQADQCAAIAZGBEAgA0EFdCABakEgayIAIAUpA0A3AAAgACAFKQNYNwAYIAAgBSkDUDcAECAAIAUpA0g3AAggA0EBaiEDDAMFIAVCADcDGCAFQgA3AxAgBUIANwMAIAVCADcDCCAFIAMgABDWAjoAACAFQSBqIgcgBSAEIABBBXRqEBgaIABBAWohACAFQUBrIgggCCAHECsaDAELAAsACwsgBUEgakEgEAMgBUHgAGokAAvfAQEEfyMAQYABayIDJAAgA0HgAGogAEEgahAoGiADQgA3A1ggA0IANwNQIANCADcDSCADQgA3A0AgAkEAIAJBAEobIQIDfyACIARGBH8gA0HgAGoiASADQUBrIgJBIBAqIQAgAUEgEAMgAkEgEAMgA0EgakEgEAMgA0GAAWokACAARQUgAC0AACEFIANCADcDGCADQgA3AxAgA0IANwMAIANCADcDCCADIAUgBBDWAjoAACADQSBqIgUgAyABIARBBXRqEBgaIARBAWohBCADQUBrIgYgBiAFECsaDAELCwsNACAAIAEgAhDXAkEACzQBAX8jAEHQAWsiBSQAIAUgASACEGggBSADIAStEDkgBSAAEGcgBUHQARAcIAVB0AFqJAALQwAgACADIAQgByAFIAYQ2gIaIAIgAyAGENkCIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIAEgAikAADcAAAt4AQN/IwBBgAFrIgEkACABQeAAaiIEIAJBICADQSAgAEEEEKkBIAFBQGsiBSACQSBqECgaIAFBIGoiBiAE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aiIIIAogAxAIIAggCEEBEDYgASAHEA4gBCAEIAEQBSABIAEgBxAFIARB4ABqIgMgAyABEAUgAiACQdCUAkHgACAJEBEgAUHwAWokACAAIAQQRSAFQSAQAyAGQaACEAMgBEGgAhADIARBkAVqJAALngEBBX8jAEGwAWsiAiQAIAJBkAFqIgUgARC+ASMAQeAAayIBJAAgAkHgkQIgBRCwAiACQeAAaiIEQTAQDyEGIAFBMGoiAyAEENEBIAEgAxAWIAIgAiABEAggASABIAMQCCACQTBqIgMgAyABEAggBCAEQcCSAkEwIAYQESABQeAAaiQAIAAgAhBgIAVBIBADIAJBkAEQAyACQbABaiQAC4IEAQx/IwBBIGsiByQAIwBBoANrIgMkACADQYidAikDADcDGCADQYCdAikDADcDECADQfCcAikDADcDACADQficAikDADcDCAJAIAJBIEkEQCAHQSAQGQwBCyADQSBqIggQfSAIIANBFBAsIAMgCBBiIANB4AJqIQYgA0GwAmohCCADQZACaiENA0AjAEEQayIJJAAgCUEAOgAPIANBIGoiBCADIAlBD2oiBSADG0EgEL0BIAQgASACECwgBCAFQQEQLCANIAQQgAIgCUEQaiQAIAghBUEwIQsjACIJQRBrIgokACAEIA1BIBC9ASAKQYDgADsAACAKQQE6AAIgBCAKQQMQLCAEQbABaiEMQQEhDgNAIAwgBBCAAiALQSFPBEAgBSAMEIoBIAogDkEBaiIOOgACIARBAEEAEL0BIAQgDEEgECwgBCAKQQMQLCALQSBrIQsgBUEgaiEFDAELCyAFIAwgCxB7IAkkACAGQcAAEBkgBiAIQTAQNyAGIAZB8JICQX9BCBCGAiAGIAZB0JoCEJsBIAZBIBAPBEAgA0EgaiIFEH0gBSADQSAQLCADIAUQYgwBCwsgByAGEHwgA0EgakGAAxAZCyADQaADaiQAIwBBIGsiASQAIAEgB0EgEHkgACABQSAQeiABQSAQGSABQSBqJAAgB0EgEAMgB0EgaiQACzgBA34gASkAICECIAEpACghAyABKQAwIQQgACABKQA4NwAYIAAgBDcAECAAIAM3AAggACACNwAACzgBA34gASkACCECIAEpABAhAyABKQAAIQQgACABKQAYNwAYIAAgAzcAECAAIAI3AAggACAENwAACykBAX8jAEEgayICJAAgAkEgEH4gACABIAIQxQIgAkEgEBwgAkEgaiQAC2EBAn8jAEHwAGsiAyQAIANB6IcCKQMANwMQIANB8IcCKQMANwMYIANB+IcCKQMANwMgIANCADcDKCADQeCHAikDADcDCCADQQhqIgQgASACrBAfIAQgABA/IANB8ABqJAALEAAgACABIAKsIANBABDEAgsQACAAIAEgAqwgA0EAEMMCCyYBAX9BfyEDIAIgAUHAABAqBH9BfwUgACABQUBrQcAAEAYaQQALC0QBAX8jAEHAAWsiDyQAIA8gCiAFIAYgByAIIAkQ5wIgACABIAIgAyAEIAUgCyAMIAYgCiAPIA0gDhDiAiAPQcABaiQAC0wBAX8jAEHAAWsiEyQAIBMgCiAFIAYgByAIIAkgDxDrASAAIAEgAiADIAQgBSALIAwgBiAKIBMgDSAOIBAgESASEOcBIBNBwAFqJAALcQECfyMAQUBqIgwkACAMQSBqIg0gDCACIAMgAy0AyAEgA0HJAWogCCAGIAcgBCAFIAkQ5gIhAiAAIAEgAyAEIAUgDSAGIAcgDCAIIAogCxDjAiEAIA1BIBADIAxBIBADIAxBQGskAEF/QQAgACACchsLDQAgACABEBwgABD8AQs8AQF/IwBBIGsiBCQAIAQgAUHJAWogAiADEOgCIAEgAiADEAYiASADOgDIASAAIAEgBBDkAiAEQSBqJAALtwEAIAAgAikAADcAACAAIAIpABg3ABggACACKQAQNwAQIAAgAikACDcACCAAIAMpABg3ADggACADKQAQNwAwIAAgAykACDcAKCAAIAMpAAA3ACAgACAFKQAYNwBYIAAgBSkAEDcAUCAAIAUpAAg3AEggAEFAayAFKQAANwAAIAEgBCkACDcA8QEgASAEKQAQNwD5ASABIAQpABg3AIECIAEgBCkAADcA6QEgAUGJAmogAEHgABAGGguQAgEBfyMAQSBrIggkACAIIAIgAyAEEK4BIAEgAiADEAYiASADOgDIASABIAQpABg3AOEBIAEgBCkAEDcA2QEgASAEKQAINwDRASABIAQpAAA3AMkBIAAgCCkDGDcAGCAAIAgpAxA3ABAgACAIKQMINwAIIAAgCCkDADcAACAAIAUpABg3ADggACAFKQAQNwAwIAAgBSkACDcAKCAAIAUpAAA3ACAg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");var HEAP8,HEAP16,HEAP32,HEAPU8,HEAPU16,HEAPU32,HEAPF32,HEAPF64,wasmMemory,buffer,wasmTable;function updateGlobalBufferAndViews(b){buffer=b;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAP32=new Int32Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b)}var ASM_CONSTS={40036:()=>{return Module.getRandomValue()},40072:()=>{if(Module.getRandomValue===undefined){try{var window_="object"===typeof window?window:self;var crypto_=typeof window_.crypto!=="undefined"?window_.crypto:window_.msCrypto;var randomValuesStandard=function(){var buf=new Uint32Array(1);crypto_.getRandomValues(buf);return buf[0]>>>0};randomValuesStandard();Module.getRandomValue=randomValuesStandard}catch(e){try{var crypto=require("crypto");var randomValueNodeJS=function(){var buf=crypto["randomBytes"](4);return(buf[0]<<24|buf[1]<<16|buf[2]<<8|buf[3])>>>0};randomValueNodeJS();Module.getRandomValue=randomValueNodeJS}catch(e){throw"No secure random number generator found"}}}}};function _abort(){abort("")}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var asmLibraryArg={"b":_abort,"a":_emscripten_asm_const_int,"c":_emscripten_resize_heap};function initRuntime(asm){asm["e"]()}var imports={"a":asmLibraryArg};var _ecc_memzero,_ecc_randombytes,_ecc_bin2hex,_ecc_hex2bin,_ecc_concat2,_ecc_concat3,_ecc_concat4,_ecc_strxor,_ecc_I2OSP,_ecc_compare,_ecc_is_zero,_ecc_malloc,_ecc_free,_ecc_hash_sha256,_ecc_hash_sha512,_ecc_mac_hmac_sha256,_ecc_mac_hmac_sha512,_ecc_kdf_hkdf_sha256_extract,_ecc_kdf_hkdf_sha256_expand,_ecc_kdf_hkdf_sha512_extract,_ecc_kdf_hkdf_sha512_expand,_ecc_kdf_scrypt,_ecc_ed25519_is_valid_point,_ecc_ed25519_add,_ecc_ed25519_sub,_ecc_ed25519_generator,_ecc_ed25519_scalarmult_base,_ecc_ed25519_from_uniform,_ecc_ed25519_random,_ecc_ed25519_scalar_random,_ecc_ed25519_scalar_invert,_ecc_ed25519_scalar_negate,_ecc_ed25519_scalar_complement,_ecc_ed25519_scalar_add,_ecc_ed25519_scalar_sub,_ecc_ed25519_scalar_mul,_ecc_ed25519_scalar_reduce,_ecc_ed25519_scalarmult,_ecc_ristretto255_is_valid_point,_ecc_ristretto255_add,_ecc_ristretto255_sub,_ecc_ristretto255_generator,_ecc_ristretto255_scalarmult_base,_ecc_ristretto255_from_hash,_ecc_ristretto255_random,_ecc_ristretto255_scalar_random,_ecc_ristretto255_scalar_invert,_ecc_ristretto255_scalar_negate,_ecc_ristretto255_scalar_complement,_ecc_ristretto255_scalar_add,_ecc_ristretto255_scalar_sub,_ecc_ristretto255_scalar_mul,_ecc_ristretto255_scalar_reduce,_ecc_ristretto255_scalarmult,_ecc_bls12_381_fp_random,_ecc_bls12_381_fp12_one,_ecc_bls12_381_fp12_is_one,_ecc_bls12_381_fp12_inverse,_ecc_bls12_381_fp12_sqr,_ecc_bls12_381_fp12_mul,_ecc_bls12_381_fp12_pow,_ecc_bls12_381_fp12_random,_ecc_bls12_381_g1_add,_ecc_bls12_381_g1_negate,_ecc_bls12_381_g1_generator,_ecc_bls12_381_g1_scalarmult,_ecc_bls12_381_g1_scalarmult_base,_ecc_bls12_381_g2_add,_ecc_bls12_381_g2_negate,_ecc_bls12_381_g2_generator,_ecc_bls12_381_g2_scalarmult_base,_ecc_bls12_381_scalar_random,_ecc_bls12_381_pairing,_ecc_bls12_381_pairing_miller_loop,_ecc_bls12_381_pairing_final_exp,_ecc_bls12_381_pairing_final_verify,_ecc_h2c_expand_message_xmd_sha256,_ecc_h2c_expand_message_xmd_sha512,_ecc_voprf_ristretto255_sha512_GenerateProofWithScalar,_ecc_voprf_ristretto255_sha512_ComputeCompositesFast,_ecc_voprf_ristretto255_sha512_HashToScalar,_ecc_voprf_ristretto255_sha512_HashToScalarWithDST,_ecc_voprf_ristretto255_sha512_GenerateProof,_ecc_voprf_ristretto255_sha512_VerifyProof,_ecc_voprf_ristretto255_sha512_ComputeComposites,_ecc_voprf_ristretto255_sha512_GenerateKeyPair,_ecc_voprf_ristretto255_sha512_DeriveKeyPair,_ecc_voprf_ristretto255_sha512_BlindWithScalar,_ecc_voprf_ristretto255_sha512_HashToGroup,_ecc_voprf_ristretto255_sha512_HashToGroupWithDST,_ecc_voprf_ristretto255_sha512_Blind,_ecc_voprf_ristretto255_sha512_BlindEvaluate,_ecc_voprf_ristretto255_sha512_Finalize,_ecc_voprf_ristretto255_sha512_Evaluate,_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateWithScalar,_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate,_ecc_voprf_ristretto255_sha512_VerifiableFinalize,_ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar,_ecc_voprf_ristretto255_sha512_PartiallyBlind,_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar,_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate,_ecc_voprf_ristretto255_sha512_PartiallyFinalize,_ecc_voprf_ristretto255_sha512_PartiallyEvaluate,_ecc_opaque_ristretto255_sha512_DeriveKeyPair,_ecc_opaque_ristretto255_sha512_CreateCleartextCredentials,_ecc_opaque_ristretto255_sha512_EnvelopeStoreWithNonce,_ecc_opaque_ristretto255_sha512_DeriveAuthKeyPair,_ecc_opaque_ristretto255_sha512_EnvelopeStore,_ecc_opaque_ristretto255_sha512_EnvelopeRecover,_ecc_opaque_ristretto255_sha512_RecoverPublicKey,_ecc_opaque_ristretto255_sha512_GenerateAuthKeyPair,_ecc_opaque_ristretto255_sha512_CreateRegistrationRequestWithBlind,_ecc_opaque_ristretto255_sha512_CreateRegistrationRequest,_ecc_opaque_ristretto255_sha512_CreateRegistrationResponse,_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequestWithNonce,_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequest,_ecc_opaque_ristretto255_sha512_CreateCredentialRequestWithBlind,_ecc_opaque_ristretto255_sha512_CreateCredentialRequest,_ecc_opaque_ristretto255_sha512_CreateCredentialResponseWithMasking,_ecc_opaque_ristretto255_sha512_CreateCredentialResponse,_ecc_opaque_ristretto255_sha512_RecoverCredentials,_ecc_opaque_ristretto255_sha512_3DH_Expand_Label,_ecc_opaque_ristretto255_sha512_3DH_Derive_Secret,_ecc_opaque_ristretto255_sha512_3DH_Preamble,_ecc_opaque_ristretto255_sha512_3DH_TripleDHIKM,_ecc_opaque_ristretto255_sha512_3DH_DeriveKeys,_ecc_opaque_ristretto255_sha512_ClientInitWithSecrets,_ecc_opaque_ristretto255_sha512_3DH_StartWithSecrets,_ecc_opaque_ristretto255_sha512_ClientInit,_ecc_opaque_ristretto255_sha512_3DH_Start,_ecc_opaque_ristretto255_sha512_ClientFinish,_ecc_opaque_ristretto255_sha512_3DH_ClientFinalize,_ecc_opaque_ristretto255_sha512_ServerInitWithSecrets,_ecc_opaque_ristretto255_sha512_3DH_ResponseWithSecrets,_ecc_opaque_ristretto255_sha512_ServerInit,_ecc_opaque_ristretto255_sha512_3DH_Response,_ecc_opaque_ristretto255_sha512_ServerFinish,_ecc_sign_ed25519_Sign,_ecc_sign_ed25519_Verify,_ecc_sign_ed25519_KeyPair,_ecc_sign_ed25519_SeedKeyPair,_ecc_sign_ed25519_SkToSeed,_ecc_sign_ed25519_SkToPk,_ecc_sign_eth_bls_KeyGen,_ecc_sign_eth_bls_SkToPk,_ecc_sign_eth_bls_KeyValidate,_ecc_sign_eth_bls_Sign,_ecc_sign_eth_bls_Verify,_ecc_sign_eth_bls_Aggregate,_ecc_sign_eth_bls_FastAggregateVerify,_ecc_sign_eth_bls_AggregateVerify,_ecc_frost_ristretto255_sha512_nonce_generate_with_randomness,_ecc_frost_ristretto255_sha512_H3_2,_ecc_frost_ristretto255_sha512_nonce_generate,_ecc_frost_ristretto255_sha512_derive_interpolating_value,_ecc_frost_ristretto255_sha512_derive_interpolating_value_with_points,_ecc_frost_ristretto255_sha512_encode_group_commitment_list,_ecc_frost_ristretto255_sha512_participants_from_commitment_list,_ecc_frost_ristretto255_sha512_binding_factor_for_participant,_ecc_frost_ristretto255_sha512_compute_binding_factors,_ecc_frost_ristretto255_sha512_H4,_ecc_frost_ristretto255_sha512_H5,_ecc_frost_ristretto255_sha512_H1,_ecc_frost_ristretto255_sha512_compute_group_commitment,_ecc_frost_ristretto255_sha512_compute_challenge,_ecc_frost_ristretto255_sha512_H2_3,_ecc_frost_ristretto255_sha512_commit_with_randomness,_ecc_frost_ristretto255_sha512_commit,_ecc_frost_ristretto255_sha512_sign,_ecc_frost_ristretto255_sha512_aggregate,_ecc_frost_ristretto255_sha512_verify_signature_share,_ecc_frost_ristretto255_sha512_H1_2,_ecc_frost_ristretto255_sha512_H2,_ecc_frost_ristretto255_sha512_H3,_ecc_frost_ristretto255_sha512_prime_order_sign,_ecc_frost_ristretto255_sha512_prime_order_verify,_ecc_frost_ristretto255_sha512_trusted_dealer_keygen_with_coefficients,_ecc_frost_ristretto255_sha512_secret_share_shard,_ecc_frost_ristretto255_sha512_vss_commit,_ecc_frost_ristretto255_sha512_polynomial_evaluate,_ecc_frost_ristretto255_sha512_secret_share_combine,_ecc_frost_ristretto255_sha512_polynomial_interpolate_constant,_ecc_frost_ristretto255_sha512_vss_verify,_ecc_frost_ristretto255_sha512_derive_group_info,_ecc_pre_schema1_MessageGen,_ecc_pre_schema1_DeriveKey,_ecc_pre_schema1_KeyGen,_ecc_pre_schema1_DeriveSigningKey,_ecc_pre_schema1_SigningKeyGen,_ecc_pre_schema1_EncryptWithSeed,_ecc_pre_schema1_Encrypt,_ecc_pre_schema1_ReKeyGen,_ecc_pre_schema1_ReEncrypt,_ecc_pre_schema1_DecryptLevel1,_ecc_pre_schema1_DecryptLevel2;WebAssembly.instantiate(Module["wasm"],imports).then(function(output){var asm=output.instance.exports;_ecc_memzero=asm["f"];_ecc_randombytes=asm["g"];_ecc_bin2hex=asm["h"];_ecc_hex2bin=asm["i"];_ecc_concat2=asm["j"];_ecc_concat3=asm["k"];_ecc_concat4=asm["l"];_ecc_strxor=asm["m"];_ecc_I2OSP=asm["n"];_ecc_compare=asm["o"];_ecc_is_zero=asm["p"];_ecc_malloc=asm["q"];_ecc_free=asm["r"];_ecc_hash_sha256=asm["t"];_ecc_hash_sha512=asm["u"];_ecc_mac_hmac_sha256=asm["v"];_ecc_mac_hmac_sha512=asm["w"];_ecc_kdf_hkdf_sha256_extract=asm["x"];_ecc_kdf_hkdf_sha256_expand=asm["y"];_ecc_kdf_hkdf_sha512_extract=asm["z"];_ecc_kdf_hkdf_sha512_expand=asm["A"];_ecc_kdf_scrypt=asm["B"];_ecc_ed25519_is_valid_point=asm["C"];_ecc_ed25519_add=asm["D"];_ecc_ed25519_sub=asm["E"];_ecc_ed25519_generator=asm["F"];_ecc_ed25519_scalarmult_base=asm["G"];_ecc_ed25519_from_uniform=asm["H"];_ecc_ed25519_random=asm["I"];_ecc_ed25519_scalar_random=asm["J"];_ecc_ed25519_scalar_invert=asm["K"];_ecc_ed25519_scalar_negate=asm["L"];_ecc_ed25519_scalar_complement=asm["M"];_ecc_ed25519_scalar_add=asm["N"];_ecc_ed25519_scalar_sub=asm["O"];_ecc_ed25519_scalar_mul=asm["P"];_ecc_ed25519_scalar_reduce=asm["Q"];_ecc_ed25519_scalarmult=asm["R"];_ecc_ristretto255_is_valid_point=asm["S"];_ecc_ristretto255_add=asm["T"];_ecc_ristretto255_sub=asm["U"];_ecc_ristretto255_generator=asm["V"];_ecc_ristretto255_scalarmult_base=asm["W"];_ecc_ristretto255_from_hash=asm["X"];_ecc_ristretto255_random=asm["Y"];_ecc_ristretto255_scalar_random=asm["Z"];_ecc_ristretto255_scalar_invert=asm["_"];_ecc_ristretto255_scalar_negate=asm["$"];_ecc_ristretto255_scalar_complement=asm["aa"];_ecc_ristretto255_scalar_add=asm["ba"];_ecc_ristretto255_scalar_sub=asm["ca"];_ecc_ristretto255_scalar_mul=asm["da"];_ecc_ristretto255_scalar_reduce=asm["ea"];_ecc_ristretto255_scalarmult=asm["fa"];_ecc_bls12_381_fp_random=asm["ga"];_ecc_bls12_381_fp12_one=asm["ha"];_ecc_bls12_381_fp12_is_one=asm["ia"];_ecc_bls12_381_fp12_inverse=asm["ja"];_ecc_bls12_381_fp12_sqr=asm["ka"];_ecc_bls12_381_fp12_mul=asm["la"];_ecc_bls12_381_fp12_pow=asm["ma"];_ecc_bls12_381_fp12_random=asm["na"];_ecc_bls12_381_g1_add=asm["oa"];_ecc_bls12_381_g1_negate=asm["pa"];_ecc_bls12_381_g1_generator=asm["qa"];_ecc_bls12_381_g1_scalarmult=asm["ra"];_ecc_bls12_381_g1_scalarmult_base=asm["sa"];_ecc_bls12_381_g2_add=asm["ta"];_ecc_bls12_381_g2_negate=asm["ua"];_ecc_bls12_381_g2_generator=asm["va"];_ecc_bls12_381_g2_scalarmult_base=asm["wa"];_ecc_bls12_381_scalar_random=asm["xa"];_ecc_bls12_381_pairing=asm["ya"];_ecc_bls12_381_pairing_miller_loop=asm["za"];_ecc_bls12_381_pairing_final_exp=asm["Aa"];_ecc_bls12_381_pairing_final_verify=asm["Ba"];_ecc_h2c_expand_message_xmd_sha256=asm["Ca"];_ecc_h2c_expand_message_xmd_sha512=asm["Da"];_ecc_voprf_ristretto255_sha512_GenerateProofWithScalar=asm["Ea"];_ecc_voprf_ristretto255_sha512_ComputeCompositesFast=asm["Fa"];_ecc_voprf_ristretto255_sha512_HashToScalar=asm["Ga"];_ecc_voprf_ristretto255_sha512_HashToScalarWithDST=asm["Ha"];_ecc_voprf_ristretto255_sha512_GenerateProof=asm["Ia"];_ecc_voprf_ristretto255_sha512_VerifyProof=asm["Ja"];_ecc_voprf_ristretto255_sha512_ComputeComposites=asm["Ka"];_ecc_voprf_ristretto255_sha512_GenerateKeyPair=asm["La"];_ecc_voprf_ristretto255_sha512_DeriveKeyPair=asm["Ma"];_ecc_voprf_ristretto255_sha512_BlindWithScalar=asm["Na"];_ecc_voprf_ristretto255_sha512_HashToGroup=asm["Oa"];_ecc_voprf_ristretto255_sha512_HashToGroupWithDST=asm["Pa"];_ecc_voprf_ristretto255_sha512_Blind=asm["Qa"];_ecc_voprf_ristretto255_sha512_BlindEvaluate=asm["Ra"];_ecc_voprf_ristretto255_sha512_Finalize=asm["Sa"];_ecc_voprf_ristretto255_sha512_Evaluate=asm["Ta"];_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateWithScalar=asm["Ua"];_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate=asm["Va"];_ecc_voprf_ristretto255_sha512_VerifiableFinalize=asm["Wa"];_ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar=asm["Xa"];_ecc_voprf_ristretto255_sha512_PartiallyBlind=asm["Ya"];_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar=asm["Za"];_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate=asm["_a"];_ecc_voprf_ristretto255_sha512_PartiallyFinalize=asm["$a"];_ecc_voprf_ristretto255_sha512_PartiallyEvaluate=asm["ab"];_ecc_opaque_ristretto255_sha512_DeriveKeyPair=asm["bb"];_ecc_opaque_ristretto255_sha512_CreateCleartextCredentials=asm["cb"];_ecc_opaque_ristretto255_sha512_EnvelopeStoreWithNonce=asm["db"];_ecc_opaque_ristretto255_sha512_DeriveAuthKeyPair=asm["eb"];_ecc_opaque_ristretto255_sha512_EnvelopeStore=asm["fb"];_ecc_opaque_ristretto255_sha512_EnvelopeRecover=asm["gb"];_ecc_opaque_ristretto255_sha512_RecoverPublicKey=asm["hb"];_ecc_opaque_ristretto255_sha512_GenerateAuthKeyPair=asm["ib"];_ecc_opaque_ristretto255_sha512_CreateRegistrationRequestWithBlind=asm["jb"];_ecc_opaque_ristretto255_sha512_CreateRegistrationRequest=asm["kb"];_ecc_opaque_ristretto255_sha512_CreateRegistrationResponse=asm["lb"];_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequestWithNonce=asm["mb"];_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequest=asm["nb"];_ecc_opaque_ristretto255_sha512_CreateCredentialRequestWithBlind=asm["ob"];_ecc_opaque_ristretto255_sha512_CreateCredentialRequest=asm["pb"];_ecc_opaque_ristretto255_sha512_CreateCredentialResponseWithMasking=asm["qb"];_ecc_opaque_ristretto255_sha512_CreateCredentialResponse=asm["rb"];_ecc_opaque_ristretto255_sha512_RecoverCredentials=asm["sb"];_ecc_opaque_ristretto255_sha512_3DH_Expand_Label=asm["tb"];_ecc_opaque_ristretto255_sha512_3DH_Derive_Secret=asm["ub"];_ecc_opaque_ristretto255_sha512_3DH_Preamble=asm["vb"];_ecc_opaque_ristretto255_sha512_3DH_TripleDHIKM=asm["wb"];_ecc_opaque_ristretto255_sha512_3DH_DeriveKeys=asm["xb"];_ecc_opaque_ristretto255_sha512_ClientInitWithSecrets=asm["yb"];_ecc_opaque_ristretto255_sha512_3DH_StartWithSecrets=asm["zb"];_ecc_opaque_ristretto255_sha512_ClientInit=asm["Ab"];_ecc_opaque_ristretto255_sha512_3DH_Start=asm["Bb"];_ecc_opaque_ristretto255_sha512_ClientFinish=asm["Cb"];_ecc_opaque_ristretto255_sha512_3DH_ClientFinalize=asm["Db"];_ecc_opaque_ristretto255_sha512_ServerInitWithSecrets=asm["Eb"];_ecc_opaque_ristretto255_sha512_3DH_ResponseWithSecrets=asm["Fb"];_ecc_opaque_ristretto255_sha512_ServerInit=asm["Gb"];_ecc_opaque_ristretto255_sha512_3DH_Response=asm["Hb"];_ecc_opaque_ristretto255_sha512_ServerFinish=asm["Ib"];_ecc_sign_ed25519_Sign=asm["Jb"];_ecc_sign_ed25519_Verify=asm["Kb"];_ecc_sign_ed25519_KeyPair=asm["Lb"];_ecc_sign_ed25519_SeedKeyPair=asm["Mb"];_ecc_sign_ed25519_SkToSeed=asm["Nb"];_ecc_sign_ed25519_SkToPk=asm["Ob"];_ecc_sign_eth_bls_KeyGen=asm["Pb"];_ecc_sign_eth_bls_SkToPk=asm["Qb"];_ecc_sign_eth_bls_KeyValidate=asm["Rb"];_ecc_sign_eth_bls_Sign=asm["Sb"];_ecc_sign_eth_bls_Verify=asm["Tb"];_ecc_sign_eth_bls_Aggregate=asm["Ub"];_ecc_sign_eth_bls_FastAggregateVerify=asm["Vb"];_ecc_sign_eth_bls_AggregateVerify=asm["Wb"];_ecc_frost_ristretto255_sha512_nonce_generate_with_randomness=asm["Xb"];_ecc_frost_ristretto255_sha512_H3_2=asm["Yb"];_ecc_frost_ristretto255_sha512_nonce_generate=asm["Zb"];_ecc_frost_ristretto255_sha512_derive_interpolating_value=asm["_b"];_ecc_frost_ristretto255_sha512_derive_interpolating_value_with_points=asm["$b"];_ecc_frost_ristretto255_sha512_encode_group_commitment_list=asm["ac"];_ecc_frost_ristretto255_sha512_participants_from_commitment_list=asm["bc"];_ecc_frost_ristretto255_sha512_binding_factor_for_participant=asm["cc"];_ecc_frost_ristretto255_sha512_compute_binding_factors=asm["dc"];_ecc_frost_ristretto255_sha512_H4=asm["ec"];_ecc_frost_ristretto255_sha512_H5=asm["fc"];_ecc_frost_ristretto255_sha512_H1=asm["gc"];_ecc_frost_ristretto255_sha512_compute_group_commitment=asm["hc"];_ecc_frost_ristretto255_sha512_compute_challenge=asm["ic"];_ecc_frost_ristretto255_sha512_H2_3=asm["jc"];_ecc_frost_ristretto255_sha512_commit_with_randomness=asm["kc"];_ecc_frost_ristretto255_sha512_commit=asm["lc"];_ecc_frost_ristretto255_sha512_sign=asm["mc"];_ecc_frost_ristretto255_sha512_aggregate=asm["nc"];_ecc_frost_ristretto255_sha512_verify_signature_share=asm["oc"];_ecc_frost_ristretto255_sha512_H1_2=asm["pc"];_ecc_frost_ristretto255_sha512_H2=asm["qc"];_ecc_frost_ristretto255_sha512_H3=asm["rc"];_ecc_frost_ristretto255_sha512_prime_order_sign=asm["sc"];_ecc_frost_ristretto255_sha512_prime_order_verify=asm["tc"];_ecc_frost_ristretto255_sha512_trusted_dealer_keygen_with_coefficients=asm["uc"];_ecc_frost_ristretto255_sha512_secret_share_shard=asm["vc"];_ecc_frost_ristretto255_sha512_vss_commit=asm["wc"];_ecc_frost_ristretto255_sha512_polynomial_evaluate=asm["xc"];_ecc_frost_ristretto255_sha512_secret_share_combine=asm["yc"];_ecc_frost_ristretto255_sha512_polynomial_interpolate_constant=asm["zc"];_ecc_frost_ristretto255_sha512_vss_verify=asm["Ac"];_ecc_frost_ristretto255_sha512_derive_group_info=asm["Bc"];_ecc_pre_schema1_MessageGen=asm["Cc"];_ecc_pre_schema1_DeriveKey=asm["Dc"];_ecc_pre_schema1_KeyGen=asm["Ec"];_ecc_pre_schema1_DeriveSigningKey=asm["Fc"];_ecc_pre_schema1_SigningKeyGen=asm["Gc"];_ecc_pre_schema1_EncryptWithSeed=asm["Hc"];_ecc_pre_schema1_Encrypt=asm["Ic"];_ecc_pre_schema1_ReKeyGen=asm["Jc"];_ecc_pre_schema1_ReEncrypt=asm["Kc"];_ecc_pre_schema1_DecryptLevel1=asm["Lc"];_ecc_pre_schema1_DecryptLevel2=asm["Mc"];wasmTable=asm["s"];wasmMemory=asm["d"];updateGlobalBufferAndViews(wasmMemory.buffer);initRuntime(asm);ready()});function arraycopy(src,srcPos,dest,destPos,length){dest.set(src.subarray(srcPos,srcPos+length),destPos)}function mput(src,size){if(!src)return 0;const pos=_ecc_malloc(size);arraycopy(src,0,HEAPU8,pos,size);return pos}function mget(dest,pos,size){arraycopy(HEAPU8,pos,dest,0,size)}function mfree(ptr,size){_ecc_free(ptr,size)}Module.ecc_randombytes=(buf,n)=>{const ptr_buf=mput(buf,n);_ecc_randombytes(ptr_buf,n);mget(buf,ptr_buf,n);mfree(ptr_buf,n)};Module.ecc_concat2=(out,a1,a1_len,a2,a2_len)=>{const ptr_out=mput(out,a1_len+a2_len);const ptr_a1=mput(a1,a1_len);const ptr_a2=mput(a2,a2_len);_ecc_concat2(ptr_out,ptr_a1,a1_len,ptr_a2,a2_len);mget(out,ptr_out,a1_len+a2_len);mfree(ptr_out,a1_len+a2_len);mfree(ptr_a1,a1_len);mfree(ptr_a2,a2_len)};Module.ecc_concat3=(out,a1,a1_len,a2,a2_len,a3,a3_len)=>{const ptr_out=mput(out,a1_len+a2_len+a3_len);const ptr_a1=mput(a1,a1_len);const ptr_a2=mput(a2,a2_len);const ptr_a3=mput(a3,a3_len);_ecc_concat3(ptr_out,ptr_a1,a1_len,ptr_a2,a2_len,ptr_a3,a3_len);mget(out,ptr_out,a1_len+a2_len+a3_len);mfree(ptr_out,a1_len+a2_len+a3_len);mfree(ptr_a1,a1_len);mfree(ptr_a2,a2_len);mfree(ptr_a3,a3_len)};Module.ecc_concat4=(out,a1,a1_len,a2,a2_len,a3,a3_len,a4,a4_len)=>{const ptr_out=mput(out,a1_len+a2_len+a3_len+a4_len);const ptr_a1=mput(a1,a1_len);const ptr_a2=mput(a2,a2_len);const ptr_a3=mput(a3,a3_len);const ptr_a4=mput(a4,a4_len);_ecc_concat4(ptr_out,ptr_a1,a1_len,ptr_a2,a2_len,ptr_a3,a3_len,ptr_a4,a4_len);mget(out,ptr_out,a1_len+a2_len+a3_len+a4_len);mfree(ptr_out,a1_len+a2_len+a3_len+a4_len);mfree(ptr_a1,a1_len);mfree(ptr_a2,a2_len);mfree(ptr_a3,a3_len);mfree(ptr_a4,a4_len)};Module.ecc_strxor=(out,a,b,len)=>{const ptr_out=mput(out,len);const ptr_a=mput(a,len);const ptr_b=mput(b,len);_ecc_strxor(ptr_out,ptr_a,ptr_b,len);mget(out,ptr_out,len);mfree(ptr_out,len);mfree(ptr_a,len);mfree(ptr_b,len)};Module.ecc_I2OSP=(out,x,xLen)=>{const ptr_out=mput(out,xLen);_ecc_I2OSP(ptr_out,x,xLen);mget(out,ptr_out,xLen);mfree(ptr_out,xLen)};Module.ecc_compare=(a,b,len)=>{const ptr_a=mput(a,len);const ptr_b=mput(b,len);const fun_ret=_ecc_compare(ptr_a,ptr_b,len);mfree(ptr_a,len);mfree(ptr_b,len);return fun_ret};Module.ecc_is_zero=(n,len)=>{const ptr_n=mput(n,len);const fun_ret=_ecc_is_zero(ptr_n,len);mfree(ptr_n,len);return fun_ret};const ecc_hash_sha256_HASHSIZE=32;Module.ecc_hash_sha256_HASHSIZE=ecc_hash_sha256_HASHSIZE;const ecc_hash_sha512_HASHSIZE=64;Module.ecc_hash_sha512_HASHSIZE=ecc_hash_sha512_HASHSIZE;Module.ecc_hash_sha256=(digest,input,input_len)=>{const ptr_digest=mput(digest,ecc_hash_sha256_HASHSIZE);const ptr_input=mput(input,input_len);_ecc_hash_sha256(ptr_digest,ptr_input,input_len);mget(digest,ptr_digest,ecc_hash_sha256_HASHSIZE);mfree(ptr_digest,ecc_hash_sha256_HASHSIZE);mfree(ptr_input,input_len)};Module.ecc_hash_sha512=(digest,input,input_len)=>{const ptr_digest=mput(digest,ecc_hash_sha512_HASHSIZE);const ptr_input=mput(input,input_len);_ecc_hash_sha512(ptr_digest,ptr_input,input_len);mget(digest,ptr_digest,ecc_hash_sha512_HASHSIZE);mfree(ptr_digest,ecc_hash_sha512_HASHSIZE);mfree(ptr_input,input_len)};const ecc_mac_hmac_sha256_HASHSIZE=32;Module.ecc_mac_hmac_sha256_HASHSIZE=ecc_mac_hmac_sha256_HASHSIZE;const ecc_mac_hmac_sha512_HASHSIZE=64;Module.ecc_mac_hmac_sha512_HASHSIZE=ecc_mac_hmac_sha512_HASHSIZE;Module.ecc_mac_hmac_sha256=(digest,text,text_len,key,key_len)=>{const ptr_digest=mput(digest,ecc_mac_hmac_sha256_HASHSIZE);const ptr_text=mput(text,text_len);const ptr_key=mput(key,key_len);_ecc_mac_hmac_sha256(ptr_digest,ptr_text,text_len,ptr_key,key_len);mget(digest,ptr_digest,ecc_mac_hmac_sha256_HASHSIZE);mfree(ptr_digest,ecc_mac_hmac_sha256_HASHSIZE);mfree(ptr_text,text_len);mfree(ptr_key,key_len)};Module.ecc_mac_hmac_sha512=(digest,text,text_len,key,key_len)=>{const ptr_digest=mput(digest,ecc_mac_hmac_sha512_HASHSIZE);const ptr_text=mput(text,text_len);const ptr_key=mput(key,key_len);_ecc_mac_hmac_sha512(ptr_digest,ptr_text,text_len,ptr_key,key_len);mget(digest,ptr_digest,ecc_mac_hmac_sha512_HASHSIZE);mfree(ptr_digest,ecc_mac_hmac_sha512_HASHSIZE);mfree(ptr_text,text_len);mfree(ptr_key,key_len)};const ecc_kdf_hkdf_sha256_KEYSIZE=32;Module.ecc_kdf_hkdf_sha256_KEYSIZE=ecc_kdf_hkdf_sha256_KEYSIZE;const ecc_kdf_hkdf_sha512_KEYSIZE=64;Module.ecc_kdf_hkdf_sha512_KEYSIZE=ecc_kdf_hkdf_sha512_KEYSIZE;Module.ecc_kdf_hkdf_sha256_extract=(prk,salt,salt_len,ikm,ikm_len)=>{const ptr_prk=mput(prk,ecc_kdf_hkdf_sha256_KEYSIZE);const ptr_salt=mput(salt,salt_len);const ptr_ikm=mput(ikm,ikm_len);_ecc_kdf_hkdf_sha256_extract(ptr_prk,ptr_salt,salt_len,ptr_ikm,ikm_len);mget(prk,ptr_prk,ecc_kdf_hkdf_sha256_KEYSIZE);mfree(ptr_prk,ecc_kdf_hkdf_sha256_KEYSIZE);mfree(ptr_salt,salt_len);mfree(ptr_ikm,ikm_len)};Module.ecc_kdf_hkdf_sha256_expand=(okm,prk,info,info_len,len)=>{const ptr_okm=mput(okm,len);const ptr_prk=mput(prk,ecc_kdf_hkdf_sha256_KEYSIZE);const ptr_info=mput(info,info_len);_ecc_kdf_hkdf_sha256_expand(ptr_okm,ptr_prk,ptr_info,info_len,len);mget(okm,ptr_okm,len);mfree(ptr_okm,len);mfree(ptr_prk,ecc_kdf_hkdf_sha256_KEYSIZE);mfree(ptr_info,info_len)};Module.ecc_kdf_hkdf_sha512_extract=(prk,salt,salt_len,ikm,ikm_len)=>{const ptr_prk=mput(prk,ecc_kdf_hkdf_sha512_KEYSIZE);const ptr_salt=mput(salt,salt_len);const ptr_ikm=mput(ikm,ikm_len);_ecc_kdf_hkdf_sha512_extract(ptr_prk,ptr_salt,salt_len,ptr_ikm,ikm_len);mget(prk,ptr_prk,ecc_kdf_hkdf_sha512_KEYSIZE);mfree(ptr_prk,ecc_kdf_hkdf_sha512_KEYSIZE);mfree(ptr_salt,salt_len);mfree(ptr_ikm,ikm_len)};Module.ecc_kdf_hkdf_sha512_expand=(okm,prk,info,info_len,len)=>{const ptr_okm=mput(okm,len);const ptr_prk=mput(prk,ecc_kdf_hkdf_sha512_KEYSIZE);const ptr_info=mput(info,info_len);_ecc_kdf_hkdf_sha512_expand(ptr_okm,ptr_prk,ptr_info,info_len,len);mget(okm,ptr_okm,len);mfree(ptr_okm,len);mfree(ptr_prk,ecc_kdf_hkdf_sha512_KEYSIZE);mfree(ptr_info,info_len)};Module.ecc_kdf_scrypt=(out,passphrase,passphrase_len,salt,salt_len,cost,block_size,parallelization,len)=>{const ptr_out=mput(out,len);const ptr_passphrase=mput(passphrase,passphrase_len);const ptr_salt=mput(salt,salt_len);const fun_ret=_ecc_kdf_scrypt(ptr_out,ptr_passphrase,passphrase_len,ptr_salt,salt_len,cost,block_size,parallelization,len);mget(out,ptr_out,len);mfree(ptr_out,len);mfree(ptr_passphrase,passphrase_len);mfree(ptr_salt,salt_len);return fun_ret};const ecc_ed25519_ELEMENTSIZE=32;Module.ecc_ed25519_ELEMENTSIZE=ecc_ed25519_ELEMENTSIZE;const ecc_ed25519_UNIFORMSIZE=32;Module.ecc_ed25519_UNIFORMSIZE=ecc_ed25519_UNIFORMSIZE;const ecc_ed25519_SCALARSIZE=32;Module.ecc_ed25519_SCALARSIZE=ecc_ed25519_SCALARSIZE;const ecc_ed25519_NONREDUCEDSCALARSIZE=64;Module.ecc_ed25519_NONREDUCEDSCALARSIZE=ecc_ed25519_NONREDUCEDSCALARSIZE;Module.ecc_ed25519_is_valid_point=p=>{const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);const fun_ret=_ecc_ed25519_is_valid_point(ptr_p);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE);return fun_ret};Module.ecc_ed25519_add=(r,p,q)=>{const ptr_r=mput(r,ecc_ed25519_ELEMENTSIZE);const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);const ptr_q=mput(q,ecc_ed25519_ELEMENTSIZE);const fun_ret=_ecc_ed25519_add(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_ed25519_ELEMENTSIZE);mfree(ptr_r,ecc_ed25519_ELEMENTSIZE);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE);mfree(ptr_q,ecc_ed25519_ELEMENTSIZE);return fun_ret};Module.ecc_ed25519_sub=(r,p,q)=>{const ptr_r=mput(r,ecc_ed25519_ELEMENTSIZE);const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);const ptr_q=mput(q,ecc_ed25519_ELEMENTSIZE);const fun_ret=_ecc_ed25519_sub(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_ed25519_ELEMENTSIZE);mfree(ptr_r,ecc_ed25519_ELEMENTSIZE);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE);mfree(ptr_q,ecc_ed25519_ELEMENTSIZE);return fun_ret};Module.ecc_ed25519_generator=g=>{const ptr_g=mput(g,ecc_ed25519_ELEMENTSIZE);_ecc_ed25519_generator(ptr_g);mget(g,ptr_g,ecc_ed25519_ELEMENTSIZE);mfree(ptr_g,ecc_ed25519_ELEMENTSIZE)};Module.ecc_ed25519_from_uniform=(p,r)=>{const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);const ptr_r=mput(r,ecc_ed25519_UNIFORMSIZE);_ecc_ed25519_from_uniform(ptr_p,ptr_r);mget(p,ptr_p,ecc_ed25519_ELEMENTSIZE);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE);mfree(ptr_r,ecc_ed25519_UNIFORMSIZE)};Module.ecc_ed25519_random=p=>{const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);_ecc_ed25519_random(ptr_p);mget(p,ptr_p,ecc_ed25519_ELEMENTSIZE);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE)};Module.ecc_ed25519_scalar_random=r=>{const ptr_r=mput(r,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_random(ptr_r);mget(r,ptr_r,ecc_ed25519_SCALARSIZE);mfree(ptr_r,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_invert=(recip,s)=>{const ptr_recip=mput(recip,ecc_ed25519_SCALARSIZE);const ptr_s=mput(s,ecc_ed25519_SCALARSIZE);const fun_ret=_ecc_ed25519_scalar_invert(ptr_recip,ptr_s);mget(recip,ptr_recip,ecc_ed25519_SCALARSIZE);mfree(ptr_recip,ecc_ed25519_SCALARSIZE);mfree(ptr_s,ecc_ed25519_SCALARSIZE);return fun_ret};Module.ecc_ed25519_scalar_negate=(neg,s)=>{const ptr_neg=mput(neg,ecc_ed25519_SCALARSIZE);const ptr_s=mput(s,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_negate(ptr_neg,ptr_s);mget(neg,ptr_neg,ecc_ed25519_SCALARSIZE);mfree(ptr_neg,ecc_ed25519_SCALARSIZE);mfree(ptr_s,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_complement=(comp,s)=>{const ptr_comp=mput(comp,ecc_ed25519_SCALARSIZE);const ptr_s=mput(s,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_complement(ptr_comp,ptr_s);mget(comp,ptr_comp,ecc_ed25519_SCALARSIZE);mfree(ptr_comp,ecc_ed25519_SCALARSIZE);mfree(ptr_s,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_add=(z,x,y)=>{const ptr_z=mput(z,ecc_ed25519_SCALARSIZE);const ptr_x=mput(x,ecc_ed25519_SCALARSIZE);const ptr_y=mput(y,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_add(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_x,ecc_ed25519_SCALARSIZE);mfree(ptr_y,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_sub=(z,x,y)=>{const ptr_z=mput(z,ecc_ed25519_SCALARSIZE);const ptr_x=mput(x,ecc_ed25519_SCALARSIZE);const ptr_y=mput(y,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_sub(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_x,ecc_ed25519_SCALARSIZE);mfree(ptr_y,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_mul=(z,x,y)=>{const ptr_z=mput(z,ecc_ed25519_SCALARSIZE);const ptr_x=mput(x,ecc_ed25519_SCALARSIZE);const ptr_y=mput(y,ecc_ed25519_SCALARSIZE);_ecc_ed25519_scalar_mul(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_z,ecc_ed25519_SCALARSIZE);mfree(ptr_x,ecc_ed25519_SCALARSIZE);mfree(ptr_y,ecc_ed25519_SCALARSIZE)};Module.ecc_ed25519_scalar_reduce=(r,s)=>{const ptr_r=mput(r,ecc_ed25519_SCALARSIZE);const ptr_s=mput(s,ecc_ed25519_NONREDUCEDSCALARSIZE);_ecc_ed25519_scalar_reduce(ptr_r,ptr_s);mget(r,ptr_r,ecc_ed25519_SCALARSIZE);mfree(ptr_r,ecc_ed25519_SCALARSIZE);mfree(ptr_s,ecc_ed25519_NONREDUCEDSCALARSIZE)};Module.ecc_ed25519_scalarmult=(q,n,p)=>{const ptr_q=mput(q,ecc_ed25519_ELEMENTSIZE);const ptr_n=mput(n,ecc_ed25519_SCALARSIZE);const ptr_p=mput(p,ecc_ed25519_ELEMENTSIZE);const fun_ret=_ecc_ed25519_scalarmult(ptr_q,ptr_n,ptr_p);mget(q,ptr_q,ecc_ed25519_ELEMENTSIZE);mfree(ptr_q,ecc_ed25519_ELEMENTSIZE);mfree(ptr_n,ecc_ed25519_SCALARSIZE);mfree(ptr_p,ecc_ed25519_ELEMENTSIZE);return fun_ret};Module.ecc_ed25519_scalarmult_base=(q,n)=>{const ptr_q=mput(q,ecc_ed25519_ELEMENTSIZE);const ptr_n=mput(n,ecc_ed25519_SCALARSIZE);const fun_ret=_ecc_ed25519_scalarmult_base(ptr_q,ptr_n);mget(q,ptr_q,ecc_ed25519_ELEMENTSIZE);mfree(ptr_q,ecc_ed25519_ELEMENTSIZE);mfree(ptr_n,ecc_ed25519_SCALARSIZE);return fun_ret};const ecc_ristretto255_ELEMENTSIZE=32;Module.ecc_ristretto255_ELEMENTSIZE=ecc_ristretto255_ELEMENTSIZE;const ecc_ristretto255_HASHSIZE=64;Module.ecc_ristretto255_HASHSIZE=ecc_ristretto255_HASHSIZE;const ecc_ristretto255_SCALARSIZE=32;Module.ecc_ristretto255_SCALARSIZE=ecc_ristretto255_SCALARSIZE;const ecc_ristretto255_NONREDUCEDSCALARSIZE=64;Module.ecc_ristretto255_NONREDUCEDSCALARSIZE=ecc_ristretto255_NONREDUCEDSCALARSIZE;Module.ecc_ristretto255_is_valid_point=p=>{const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);const fun_ret=_ecc_ristretto255_is_valid_point(ptr_p);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE);return fun_ret};Module.ecc_ristretto255_add=(r,p,q)=>{const ptr_r=mput(r,ecc_ristretto255_ELEMENTSIZE);const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);const ptr_q=mput(q,ecc_ristretto255_ELEMENTSIZE);const fun_ret=_ecc_ristretto255_add(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_r,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_q,ecc_ristretto255_ELEMENTSIZE);return fun_ret};Module.ecc_ristretto255_sub=(r,p,q)=>{const ptr_r=mput(r,ecc_ristretto255_ELEMENTSIZE);const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);const ptr_q=mput(q,ecc_ristretto255_ELEMENTSIZE);const fun_ret=_ecc_ristretto255_sub(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_r,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_q,ecc_ristretto255_ELEMENTSIZE);return fun_ret};Module.ecc_ristretto255_generator=g=>{const ptr_g=mput(g,ecc_ristretto255_ELEMENTSIZE);_ecc_ristretto255_generator(ptr_g);mget(g,ptr_g,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_g,ecc_ristretto255_ELEMENTSIZE)};Module.ecc_ristretto255_from_hash=(p,r)=>{const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);const ptr_r=mput(r,ecc_ristretto255_HASHSIZE);_ecc_ristretto255_from_hash(ptr_p,ptr_r);mget(p,ptr_p,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_r,ecc_ristretto255_HASHSIZE)};Module.ecc_ristretto255_random=p=>{const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);_ecc_ristretto255_random(ptr_p);mget(p,ptr_p,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE)};Module.ecc_ristretto255_scalar_random=r=>{const ptr_r=mput(r,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_random(ptr_r);mget(r,ptr_r,ecc_ristretto255_SCALARSIZE);mfree(ptr_r,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_invert=(recip,s)=>{const ptr_recip=mput(recip,ecc_ristretto255_SCALARSIZE);const ptr_s=mput(s,ecc_ristretto255_SCALARSIZE);const fun_ret=_ecc_ristretto255_scalar_invert(ptr_recip,ptr_s);mget(recip,ptr_recip,ecc_ristretto255_SCALARSIZE);mfree(ptr_recip,ecc_ristretto255_SCALARSIZE);mfree(ptr_s,ecc_ristretto255_SCALARSIZE);return fun_ret};Module.ecc_ristretto255_scalar_negate=(neg,s)=>{const ptr_neg=mput(neg,ecc_ristretto255_SCALARSIZE);const ptr_s=mput(s,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_negate(ptr_neg,ptr_s);mget(neg,ptr_neg,ecc_ristretto255_SCALARSIZE);mfree(ptr_neg,ecc_ristretto255_SCALARSIZE);mfree(ptr_s,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_complement=(comp,s)=>{const ptr_comp=mput(comp,ecc_ristretto255_SCALARSIZE);const ptr_s=mput(s,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_complement(ptr_comp,ptr_s);mget(comp,ptr_comp,ecc_ristretto255_SCALARSIZE);mfree(ptr_comp,ecc_ristretto255_SCALARSIZE);mfree(ptr_s,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_add=(z,x,y)=>{const ptr_z=mput(z,ecc_ristretto255_SCALARSIZE);const ptr_x=mput(x,ecc_ristretto255_SCALARSIZE);const ptr_y=mput(y,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_add(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_x,ecc_ristretto255_SCALARSIZE);mfree(ptr_y,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_sub=(z,x,y)=>{const ptr_z=mput(z,ecc_ristretto255_SCALARSIZE);const ptr_x=mput(x,ecc_ristretto255_SCALARSIZE);const ptr_y=mput(y,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_sub(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_x,ecc_ristretto255_SCALARSIZE);mfree(ptr_y,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_mul=(z,x,y)=>{const ptr_z=mput(z,ecc_ristretto255_SCALARSIZE);const ptr_x=mput(x,ecc_ristretto255_SCALARSIZE);const ptr_y=mput(y,ecc_ristretto255_SCALARSIZE);_ecc_ristretto255_scalar_mul(ptr_z,ptr_x,ptr_y);mget(z,ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_z,ecc_ristretto255_SCALARSIZE);mfree(ptr_x,ecc_ristretto255_SCALARSIZE);mfree(ptr_y,ecc_ristretto255_SCALARSIZE)};Module.ecc_ristretto255_scalar_reduce=(r,s)=>{const ptr_r=mput(r,ecc_ristretto255_SCALARSIZE);const ptr_s=mput(s,ecc_ristretto255_NONREDUCEDSCALARSIZE);_ecc_ristretto255_scalar_reduce(ptr_r,ptr_s);mget(r,ptr_r,ecc_ristretto255_SCALARSIZE);mfree(ptr_r,ecc_ristretto255_SCALARSIZE);mfree(ptr_s,ecc_ristretto255_NONREDUCEDSCALARSIZE)};Module.ecc_ristretto255_scalarmult=(q,n,p)=>{const ptr_q=mput(q,ecc_ristretto255_ELEMENTSIZE);const ptr_n=mput(n,ecc_ristretto255_SCALARSIZE);const ptr_p=mput(p,ecc_ristretto255_ELEMENTSIZE);const fun_ret=_ecc_ristretto255_scalarmult(ptr_q,ptr_n,ptr_p);mget(q,ptr_q,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_q,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_n,ecc_ristretto255_SCALARSIZE);mfree(ptr_p,ecc_ristretto255_ELEMENTSIZE);return fun_ret};Module.ecc_ristretto255_scalarmult_base=(q,n)=>{const ptr_q=mput(q,ecc_ristretto255_ELEMENTSIZE);const ptr_n=mput(n,ecc_ristretto255_SCALARSIZE);const fun_ret=_ecc_ristretto255_scalarmult_base(ptr_q,ptr_n);mget(q,ptr_q,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_q,ecc_ristretto255_ELEMENTSIZE);mfree(ptr_n,ecc_ristretto255_SCALARSIZE);return fun_ret};const ecc_bls12_381_G1SIZE=48;Module.ecc_bls12_381_G1SIZE=ecc_bls12_381_G1SIZE;const ecc_bls12_381_G2SIZE=96;Module.ecc_bls12_381_G2SIZE=ecc_bls12_381_G2SIZE;const ecc_bls12_381_SCALARSIZE=32;Module.ecc_bls12_381_SCALARSIZE=ecc_bls12_381_SCALARSIZE;const ecc_bls12_381_FPSIZE=48;Module.ecc_bls12_381_FPSIZE=ecc_bls12_381_FPSIZE;const ecc_bls12_381_FP12SIZE=576;Module.ecc_bls12_381_FP12SIZE=ecc_bls12_381_FP12SIZE;Module.ecc_bls12_381_fp_random=ret=>{const ptr_ret=mput(ret,ecc_bls12_381_FPSIZE);_ecc_bls12_381_fp_random(ptr_ret);mget(ret,ptr_ret,ecc_bls12_381_FPSIZE);mfree(ptr_ret,ecc_bls12_381_FPSIZE)};Module.ecc_bls12_381_fp12_one=ret=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_one(ptr_ret);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_fp12_is_one=a=>{const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);const fun_ret=_ecc_bls12_381_fp12_is_one(ptr_a);mfree(ptr_a,ecc_bls12_381_FP12SIZE);return fun_ret};Module.ecc_bls12_381_fp12_inverse=(ret,a)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_inverse(ptr_ret,ptr_a);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_a,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_fp12_sqr=(ret,a)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_sqr(ptr_ret,ptr_a);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_a,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_fp12_mul=(ret,a,b)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);const ptr_b=mput(b,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_mul(ptr_ret,ptr_a,ptr_b);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_a,ecc_bls12_381_FP12SIZE);mfree(ptr_b,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_fp12_pow=(ret,a,n)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_pow(ptr_ret,ptr_a,n);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_a,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_fp12_random=ret=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_fp12_random(ptr_ret);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_g1_add=(r,p,q)=>{const ptr_r=mput(r,ecc_bls12_381_G1SIZE);const ptr_p=mput(p,ecc_bls12_381_G1SIZE);const ptr_q=mput(q,ecc_bls12_381_G1SIZE);_ecc_bls12_381_g1_add(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_bls12_381_G1SIZE);mfree(ptr_r,ecc_bls12_381_G1SIZE);mfree(ptr_p,ecc_bls12_381_G1SIZE);mfree(ptr_q,ecc_bls12_381_G1SIZE)};Module.ecc_bls12_381_g1_negate=(neg,p)=>{const ptr_neg=mput(neg,ecc_bls12_381_G1SIZE);const ptr_p=mput(p,ecc_bls12_381_G1SIZE);_ecc_bls12_381_g1_negate(ptr_neg,ptr_p);mget(neg,ptr_neg,ecc_bls12_381_G1SIZE);mfree(ptr_neg,ecc_bls12_381_G1SIZE);mfree(ptr_p,ecc_bls12_381_G1SIZE)};Module.ecc_bls12_381_g1_generator=g=>{const ptr_g=mput(g,ecc_bls12_381_G1SIZE);_ecc_bls12_381_g1_generator(ptr_g);mget(g,ptr_g,ecc_bls12_381_G1SIZE);mfree(ptr_g,ecc_bls12_381_G1SIZE)};Module.ecc_bls12_381_g1_scalarmult=(q,n,p)=>{const ptr_q=mput(q,ecc_bls12_381_G1SIZE);const ptr_n=mput(n,ecc_bls12_381_SCALARSIZE);const ptr_p=mput(p,ecc_bls12_381_G1SIZE);_ecc_bls12_381_g1_scalarmult(ptr_q,ptr_n,ptr_p);mget(q,ptr_q,ecc_bls12_381_G1SIZE);mfree(ptr_q,ecc_bls12_381_G1SIZE);mfree(ptr_n,ecc_bls12_381_SCALARSIZE);mfree(ptr_p,ecc_bls12_381_G1SIZE)};Module.ecc_bls12_381_g1_scalarmult_base=(q,n)=>{const ptr_q=mput(q,ecc_bls12_381_G1SIZE);const ptr_n=mput(n,ecc_bls12_381_SCALARSIZE);_ecc_bls12_381_g1_scalarmult_base(ptr_q,ptr_n);mget(q,ptr_q,ecc_bls12_381_G1SIZE);mfree(ptr_q,ecc_bls12_381_G1SIZE);mfree(ptr_n,ecc_bls12_381_SCALARSIZE)};Module.ecc_bls12_381_g2_add=(r,p,q)=>{const ptr_r=mput(r,ecc_bls12_381_G2SIZE);const ptr_p=mput(p,ecc_bls12_381_G2SIZE);const ptr_q=mput(q,ecc_bls12_381_G2SIZE);_ecc_bls12_381_g2_add(ptr_r,ptr_p,ptr_q);mget(r,ptr_r,ecc_bls12_381_G2SIZE);mfree(ptr_r,ecc_bls12_381_G2SIZE);mfree(ptr_p,ecc_bls12_381_G2SIZE);mfree(ptr_q,ecc_bls12_381_G2SIZE)};Module.ecc_bls12_381_g2_negate=(neg,p)=>{const ptr_neg=mput(neg,ecc_bls12_381_G2SIZE);const ptr_p=mput(p,ecc_bls12_381_G2SIZE);_ecc_bls12_381_g2_negate(ptr_neg,ptr_p);mget(neg,ptr_neg,ecc_bls12_381_G2SIZE);mfree(ptr_neg,ecc_bls12_381_G2SIZE);mfree(ptr_p,ecc_bls12_381_G2SIZE)};Module.ecc_bls12_381_g2_generator=g=>{const ptr_g=mput(g,ecc_bls12_381_G2SIZE);_ecc_bls12_381_g2_generator(ptr_g);mget(g,ptr_g,ecc_bls12_381_G2SIZE);mfree(ptr_g,ecc_bls12_381_G2SIZE)};Module.ecc_bls12_381_g2_scalarmult_base=(q,n)=>{const ptr_q=mput(q,ecc_bls12_381_G2SIZE);const ptr_n=mput(n,ecc_bls12_381_SCALARSIZE);_ecc_bls12_381_g2_scalarmult_base(ptr_q,ptr_n);mget(q,ptr_q,ecc_bls12_381_G2SIZE);mfree(ptr_q,ecc_bls12_381_G2SIZE);mfree(ptr_n,ecc_bls12_381_SCALARSIZE)};Module.ecc_bls12_381_scalar_random=r=>{const ptr_r=mput(r,ecc_bls12_381_SCALARSIZE);_ecc_bls12_381_scalar_random(ptr_r);mget(r,ptr_r,ecc_bls12_381_SCALARSIZE);mfree(ptr_r,ecc_bls12_381_SCALARSIZE)};Module.ecc_bls12_381_pairing=(ret,p1_g1,p2_g2)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_p1_g1=mput(p1_g1,ecc_bls12_381_G1SIZE);const ptr_p2_g2=mput(p2_g2,ecc_bls12_381_G2SIZE);_ecc_bls12_381_pairing(ptr_ret,ptr_p1_g1,ptr_p2_g2);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_p1_g1,ecc_bls12_381_G1SIZE);mfree(ptr_p2_g2,ecc_bls12_381_G2SIZE)};Module.ecc_bls12_381_pairing_miller_loop=(ret,p1_g1,p2_g2)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_p1_g1=mput(p1_g1,ecc_bls12_381_G1SIZE);const ptr_p2_g2=mput(p2_g2,ecc_bls12_381_G2SIZE);_ecc_bls12_381_pairing_miller_loop(ptr_ret,ptr_p1_g1,ptr_p2_g2);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_p1_g1,ecc_bls12_381_G1SIZE);mfree(ptr_p2_g2,ecc_bls12_381_G2SIZE)};Module.ecc_bls12_381_pairing_final_exp=(ret,a)=>{const ptr_ret=mput(ret,ecc_bls12_381_FP12SIZE);const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);_ecc_bls12_381_pairing_final_exp(ptr_ret,ptr_a);mget(ret,ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_ret,ecc_bls12_381_FP12SIZE);mfree(ptr_a,ecc_bls12_381_FP12SIZE)};Module.ecc_bls12_381_pairing_final_verify=(a,b)=>{const ptr_a=mput(a,ecc_bls12_381_FP12SIZE);const ptr_b=mput(b,ecc_bls12_381_FP12SIZE);const fun_ret=_ecc_bls12_381_pairing_final_verify(ptr_a,ptr_b);mfree(ptr_a,ecc_bls12_381_FP12SIZE);mfree(ptr_b,ecc_bls12_381_FP12SIZE);return fun_ret};const ecc_h2c_expand_message_xmd_sha256_MAXSIZE=8160;Module.ecc_h2c_expand_message_xmd_sha256_MAXSIZE=ecc_h2c_expand_message_xmd_sha256_MAXSIZE;const ecc_h2c_expand_message_xmd_sha256_DSTMAXSIZE=255;Module.ecc_h2c_expand_message_xmd_sha256_DSTMAXSIZE=ecc_h2c_expand_message_xmd_sha256_DSTMAXSIZE;const ecc_h2c_expand_message_xmd_sha512_MAXSIZE=16320;Module.ecc_h2c_expand_message_xmd_sha512_MAXSIZE=ecc_h2c_expand_message_xmd_sha512_MAXSIZE;const ecc_h2c_expand_message_xmd_sha512_DSTMAXSIZE=255;Module.ecc_h2c_expand_message_xmd_sha512_DSTMAXSIZE=ecc_h2c_expand_message_xmd_sha512_DSTMAXSIZE;Module.ecc_h2c_expand_message_xmd_sha256=(out,msg,msg_len,dst,dst_len,len)=>{const ptr_out=mput(out,len);const ptr_msg=mput(msg,msg_len);const ptr_dst=mput(dst,dst_len);const fun_ret=_ecc_h2c_expand_message_xmd_sha256(ptr_out,ptr_msg,msg_len,ptr_dst,dst_len,len);mget(out,ptr_out,len);mfree(ptr_out,len);mfree(ptr_msg,msg_len);mfree(ptr_dst,dst_len);return fun_ret};Module.ecc_h2c_expand_message_xmd_sha512=(out,msg,msg_len,dst,dst_len,len)=>{const ptr_out=mput(out,len);const ptr_msg=mput(msg,msg_len);const ptr_dst=mput(dst,dst_len);const fun_ret=_ecc_h2c_expand_message_xmd_sha512(ptr_out,ptr_msg,msg_len,ptr_dst,dst_len,len);mget(out,ptr_out,len);mfree(ptr_out,len);mfree(ptr_msg,msg_len);mfree(ptr_dst,dst_len);return fun_ret};const ecc_voprf_ristretto255_sha512_ELEMENTSIZE=32;Module.ecc_voprf_ristretto255_sha512_ELEMENTSIZE=ecc_voprf_ristretto255_sha512_ELEMENTSIZE;const ecc_voprf_ristretto255_sha512_SCALARSIZE=32;Module.ecc_voprf_ristretto255_sha512_SCALARSIZE=ecc_voprf_ristretto255_sha512_SCALARSIZE;const ecc_voprf_ristretto255_sha512_PROOFSIZE=64;Module.ecc_voprf_ristretto255_sha512_PROOFSIZE=ecc_voprf_ristretto255_sha512_PROOFSIZE;const ecc_voprf_ristretto255_sha512_Nh=64;Module.ecc_voprf_ristretto255_sha512_Nh=ecc_voprf_ristretto255_sha512_Nh;const ecc_voprf_ristretto255_sha512_MODE_OPRF=0;Module.ecc_voprf_ristretto255_sha512_MODE_OPRF=ecc_voprf_ristretto255_sha512_MODE_OPRF;const ecc_voprf_ristretto255_sha512_MODE_VOPRF=1;Module.ecc_voprf_ristretto255_sha512_MODE_VOPRF=ecc_voprf_ristretto255_sha512_MODE_VOPRF;const ecc_voprf_ristretto255_sha512_MODE_POPRF=2;Module.ecc_voprf_ristretto255_sha512_MODE_POPRF=ecc_voprf_ristretto255_sha512_MODE_POPRF;const ecc_voprf_ristretto255_sha512_MAXINFOSIZE=2e3;Module.ecc_voprf_ristretto255_sha512_MAXINFOSIZE=ecc_voprf_ristretto255_sha512_MAXINFOSIZE;Module.ecc_voprf_ristretto255_sha512_GenerateProofWithScalar=(proof,k,A,B,C,D,m,mode,r)=>{const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_k=mput(k,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_A=mput(A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_B=mput(B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_C=mput(C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_D=mput(D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_r=mput(r,ecc_voprf_ristretto255_sha512_SCALARSIZE);_ecc_voprf_ristretto255_sha512_GenerateProofWithScalar(ptr_proof,ptr_k,ptr_A,ptr_B,ptr_C,ptr_D,m,mode,ptr_r);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_k,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_r,ecc_voprf_ristretto255_sha512_SCALARSIZE)};Module.ecc_voprf_ristretto255_sha512_GenerateProof=(proof,k,A,B,C,D,m,mode)=>{const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_k=mput(k,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_A=mput(A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_B=mput(B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_C=mput(C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_D=mput(D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_GenerateProof(ptr_proof,ptr_k,ptr_A,ptr_B,ptr_C,ptr_D,m,mode);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_k,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_ComputeCompositesFast=(M,Z,k,B,C,D,m,mode)=>{const ptr_M=mput(M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_Z=mput(Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_k=mput(k,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_B=mput(B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_C=mput(C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_D=mput(D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_ComputeCompositesFast(ptr_M,ptr_Z,ptr_k,ptr_B,ptr_C,ptr_D,m,mode);mget(M,ptr_M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(Z,ptr_Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_k,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_VerifyProof=(A,B,C,D,m,mode,proof)=>{const ptr_A=mput(A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_B=mput(B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_C=mput(C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_D=mput(D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_VerifyProof(ptr_A,ptr_B,ptr_C,ptr_D,m,mode,ptr_proof);mfree(ptr_A,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_ComputeComposites=(M,Z,B,C,D,m,mode)=>{const ptr_M=mput(M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_Z=mput(Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_B=mput(B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_C=mput(C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_D=mput(D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_ComputeComposites(ptr_M,ptr_Z,ptr_B,ptr_C,ptr_D,m,mode);mget(M,ptr_M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(Z,ptr_Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_M,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_Z,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_B,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_C,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_D,m*ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_GenerateKeyPair=(skS,pkS)=>{const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_GenerateKeyPair(ptr_skS,ptr_pkS);mget(skS,ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mget(pkS,ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_DeriveKeyPair=(skS,pkS,seed,info,infoLen,mode)=>{const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_seed=mput(seed,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_info=mput(info,infoLen);const fun_ret=_ecc_voprf_ristretto255_sha512_DeriveKeyPair(ptr_skS,ptr_pkS,ptr_seed,ptr_info,infoLen,mode);mget(skS,ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mget(pkS,ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_seed,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_info,infoLen);return fun_ret};Module.ecc_voprf_ristretto255_sha512_BlindWithScalar=(blindedElement,input,inputLen,blind,mode)=>{const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_BlindWithScalar(ptr_blindedElement,ptr_input,inputLen,ptr_blind,mode);mget(blindedElement,ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_Blind=(blind,blindedElement,input,inputLen,mode)=>{const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);const fun_ret=_ecc_voprf_ristretto255_sha512_Blind(ptr_blind,ptr_blindedElement,ptr_input,inputLen,mode);mget(blind,ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mget(blindedElement,ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen);return fun_ret};Module.ecc_voprf_ristretto255_sha512_BlindEvaluate=(evaluatedElement,skS,blindedElement)=>{const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_BlindEvaluate(ptr_evaluatedElement,ptr_skS,ptr_blindedElement);mget(evaluatedElement,ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_Finalize=(output,input,inputLen,blind,evaluatedElement)=>{const ptr_output=mput(output,ecc_voprf_ristretto255_sha512_Nh);const ptr_input=mput(input,inputLen);const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_Finalize(ptr_output,ptr_input,inputLen,ptr_blind,ptr_evaluatedElement);mget(output,ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_input,inputLen);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_Evaluate=(output,skS,input,inputLen,mode)=>{const ptr_output=mput(output,ecc_voprf_ristretto255_sha512_Nh);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_input=mput(input,inputLen);const fun_ret=_ecc_voprf_ristretto255_sha512_Evaluate(ptr_output,ptr_skS,ptr_input,inputLen,mode);mget(output,ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_input,inputLen);return fun_ret};Module.ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateWithScalar=(evaluatedElement,proof,skS,pkS,blindedElement,r)=>{const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_r=mput(r,ecc_voprf_ristretto255_sha512_SCALARSIZE);_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateWithScalar(ptr_evaluatedElement,ptr_proof,ptr_skS,ptr_pkS,ptr_blindedElement,ptr_r);mget(evaluatedElement,ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_r,ecc_voprf_ristretto255_sha512_SCALARSIZE)};Module.ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate=(evaluatedElement,proof,skS,pkS,blindedElement)=>{const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);_ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate(ptr_evaluatedElement,ptr_proof,ptr_skS,ptr_pkS,ptr_blindedElement);mget(evaluatedElement,ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE)};Module.ecc_voprf_ristretto255_sha512_VerifiableFinalize=(output,input,inputLen,blind,evaluatedElement,blindedElement,pkS,proof)=>{const ptr_output=mput(output,ecc_voprf_ristretto255_sha512_Nh);const ptr_input=mput(input,inputLen);const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_VerifiableFinalize(ptr_output,ptr_input,inputLen,ptr_blind,ptr_evaluatedElement,ptr_blindedElement,ptr_pkS,ptr_proof);mget(output,ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_input,inputLen);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar=(blindedElement,tweakedKey,input,inputLen,info,infoLen,pkS,blind)=>{const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_tweakedKey=mput(tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);const ptr_info=mput(info,infoLen);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar(ptr_blindedElement,ptr_tweakedKey,ptr_input,inputLen,ptr_info,infoLen,ptr_pkS,ptr_blind);mget(blindedElement,ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(tweakedKey,ptr_tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen);mfree(ptr_info,infoLen);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyBlind=(blind,blindedElement,tweakedKey,input,inputLen,info,infoLen,pkS)=>{const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_tweakedKey=mput(tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);const ptr_info=mput(info,infoLen);const ptr_pkS=mput(pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyBlind(ptr_blind,ptr_blindedElement,ptr_tweakedKey,ptr_input,inputLen,ptr_info,infoLen,ptr_pkS);mget(blind,ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mget(blindedElement,ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(tweakedKey,ptr_tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen);mfree(ptr_info,infoLen);mfree(ptr_pkS,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar=(evaluatedElement,proof,skS,blindedElement,info,infoLen,r)=>{const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_info=mput(info,infoLen);const ptr_r=mput(r,ecc_voprf_ristretto255_sha512_SCALARSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar(ptr_evaluatedElement,ptr_proof,ptr_skS,ptr_blindedElement,ptr_info,infoLen,ptr_r);mget(evaluatedElement,ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_info,infoLen);mfree(ptr_r,ecc_voprf_ristretto255_sha512_SCALARSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate=(evaluatedElement,proof,skS,blindedElement,info,infoLen)=>{const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_info=mput(info,infoLen);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate(ptr_evaluatedElement,ptr_proof,ptr_skS,ptr_blindedElement,ptr_info,infoLen);mget(evaluatedElement,ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mget(proof,ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_info,infoLen);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyFinalize=(output,input,inputLen,blind,evaluatedElement,blindedElement,proof,info,infoLen,tweakedKey)=>{const ptr_output=mput(output,ecc_voprf_ristretto255_sha512_Nh);const ptr_input=mput(input,inputLen);const ptr_blind=mput(blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_evaluatedElement=mput(evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_blindedElement=mput(blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_proof=mput(proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);const ptr_info=mput(info,infoLen);const ptr_tweakedKey=mput(tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyFinalize(ptr_output,ptr_input,inputLen,ptr_blind,ptr_evaluatedElement,ptr_blindedElement,ptr_proof,ptr_info,infoLen,ptr_tweakedKey);mget(output,ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_input,inputLen);mfree(ptr_blind,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_evaluatedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_blindedElement,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_proof,ecc_voprf_ristretto255_sha512_PROOFSIZE);mfree(ptr_info,infoLen);mfree(ptr_tweakedKey,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);return fun_ret};Module.ecc_voprf_ristretto255_sha512_PartiallyEvaluate=(output,skS,input,inputLen,info,infoLen)=>{const ptr_output=mput(output,ecc_voprf_ristretto255_sha512_Nh);const ptr_skS=mput(skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_input=mput(input,inputLen);const ptr_info=mput(info,infoLen);const fun_ret=_ecc_voprf_ristretto255_sha512_PartiallyEvaluate(ptr_output,ptr_skS,ptr_input,inputLen,ptr_info,infoLen);mget(output,ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_output,ecc_voprf_ristretto255_sha512_Nh);mfree(ptr_skS,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_input,inputLen);mfree(ptr_info,infoLen);return fun_ret};Module.ecc_voprf_ristretto255_sha512_HashToGroupWithDST=(out,input,inputLen,dst,dstLen)=>{const ptr_out=mput(out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);const ptr_dst=mput(dst,dstLen);_ecc_voprf_ristretto255_sha512_HashToGroupWithDST(ptr_out,ptr_input,inputLen,ptr_dst,dstLen);mget(out,ptr_out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen);mfree(ptr_dst,dstLen)};Module.ecc_voprf_ristretto255_sha512_HashToGroup=(out,input,inputLen,mode)=>{const ptr_out=mput(out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);const ptr_input=mput(input,inputLen);_ecc_voprf_ristretto255_sha512_HashToGroup(ptr_out,ptr_input,inputLen,mode);mget(out,ptr_out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_out,ecc_voprf_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_input,inputLen)};Module.ecc_voprf_ristretto255_sha512_HashToScalarWithDST=(out,input,inputLen,dst,dstLen)=>{const ptr_out=mput(out,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_input=mput(input,inputLen);const ptr_dst=mput(dst,dstLen);_ecc_voprf_ristretto255_sha512_HashToScalarWithDST(ptr_out,ptr_input,inputLen,ptr_dst,dstLen);mget(out,ptr_out,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_out,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_input,inputLen);mfree(ptr_dst,dstLen)};Module.ecc_voprf_ristretto255_sha512_HashToScalar=(out,input,inputLen,mode)=>{const ptr_out=mput(out,ecc_voprf_ristretto255_sha512_SCALARSIZE);const ptr_input=mput(input,inputLen);_ecc_voprf_ristretto255_sha512_HashToScalar(ptr_out,ptr_input,inputLen,mode);mget(out,ptr_out,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_out,ecc_voprf_ristretto255_sha512_SCALARSIZE);mfree(ptr_input,inputLen)};const ecc_opaque_ristretto255_sha512_Nn=32;Module.ecc_opaque_ristretto255_sha512_Nn=ecc_opaque_ristretto255_sha512_Nn;const ecc_opaque_ristretto255_sha512_Nm=64;Module.ecc_opaque_ristretto255_sha512_Nm=ecc_opaque_ristretto255_sha512_Nm;const ecc_opaque_ristretto255_sha512_Nh=64;Module.ecc_opaque_ristretto255_sha512_Nh=ecc_opaque_ristretto255_sha512_Nh;const ecc_opaque_ristretto255_sha512_Nx=64;Module.ecc_opaque_ristretto255_sha512_Nx=ecc_opaque_ristretto255_sha512_Nx;const ecc_opaque_ristretto255_sha512_Npk=32;Module.ecc_opaque_ristretto255_sha512_Npk=ecc_opaque_ristretto255_sha512_Npk;const ecc_opaque_ristretto255_sha512_Nsk=32;Module.ecc_opaque_ristretto255_sha512_Nsk=ecc_opaque_ristretto255_sha512_Nsk;const ecc_opaque_ristretto255_sha512_Noe=32;Module.ecc_opaque_ristretto255_sha512_Noe=ecc_opaque_ristretto255_sha512_Noe;const ecc_opaque_ristretto255_sha512_Ns=32;Module.ecc_opaque_ristretto255_sha512_Ns=ecc_opaque_ristretto255_sha512_Ns;const ecc_opaque_ristretto255_sha512_Nok=32;Module.ecc_opaque_ristretto255_sha512_Nok=ecc_opaque_ristretto255_sha512_Nok;const ecc_opaque_ristretto255_sha512_Ne=96;Module.ecc_opaque_ristretto255_sha512_Ne=ecc_opaque_ristretto255_sha512_Ne;const ecc_opaque_ristretto255_sha512_PASSWORDMAXSIZE=200;Module.ecc_opaque_ristretto255_sha512_PASSWORDMAXSIZE=ecc_opaque_ristretto255_sha512_PASSWORDMAXSIZE;const ecc_opaque_ristretto255_sha512_IDENTITYMAXSIZE=200;Module.ecc_opaque_ristretto255_sha512_IDENTITYMAXSIZE=ecc_opaque_ristretto255_sha512_IDENTITYMAXSIZE;const ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE=434;Module.ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE=ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE;const ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE=32;Module.ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE=ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE;const ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE=64;Module.ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE=ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE;const ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE=192;Module.ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE=ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE;const ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE=32;Module.ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE=ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE;const ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE=192;Module.ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE=ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE;const ecc_opaque_ristretto255_sha512_KE1SIZE=96;Module.ecc_opaque_ristretto255_sha512_KE1SIZE=ecc_opaque_ristretto255_sha512_KE1SIZE;const ecc_opaque_ristretto255_sha512_KE2SIZE=320;Module.ecc_opaque_ristretto255_sha512_KE2SIZE=ecc_opaque_ristretto255_sha512_KE2SIZE;const ecc_opaque_ristretto255_sha512_KE3SIZE=64;Module.ecc_opaque_ristretto255_sha512_KE3SIZE=ecc_opaque_ristretto255_sha512_KE3SIZE;const ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE=361;Module.ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE=ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE;const ecc_opaque_ristretto255_sha512_SERVERSTATESIZE=128;Module.ecc_opaque_ristretto255_sha512_SERVERSTATESIZE=ecc_opaque_ristretto255_sha512_SERVERSTATESIZE;const ecc_opaque_ristretto255_sha512_MHF_IDENTITY=0;Module.ecc_opaque_ristretto255_sha512_MHF_IDENTITY=ecc_opaque_ristretto255_sha512_MHF_IDENTITY;const ecc_opaque_ristretto255_sha512_MHF_SCRYPT=1;Module.ecc_opaque_ristretto255_sha512_MHF_SCRYPT=ecc_opaque_ristretto255_sha512_MHF_SCRYPT;Module.ecc_opaque_ristretto255_sha512_DeriveKeyPair=(private_key,public_key,seed)=>{const ptr_private_key=mput(private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_public_key=mput(public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_seed=mput(seed,ecc_opaque_ristretto255_sha512_Nn);_ecc_opaque_ristretto255_sha512_DeriveKeyPair(ptr_private_key,ptr_public_key,ptr_seed);mget(private_key,ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mget(public_key,ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_seed,ecc_opaque_ristretto255_sha512_Nn)};Module.ecc_opaque_ristretto255_sha512_CreateCleartextCredentials=(cleartext_credentials,server_public_key,client_public_key,server_identity,server_identity_len,client_identity,client_identity_len)=>{const ptr_cleartext_credentials=mput(cleartext_credentials,ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);_ecc_opaque_ristretto255_sha512_CreateCleartextCredentials(ptr_cleartext_credentials,ptr_server_public_key,ptr_client_public_key,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len);mget(cleartext_credentials,ptr_cleartext_credentials,ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE);mfree(ptr_cleartext_credentials,ecc_opaque_ristretto255_sha512_CLEARTEXTCREDENTIALSSIZE);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len)};Module.ecc_opaque_ristretto255_sha512_EnvelopeStoreWithNonce=(envelope,client_public_key,masking_key,export_key,randomized_pwd,server_public_key,server_identity,server_identity_len,client_identity,client_identity_len,nonce)=>{const ptr_envelope=mput(envelope,ecc_opaque_ristretto255_sha512_Ne);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_masking_key=mput(masking_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_randomized_pwd=mput(randomized_pwd,64);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_nonce=mput(nonce,ecc_opaque_ristretto255_sha512_Nn);_ecc_opaque_ristretto255_sha512_EnvelopeStoreWithNonce(ptr_envelope,ptr_client_public_key,ptr_masking_key,ptr_export_key,ptr_randomized_pwd,ptr_server_public_key,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len,ptr_nonce);mget(envelope,ptr_envelope,ecc_opaque_ristretto255_sha512_Ne);mget(client_public_key,ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mget(masking_key,ptr_masking_key,ecc_opaque_ristretto255_sha512_Nh);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_envelope,ecc_opaque_ristretto255_sha512_Ne);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_masking_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_randomized_pwd,64);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len);mfree(ptr_nonce,ecc_opaque_ristretto255_sha512_Nn)};Module.ecc_opaque_ristretto255_sha512_EnvelopeStore=(envelope,client_public_key,masking_key,export_key,randomized_pwd,server_public_key,server_identity,server_identity_len,client_identity,client_identity_len)=>{const ptr_envelope=mput(envelope,ecc_opaque_ristretto255_sha512_Ne);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_masking_key=mput(masking_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_randomized_pwd=mput(randomized_pwd,64);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);_ecc_opaque_ristretto255_sha512_EnvelopeStore(ptr_envelope,ptr_client_public_key,ptr_masking_key,ptr_export_key,ptr_randomized_pwd,ptr_server_public_key,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len);mget(envelope,ptr_envelope,ecc_opaque_ristretto255_sha512_Ne);mget(client_public_key,ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mget(masking_key,ptr_masking_key,ecc_opaque_ristretto255_sha512_Nh);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_envelope,ecc_opaque_ristretto255_sha512_Ne);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_masking_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_randomized_pwd,64);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len)};Module.ecc_opaque_ristretto255_sha512_EnvelopeRecover=(client_private_key,export_key,randomized_pwd,server_public_key,envelope_raw,server_identity,server_identity_len,client_identity,client_identity_len)=>{const ptr_client_private_key=mput(client_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_randomized_pwd=mput(randomized_pwd,64);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_envelope_raw=mput(envelope_raw,ecc_opaque_ristretto255_sha512_Ne);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);const fun_ret=_ecc_opaque_ristretto255_sha512_EnvelopeRecover(ptr_client_private_key,ptr_export_key,ptr_randomized_pwd,ptr_server_public_key,ptr_envelope_raw,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len);mget(client_private_key,ptr_client_private_key,ecc_opaque_ristretto255_sha512_Nsk);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_client_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_randomized_pwd,64);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_envelope_raw,ecc_opaque_ristretto255_sha512_Ne);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len);return fun_ret};Module.ecc_opaque_ristretto255_sha512_RecoverPublicKey=(public_key,private_key)=>{const ptr_public_key=mput(public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_private_key=mput(private_key,ecc_opaque_ristretto255_sha512_Nsk);_ecc_opaque_ristretto255_sha512_RecoverPublicKey(ptr_public_key,ptr_private_key);mget(public_key,ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk)};Module.ecc_opaque_ristretto255_sha512_GenerateAuthKeyPair=(private_key,public_key)=>{const ptr_private_key=mput(private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_public_key=mput(public_key,ecc_opaque_ristretto255_sha512_Npk);_ecc_opaque_ristretto255_sha512_GenerateAuthKeyPair(ptr_private_key,ptr_public_key);mget(private_key,ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mget(public_key,ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_public_key,ecc_opaque_ristretto255_sha512_Npk)};Module.ecc_opaque_ristretto255_sha512_DeriveAuthKeyPair=(private_key,public_key,seed)=>{const ptr_private_key=mput(private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_public_key=mput(public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_seed=mput(seed,ecc_opaque_ristretto255_sha512_Nn);_ecc_opaque_ristretto255_sha512_DeriveAuthKeyPair(ptr_private_key,ptr_public_key,ptr_seed);mget(private_key,ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mget(public_key,ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_seed,ecc_opaque_ristretto255_sha512_Nn)};Module.ecc_opaque_ristretto255_sha512_CreateRegistrationRequestWithBlind=(request,password,password_len,blind)=>{const ptr_request=mput(request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);_ecc_opaque_ristretto255_sha512_CreateRegistrationRequestWithBlind(ptr_request,ptr_password,password_len,ptr_blind);mget(request,ptr_request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);mfree(ptr_request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns)};Module.ecc_opaque_ristretto255_sha512_CreateRegistrationRequest=(request,blind,password,password_len)=>{const ptr_request=mput(request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);const ptr_password=mput(password,password_len);_ecc_opaque_ristretto255_sha512_CreateRegistrationRequest(ptr_request,ptr_blind,ptr_password,password_len);mget(request,ptr_request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);mget(blind,ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_password,password_len)};Module.ecc_opaque_ristretto255_sha512_CreateRegistrationResponse=(response,request,server_public_key,credential_identifier,credential_identifier_len,oprf_seed)=>{const ptr_response=mput(response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);const ptr_request=mput(request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_credential_identifier=mput(credential_identifier,credential_identifier_len);const ptr_oprf_seed=mput(oprf_seed,ecc_opaque_ristretto255_sha512_Nh);_ecc_opaque_ristretto255_sha512_CreateRegistrationResponse(ptr_response,ptr_request,ptr_server_public_key,ptr_credential_identifier,credential_identifier_len,ptr_oprf_seed);mget(response,ptr_response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);mfree(ptr_response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);mfree(ptr_request,ecc_opaque_ristretto255_sha512_REGISTRATIONREQUESTSIZE);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_credential_identifier,credential_identifier_len);mfree(ptr_oprf_seed,ecc_opaque_ristretto255_sha512_Nh)};Module.ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequestWithNonce=(record,export_key,password,password_len,blind,response,server_identity,server_identity_len,client_identity,client_identity_len,mhf,nonce)=>{const ptr_record=mput(record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);const ptr_response=mput(response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_nonce=mput(nonce,ecc_opaque_ristretto255_sha512_Nn);_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequestWithNonce(ptr_record,ptr_export_key,ptr_password,password_len,ptr_blind,ptr_response,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len,mhf,ptr_nonce);mget(record,ptr_record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len);mfree(ptr_nonce,ecc_opaque_ristretto255_sha512_Nn)};Module.ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequest=(record,export_key,password,password_len,blind,response,server_identity,server_identity_len,client_identity,client_identity_len,mhf)=>{const ptr_record=mput(record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);const ptr_response=mput(response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);_ecc_opaque_ristretto255_sha512_FinalizeRegistrationRequest(ptr_record,ptr_export_key,ptr_password,password_len,ptr_blind,ptr_response,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len,mhf);mget(record,ptr_record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_record,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_response,ecc_opaque_ristretto255_sha512_REGISTRATIONRESPONSESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len)};Module.ecc_opaque_ristretto255_sha512_CreateCredentialRequestWithBlind=(request,password,password_len,blind)=>{const ptr_request=mput(request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);_ecc_opaque_ristretto255_sha512_CreateCredentialRequestWithBlind(ptr_request,ptr_password,password_len,ptr_blind);mget(request,ptr_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns)};Module.ecc_opaque_ristretto255_sha512_CreateCredentialRequest=(request,blind,password,password_len)=>{const ptr_request=mput(request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);const ptr_password=mput(password,password_len);_ecc_opaque_ristretto255_sha512_CreateCredentialRequest(ptr_request,ptr_blind,ptr_password,password_len);mget(request,ptr_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mget(blind,ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_password,password_len)};Module.ecc_opaque_ristretto255_sha512_CreateCredentialResponseWithMasking=(response_raw,request_raw,server_public_key,record_raw,credential_identifier,credential_identifier_len,oprf_seed,masking_nonce)=>{const ptr_response_raw=mput(response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);const ptr_request_raw=mput(request_raw,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_record_raw=mput(record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_credential_identifier=mput(credential_identifier,credential_identifier_len);const ptr_oprf_seed=mput(oprf_seed,ecc_opaque_ristretto255_sha512_Nh);const ptr_masking_nonce=mput(masking_nonce,ecc_opaque_ristretto255_sha512_Nn);_ecc_opaque_ristretto255_sha512_CreateCredentialResponseWithMasking(ptr_response_raw,ptr_request_raw,ptr_server_public_key,ptr_record_raw,ptr_credential_identifier,credential_identifier_len,ptr_oprf_seed,ptr_masking_nonce);mget(response_raw,ptr_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_request_raw,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_credential_identifier,credential_identifier_len);mfree(ptr_oprf_seed,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_masking_nonce,ecc_opaque_ristretto255_sha512_Nn)};Module.ecc_opaque_ristretto255_sha512_CreateCredentialResponse=(response_raw,request_raw,server_public_key,record_raw,credential_identifier,credential_identifier_len,oprf_seed)=>{const ptr_response_raw=mput(response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);const ptr_request_raw=mput(request_raw,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_record_raw=mput(record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_credential_identifier=mput(credential_identifier,credential_identifier_len);const ptr_oprf_seed=mput(oprf_seed,ecc_opaque_ristretto255_sha512_Nh);_ecc_opaque_ristretto255_sha512_CreateCredentialResponse(ptr_response_raw,ptr_request_raw,ptr_server_public_key,ptr_record_raw,ptr_credential_identifier,credential_identifier_len,ptr_oprf_seed);mget(response_raw,ptr_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_request_raw,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_credential_identifier,credential_identifier_len);mfree(ptr_oprf_seed,ecc_opaque_ristretto255_sha512_Nh)};Module.ecc_opaque_ristretto255_sha512_RecoverCredentials=(client_private_key,server_public_key,export_key,password,password_len,blind,response,server_identity,server_identity_len,client_identity,client_identity_len,mhf)=>{const ptr_client_private_key=mput(client_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_export_key=mput(export_key,ecc_opaque_ristretto255_sha512_Nh);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Noe);const ptr_response=mput(response,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_client_identity=mput(client_identity,client_identity_len);const fun_ret=_ecc_opaque_ristretto255_sha512_RecoverCredentials(ptr_client_private_key,ptr_server_public_key,ptr_export_key,ptr_password,password_len,ptr_blind,ptr_response,ptr_server_identity,server_identity_len,ptr_client_identity,client_identity_len,mhf);mget(client_private_key,ptr_client_private_key,ecc_opaque_ristretto255_sha512_Nsk);mget(server_public_key,ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mget(export_key,ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_client_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_export_key,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Noe);mfree(ptr_response,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_client_identity,client_identity_len);return fun_ret};Module.ecc_opaque_ristretto255_sha512_3DH_Expand_Label=(out,secret,label,label_len,context,context_len,length)=>{const ptr_out=mput(out,length);const ptr_secret=mput(secret,64);const ptr_label=mput(label,label_len);const ptr_context=mput(context,context_len);_ecc_opaque_ristretto255_sha512_3DH_Expand_Label(ptr_out,ptr_secret,ptr_label,label_len,ptr_context,context_len,length);mget(out,ptr_out,length);mfree(ptr_out,length);mfree(ptr_secret,64);mfree(ptr_label,label_len);mfree(ptr_context,context_len)};Module.ecc_opaque_ristretto255_sha512_3DH_Derive_Secret=(out,secret,label,label_len,transcript_hash,transcript_hash_len)=>{const ptr_out=mput(out,ecc_opaque_ristretto255_sha512_Nx);const ptr_secret=mput(secret,64);const ptr_label=mput(label,label_len);const ptr_transcript_hash=mput(transcript_hash,transcript_hash_len);_ecc_opaque_ristretto255_sha512_3DH_Derive_Secret(ptr_out,ptr_secret,ptr_label,label_len,ptr_transcript_hash,transcript_hash_len);mget(out,ptr_out,ecc_opaque_ristretto255_sha512_Nx);mfree(ptr_out,ecc_opaque_ristretto255_sha512_Nx);mfree(ptr_secret,64);mfree(ptr_label,label_len);mfree(ptr_transcript_hash,transcript_hash_len)};Module.ecc_opaque_ristretto255_sha512_3DH_Preamble=(preamble,preamble_len,context,context_len,client_identity,client_identity_len,client_public_key,ke1,server_identity,server_identity_len,server_public_key,ke2)=>{const ptr_preamble=mput(preamble,preamble_len);const ptr_context=mput(context,context_len);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_ke1=mput(ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_ke2=mput(ke2,ecc_opaque_ristretto255_sha512_KE2SIZE);const fun_ret=_ecc_opaque_ristretto255_sha512_3DH_Preamble(ptr_preamble,preamble_len,ptr_context,context_len,ptr_client_identity,client_identity_len,ptr_client_public_key,ptr_ke1,ptr_server_identity,server_identity_len,ptr_server_public_key,ptr_ke2);mget(preamble,ptr_preamble,preamble_len);mfree(ptr_preamble,preamble_len);mfree(ptr_context,context_len);mfree(ptr_client_identity,client_identity_len);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_ke2,ecc_opaque_ristretto255_sha512_KE2SIZE);return fun_ret};Module.ecc_opaque_ristretto255_sha512_3DH_TripleDHIKM=(ikm,sk1,pk1,sk2,pk2,sk3,pk3)=>{const ptr_ikm=mput(ikm,96);const ptr_sk1=mput(sk1,32);const ptr_pk1=mput(pk1,32);const ptr_sk2=mput(sk2,32);const ptr_pk2=mput(pk2,32);const ptr_sk3=mput(sk3,32);const ptr_pk3=mput(pk3,32);_ecc_opaque_ristretto255_sha512_3DH_TripleDHIKM(ptr_ikm,ptr_sk1,ptr_pk1,ptr_sk2,ptr_pk2,ptr_sk3,ptr_pk3);mget(ikm,ptr_ikm,96);mfree(ptr_ikm,96);mfree(ptr_sk1,32);mfree(ptr_pk1,32);mfree(ptr_sk2,32);mfree(ptr_pk2,32);mfree(ptr_sk3,32);mfree(ptr_pk3,32)};Module.ecc_opaque_ristretto255_sha512_3DH_DeriveKeys=(km2,km3,session_key,ikm,ikm_len,preamble,preamble_len)=>{const ptr_km2=mput(km2,64);const ptr_km3=mput(km3,64);const ptr_session_key=mput(session_key,64);const ptr_ikm=mput(ikm,ikm_len);const ptr_preamble=mput(preamble,preamble_len);_ecc_opaque_ristretto255_sha512_3DH_DeriveKeys(ptr_km2,ptr_km3,ptr_session_key,ptr_ikm,ikm_len,ptr_preamble,preamble_len);mget(km2,ptr_km2,64);mget(km3,ptr_km3,64);mget(session_key,ptr_session_key,64);mfree(ptr_km2,64);mfree(ptr_km3,64);mfree(ptr_session_key,64);mfree(ptr_ikm,ikm_len);mfree(ptr_preamble,preamble_len)};Module.ecc_opaque_ristretto255_sha512_ClientInitWithSecrets=(ke1,state,password,password_len,blind,client_nonce,client_secret,client_keyshare)=>{const ptr_ke1=mput(ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_password=mput(password,password_len);const ptr_blind=mput(blind,ecc_opaque_ristretto255_sha512_Ns);const ptr_client_nonce=mput(client_nonce,ecc_opaque_ristretto255_sha512_Nn);const ptr_client_secret=mput(client_secret,ecc_opaque_ristretto255_sha512_Nsk);const ptr_client_keyshare=mput(client_keyshare,ecc_opaque_ristretto255_sha512_Npk);_ecc_opaque_ristretto255_sha512_ClientInitWithSecrets(ptr_ke1,ptr_state,ptr_password,password_len,ptr_blind,ptr_client_nonce,ptr_client_secret,ptr_client_keyshare);mget(ke1,ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_password,password_len);mfree(ptr_blind,ecc_opaque_ristretto255_sha512_Ns);mfree(ptr_client_nonce,ecc_opaque_ristretto255_sha512_Nn);mfree(ptr_client_secret,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_client_keyshare,ecc_opaque_ristretto255_sha512_Npk)};Module.ecc_opaque_ristretto255_sha512_ClientInit=(ke1,state,password,password_len)=>{const ptr_ke1=mput(ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_password=mput(password,password_len);_ecc_opaque_ristretto255_sha512_ClientInit(ptr_ke1,ptr_state,ptr_password,password_len);mget(ke1,ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_password,password_len)};Module.ecc_opaque_ristretto255_sha512_ClientFinish=(ke3_raw,session_key,export_key,state,client_identity,client_identity_len,server_identity,server_identity_len,ke2,mhf,context,context_len)=>{const ptr_ke3_raw=mput(ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);const ptr_session_key=mput(session_key,64);const ptr_export_key=mput(export_key,64);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_ke2=mput(ke2,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_context=mput(context,context_len);const fun_ret=_ecc_opaque_ristretto255_sha512_ClientFinish(ptr_ke3_raw,ptr_session_key,ptr_export_key,ptr_state,ptr_client_identity,client_identity_len,ptr_server_identity,server_identity_len,ptr_ke2,mhf,ptr_context,context_len);mget(ke3_raw,ptr_ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);mget(session_key,ptr_session_key,64);mget(export_key,ptr_export_key,64);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);mfree(ptr_session_key,64);mfree(ptr_export_key,64);mfree(ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_client_identity,client_identity_len);mfree(ptr_server_identity,server_identity_len);mfree(ptr_ke2,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_context,context_len);return fun_ret};Module.ecc_opaque_ristretto255_sha512_3DH_StartWithSecrets=(ke1,state,credential_request,client_nonce,client_secret,client_keyshare)=>{const ptr_ke1=mput(ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_credential_request=mput(credential_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);const ptr_client_nonce=mput(client_nonce,ecc_opaque_ristretto255_sha512_Nn);const ptr_client_secret=mput(client_secret,ecc_opaque_ristretto255_sha512_Nsk);const ptr_client_keyshare=mput(client_keyshare,ecc_opaque_ristretto255_sha512_Npk);_ecc_opaque_ristretto255_sha512_3DH_StartWithSecrets(ptr_ke1,ptr_state,ptr_credential_request,ptr_client_nonce,ptr_client_secret,ptr_client_keyshare);mget(ke1,ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_credential_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);mfree(ptr_client_nonce,ecc_opaque_ristretto255_sha512_Nn);mfree(ptr_client_secret,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_client_keyshare,ecc_opaque_ristretto255_sha512_Npk)};Module.ecc_opaque_ristretto255_sha512_3DH_Start=(ke1,state,credential_request)=>{const ptr_ke1=mput(ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_credential_request=mput(credential_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE);_ecc_opaque_ristretto255_sha512_3DH_Start(ptr_ke1,ptr_state,ptr_credential_request);mget(ke1,ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke1,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_state,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_credential_request,ecc_opaque_ristretto255_sha512_CREDENTIALREQUESTSIZE)};Module.ecc_opaque_ristretto255_sha512_3DH_ClientFinalize=(ke3_raw,session_key,state_raw,client_identity,client_identity_len,client_private_key,server_identity,server_identity_len,server_public_key,ke2_raw,context,context_len)=>{const ptr_ke3_raw=mput(ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);const ptr_session_key=mput(session_key,64);const ptr_state_raw=mput(state_raw,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_client_private_key=mput(client_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_ke2_raw=mput(ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_context=mput(context,context_len);const fun_ret=_ecc_opaque_ristretto255_sha512_3DH_ClientFinalize(ptr_ke3_raw,ptr_session_key,ptr_state_raw,ptr_client_identity,client_identity_len,ptr_client_private_key,ptr_server_identity,server_identity_len,ptr_server_public_key,ptr_ke2_raw,ptr_context,context_len);mget(ke3_raw,ptr_ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);mget(session_key,ptr_session_key,64);mget(state_raw,ptr_state_raw,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_ke3_raw,ecc_opaque_ristretto255_sha512_KE3SIZE);mfree(ptr_session_key,64);mfree(ptr_state_raw,ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE);mfree(ptr_client_identity,client_identity_len);mfree(ptr_client_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_context,context_len);return fun_ret};Module.ecc_opaque_ristretto255_sha512_ServerInitWithSecrets=(ke2_raw,state_raw,server_identity,server_identity_len,server_private_key,server_public_key,record_raw,credential_identifier,credential_identifier_len,oprf_seed,ke1_raw,client_identity,client_identity_len,context,context_len,masking_nonce,server_nonce,server_secret,server_keyshare)=>{const ptr_ke2_raw=mput(ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_state_raw=mput(state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_private_key=mput(server_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_record_raw=mput(record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_credential_identifier=mput(credential_identifier,credential_identifier_len);const ptr_oprf_seed=mput(oprf_seed,ecc_opaque_ristretto255_sha512_Nh);const ptr_ke1_raw=mput(ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_context=mput(context,context_len);const ptr_masking_nonce=mput(masking_nonce,ecc_opaque_ristretto255_sha512_Nn);const ptr_server_nonce=mput(server_nonce,ecc_opaque_ristretto255_sha512_Nn);const ptr_server_secret=mput(server_secret,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_keyshare=mput(server_keyshare,ecc_opaque_ristretto255_sha512_Npk);_ecc_opaque_ristretto255_sha512_ServerInitWithSecrets(ptr_ke2_raw,ptr_state_raw,ptr_server_identity,server_identity_len,ptr_server_private_key,ptr_server_public_key,ptr_record_raw,ptr_credential_identifier,credential_identifier_len,ptr_oprf_seed,ptr_ke1_raw,ptr_client_identity,client_identity_len,ptr_context,context_len,ptr_masking_nonce,ptr_server_nonce,ptr_server_secret,ptr_server_keyshare);mget(ke2_raw,ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mget(state_raw,ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_credential_identifier,credential_identifier_len);mfree(ptr_oprf_seed,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_client_identity,client_identity_len);mfree(ptr_context,context_len);mfree(ptr_masking_nonce,ecc_opaque_ristretto255_sha512_Nn);mfree(ptr_server_nonce,ecc_opaque_ristretto255_sha512_Nn);mfree(ptr_server_secret,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_keyshare,ecc_opaque_ristretto255_sha512_Npk)};Module.ecc_opaque_ristretto255_sha512_ServerInit=(ke2_raw,state_raw,server_identity,server_identity_len,server_private_key,server_public_key,record_raw,credential_identifier,credential_identifier_len,oprf_seed,ke1_raw,client_identity,client_identity_len,context,context_len)=>{const ptr_ke2_raw=mput(ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_state_raw=mput(state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_private_key=mput(server_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_record_raw=mput(record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);const ptr_credential_identifier=mput(credential_identifier,credential_identifier_len);const ptr_oprf_seed=mput(oprf_seed,ecc_opaque_ristretto255_sha512_Nh);const ptr_ke1_raw=mput(ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_context=mput(context,context_len);_ecc_opaque_ristretto255_sha512_ServerInit(ptr_ke2_raw,ptr_state_raw,ptr_server_identity,server_identity_len,ptr_server_private_key,ptr_server_public_key,ptr_record_raw,ptr_credential_identifier,credential_identifier_len,ptr_oprf_seed,ptr_ke1_raw,ptr_client_identity,client_identity_len,ptr_context,context_len);mget(ke2_raw,ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mget(state_raw,ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_record_raw,ecc_opaque_ristretto255_sha512_REGISTRATIONRECORDSIZE);mfree(ptr_credential_identifier,credential_identifier_len);mfree(ptr_oprf_seed,ecc_opaque_ristretto255_sha512_Nh);mfree(ptr_ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_client_identity,client_identity_len);mfree(ptr_context,context_len)};Module.ecc_opaque_ristretto255_sha512_ServerFinish=(session_key,state,ke3)=>{const ptr_session_key=mput(session_key,64);const ptr_state=mput(state,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);const ptr_ke3=mput(ke3,ecc_opaque_ristretto255_sha512_KE3SIZE);const fun_ret=_ecc_opaque_ristretto255_sha512_ServerFinish(ptr_session_key,ptr_state,ptr_ke3);mget(session_key,ptr_session_key,64);mget(state,ptr_state,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_session_key,64);mfree(ptr_state,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_ke3,ecc_opaque_ristretto255_sha512_KE3SIZE);return fun_ret};Module.ecc_opaque_ristretto255_sha512_3DH_ResponseWithSecrets=(ke2_raw,state_raw,server_identity,server_identity_len,server_private_key,server_public_key,client_identity,client_identity_len,client_public_key,ke1_raw,credential_response_raw,context,context_len,server_nonce,server_secret,server_keyshare)=>{const ptr_ke2_raw=mput(ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_state_raw=mput(state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_private_key=mput(server_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_ke1_raw=mput(ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_credential_response_raw=mput(credential_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);const ptr_context=mput(context,context_len);const ptr_server_nonce=mput(server_nonce,ecc_opaque_ristretto255_sha512_Nn);const ptr_server_secret=mput(server_secret,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_keyshare=mput(server_keyshare,ecc_opaque_ristretto255_sha512_Npk);_ecc_opaque_ristretto255_sha512_3DH_ResponseWithSecrets(ptr_ke2_raw,ptr_state_raw,ptr_server_identity,server_identity_len,ptr_server_private_key,ptr_server_public_key,ptr_client_identity,client_identity_len,ptr_client_public_key,ptr_ke1_raw,ptr_credential_response_raw,ptr_context,context_len,ptr_server_nonce,ptr_server_secret,ptr_server_keyshare);mget(ke2_raw,ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mget(state_raw,ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_client_identity,client_identity_len);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_credential_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_context,context_len);mfree(ptr_server_nonce,ecc_opaque_ristretto255_sha512_Nn);mfree(ptr_server_secret,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_keyshare,ecc_opaque_ristretto255_sha512_Npk)};Module.ecc_opaque_ristretto255_sha512_3DH_Response=(ke2_raw,state_raw,server_identity,server_identity_len,server_private_key,server_public_key,client_identity,client_identity_len,client_public_key,ke1_raw,credential_response_raw,context,context_len)=>{const ptr_ke2_raw=mput(ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);const ptr_state_raw=mput(state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);const ptr_server_identity=mput(server_identity,server_identity_len);const ptr_server_private_key=mput(server_private_key,ecc_opaque_ristretto255_sha512_Nsk);const ptr_server_public_key=mput(server_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_client_identity=mput(client_identity,client_identity_len);const ptr_client_public_key=mput(client_public_key,ecc_opaque_ristretto255_sha512_Npk);const ptr_ke1_raw=mput(ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);const ptr_credential_response_raw=mput(credential_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);const ptr_context=mput(context,context_len);_ecc_opaque_ristretto255_sha512_3DH_Response(ptr_ke2_raw,ptr_state_raw,ptr_server_identity,server_identity_len,ptr_server_private_key,ptr_server_public_key,ptr_client_identity,client_identity_len,ptr_client_public_key,ptr_ke1_raw,ptr_credential_response_raw,ptr_context,context_len);mget(ke2_raw,ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mget(state_raw,ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_ke2_raw,ecc_opaque_ristretto255_sha512_KE2SIZE);mfree(ptr_state_raw,ecc_opaque_ristretto255_sha512_SERVERSTATESIZE);mfree(ptr_server_identity,server_identity_len);mfree(ptr_server_private_key,ecc_opaque_ristretto255_sha512_Nsk);mfree(ptr_server_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_client_identity,client_identity_len);mfree(ptr_client_public_key,ecc_opaque_ristretto255_sha512_Npk);mfree(ptr_ke1_raw,ecc_opaque_ristretto255_sha512_KE1SIZE);mfree(ptr_credential_response_raw,ecc_opaque_ristretto255_sha512_CREDENTIALRESPONSESIZE);mfree(ptr_context,context_len)};const ecc_sign_ed25519_SIGNATURESIZE=64;Module.ecc_sign_ed25519_SIGNATURESIZE=ecc_sign_ed25519_SIGNATURESIZE;const ecc_sign_ed25519_SEEDSIZE=32;Module.ecc_sign_ed25519_SEEDSIZE=ecc_sign_ed25519_SEEDSIZE;const ecc_sign_ed25519_PUBLICKEYSIZE=32;Module.ecc_sign_ed25519_PUBLICKEYSIZE=ecc_sign_ed25519_PUBLICKEYSIZE;const ecc_sign_ed25519_SECRETKEYSIZE=64;Module.ecc_sign_ed25519_SECRETKEYSIZE=ecc_sign_ed25519_SECRETKEYSIZE;const ecc_sign_eth_bls_PRIVATEKEYSIZE=32;Module.ecc_sign_eth_bls_PRIVATEKEYSIZE=ecc_sign_eth_bls_PRIVATEKEYSIZE;const ecc_sign_eth_bls_PUBLICKEYSIZE=48;Module.ecc_sign_eth_bls_PUBLICKEYSIZE=ecc_sign_eth_bls_PUBLICKEYSIZE;const ecc_sign_eth_bls_SIGNATURESIZE=96;Module.ecc_sign_eth_bls_SIGNATURESIZE=ecc_sign_eth_bls_SIGNATURESIZE;Module.ecc_sign_ed25519_Sign=(signature,message,message_len,sk)=>{const ptr_signature=mput(signature,ecc_sign_ed25519_SIGNATURESIZE);const ptr_message=mput(message,message_len);const ptr_sk=mput(sk,ecc_sign_ed25519_SECRETKEYSIZE);_ecc_sign_ed25519_Sign(ptr_signature,ptr_message,message_len,ptr_sk);mget(signature,ptr_signature,ecc_sign_ed25519_SIGNATURESIZE);mfree(ptr_signature,ecc_sign_ed25519_SIGNATURESIZE);mfree(ptr_message,message_len);mfree(ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE)};Module.ecc_sign_ed25519_Verify=(signature,message,message_len,pk)=>{const ptr_signature=mput(signature,ecc_sign_ed25519_SIGNATURESIZE);const ptr_message=mput(message,message_len);const ptr_pk=mput(pk,ecc_sign_ed25519_PUBLICKEYSIZE);const fun_ret=_ecc_sign_ed25519_Verify(ptr_signature,ptr_message,message_len,ptr_pk);mfree(ptr_signature,ecc_sign_ed25519_SIGNATURESIZE);mfree(ptr_message,message_len);mfree(ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);return fun_ret};Module.ecc_sign_ed25519_KeyPair=(pk,sk)=>{const ptr_pk=mput(pk,ecc_sign_ed25519_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_sign_ed25519_SECRETKEYSIZE);_ecc_sign_ed25519_KeyPair(ptr_pk,ptr_sk);mget(pk,ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mget(sk,ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE);mfree(ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mfree(ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE)};Module.ecc_sign_ed25519_SeedKeyPair=(pk,sk,seed)=>{const ptr_pk=mput(pk,ecc_sign_ed25519_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_sign_ed25519_SECRETKEYSIZE);const ptr_seed=mput(seed,ecc_sign_ed25519_SEEDSIZE);_ecc_sign_ed25519_SeedKeyPair(ptr_pk,ptr_sk,ptr_seed);mget(pk,ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mget(sk,ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE);mfree(ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mfree(ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE);mfree(ptr_seed,ecc_sign_ed25519_SEEDSIZE)};Module.ecc_sign_ed25519_SkToSeed=(seed,sk)=>{const ptr_seed=mput(seed,ecc_sign_ed25519_SEEDSIZE);const ptr_sk=mput(sk,ecc_sign_ed25519_SECRETKEYSIZE);_ecc_sign_ed25519_SkToSeed(ptr_seed,ptr_sk);mget(seed,ptr_seed,ecc_sign_ed25519_SEEDSIZE);mfree(ptr_seed,ecc_sign_ed25519_SEEDSIZE);mfree(ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE)};Module.ecc_sign_ed25519_SkToPk=(pk,sk)=>{const ptr_pk=mput(pk,ecc_sign_ed25519_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_sign_ed25519_SECRETKEYSIZE);_ecc_sign_ed25519_SkToPk(ptr_pk,ptr_sk);mget(pk,ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mfree(ptr_pk,ecc_sign_ed25519_PUBLICKEYSIZE);mfree(ptr_sk,ecc_sign_ed25519_SECRETKEYSIZE)};Module.ecc_sign_eth_bls_KeyGen=(sk,ikm,ikm_len)=>{const ptr_sk=mput(sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);const ptr_ikm=mput(ikm,ikm_len);_ecc_sign_eth_bls_KeyGen(ptr_sk,ptr_ikm,ikm_len);mget(sk,ptr_sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);mfree(ptr_sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);mfree(ptr_ikm,ikm_len)};Module.ecc_sign_eth_bls_SkToPk=(pk,sk)=>{const ptr_pk=mput(pk,ecc_sign_eth_bls_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);_ecc_sign_eth_bls_SkToPk(ptr_pk,ptr_sk);mget(pk,ptr_pk,ecc_sign_eth_bls_PUBLICKEYSIZE);mfree(ptr_pk,ecc_sign_eth_bls_PUBLICKEYSIZE);mfree(ptr_sk,ecc_sign_eth_bls_PRIVATEKEYSIZE)};Module.ecc_sign_eth_bls_KeyValidate=pk=>{const ptr_pk=mput(pk,ecc_sign_eth_bls_PUBLICKEYSIZE);const fun_ret=_ecc_sign_eth_bls_KeyValidate(ptr_pk);mfree(ptr_pk,ecc_sign_eth_bls_PUBLICKEYSIZE);return fun_ret};Module.ecc_sign_eth_bls_Sign=(signature,sk,message,message_len)=>{const ptr_signature=mput(signature,ecc_sign_eth_bls_SIGNATURESIZE);const ptr_sk=mput(sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);const ptr_message=mput(message,message_len);_ecc_sign_eth_bls_Sign(ptr_signature,ptr_sk,ptr_message,message_len);mget(signature,ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);mfree(ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);mfree(ptr_sk,ecc_sign_eth_bls_PRIVATEKEYSIZE);mfree(ptr_message,message_len)};Module.ecc_sign_eth_bls_Verify=(pk,message,message_len,signature)=>{const ptr_pk=mput(pk,ecc_sign_eth_bls_PUBLICKEYSIZE);const ptr_message=mput(message,message_len);const ptr_signature=mput(signature,ecc_sign_eth_bls_SIGNATURESIZE);const fun_ret=_ecc_sign_eth_bls_Verify(ptr_pk,ptr_message,message_len,ptr_signature);mfree(ptr_pk,ecc_sign_eth_bls_PUBLICKEYSIZE);mfree(ptr_message,message_len);mfree(ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);return fun_ret};Module.ecc_sign_eth_bls_Aggregate=(signature,signatures,n)=>{const ptr_signature=mput(signature,ecc_sign_eth_bls_SIGNATURESIZE);const ptr_signatures=mput(signatures,n*ecc_sign_eth_bls_SIGNATURESIZE);const fun_ret=_ecc_sign_eth_bls_Aggregate(ptr_signature,ptr_signatures,n);mget(signature,ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);mfree(ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);mfree(ptr_signatures,n*ecc_sign_eth_bls_SIGNATURESIZE);return fun_ret};Module.ecc_sign_eth_bls_FastAggregateVerify=(pks,n,message,message_len,signature)=>{const ptr_pks=mput(pks,n*ecc_sign_eth_bls_PUBLICKEYSIZE);const ptr_message=mput(message,message_len);const ptr_signature=mput(signature,ecc_sign_eth_bls_SIGNATURESIZE);const fun_ret=_ecc_sign_eth_bls_FastAggregateVerify(ptr_pks,n,ptr_message,message_len,ptr_signature);mfree(ptr_pks,n*ecc_sign_eth_bls_PUBLICKEYSIZE);mfree(ptr_message,message_len);mfree(ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);return fun_ret};Module.ecc_sign_eth_bls_AggregateVerify=(n,pks,messages,messages_len,signature)=>{const ptr_pks=mput(pks,n*ecc_sign_eth_bls_PUBLICKEYSIZE);const ptr_messages=mput(messages,messages_len);const ptr_signature=mput(signature,ecc_sign_eth_bls_SIGNATURESIZE);const fun_ret=_ecc_sign_eth_bls_AggregateVerify(n,ptr_pks,ptr_messages,messages_len,ptr_signature);mfree(ptr_pks,n*ecc_sign_eth_bls_PUBLICKEYSIZE);mfree(ptr_messages,messages_len);mfree(ptr_signature,ecc_sign_eth_bls_SIGNATURESIZE);return fun_ret};const ecc_frost_ristretto255_sha512_SCALARSIZE=32;Module.ecc_frost_ristretto255_sha512_SCALARSIZE=ecc_frost_ristretto255_sha512_SCALARSIZE;const ecc_frost_ristretto255_sha512_ELEMENTSIZE=32;Module.ecc_frost_ristretto255_sha512_ELEMENTSIZE=ecc_frost_ristretto255_sha512_ELEMENTSIZE;const ecc_frost_ristretto255_sha512_POINTSIZE=64;Module.ecc_frost_ristretto255_sha512_POINTSIZE=ecc_frost_ristretto255_sha512_POINTSIZE;const ecc_frost_ristretto255_sha512_COMMITMENTSIZE=96;Module.ecc_frost_ristretto255_sha512_COMMITMENTSIZE=ecc_frost_ristretto255_sha512_COMMITMENTSIZE;const ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE=64;Module.ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE=ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE;const ecc_frost_ristretto255_sha512_SECRETKEYSIZE=32;Module.ecc_frost_ristretto255_sha512_SECRETKEYSIZE=ecc_frost_ristretto255_sha512_SECRETKEYSIZE;const ecc_frost_ristretto255_sha512_PUBLICKEYSIZE=32;Module.ecc_frost_ristretto255_sha512_PUBLICKEYSIZE=ecc_frost_ristretto255_sha512_PUBLICKEYSIZE;const ecc_frost_ristretto255_sha512_SIGNATURESIZE=64;Module.ecc_frost_ristretto255_sha512_SIGNATURESIZE=ecc_frost_ristretto255_sha512_SIGNATURESIZE;const ecc_frost_ristretto255_sha512_NONCEPAIRSIZE=64;Module.ecc_frost_ristretto255_sha512_NONCEPAIRSIZE=ecc_frost_ristretto255_sha512_NONCEPAIRSIZE;const ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE=64;Module.ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE=ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE;Module.ecc_frost_ristretto255_sha512_nonce_generate_with_randomness=(nonce,secret,random_bytes)=>{const ptr_nonce=mput(nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_secret=mput(secret,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_random_bytes=mput(random_bytes,32);_ecc_frost_ristretto255_sha512_nonce_generate_with_randomness(ptr_nonce,ptr_secret,ptr_random_bytes);mget(nonce,ptr_nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_secret,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_random_bytes,32)};Module.ecc_frost_ristretto255_sha512_nonce_generate=(nonce,secret)=>{const ptr_nonce=mput(nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_secret=mput(secret,ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_nonce_generate(ptr_nonce,ptr_secret);mget(nonce,ptr_nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_nonce,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_secret,ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_derive_interpolating_value=(L_i,x_i,L,L_len)=>{const ptr_L_i=mput(L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_x_i=mput(x_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_L=mput(L,L_len*ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_derive_interpolating_value(ptr_L_i,ptr_x_i,ptr_L,L_len);mget(L_i,ptr_L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_x_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_L,L_len*ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_derive_interpolating_value_with_points=(L_i,x_i,L,L_len)=>{const ptr_L_i=mput(L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_x_i=mput(x_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_L=mput(L,L_len*ecc_frost_ristretto255_sha512_POINTSIZE);_ecc_frost_ristretto255_sha512_derive_interpolating_value_with_points(ptr_L_i,ptr_x_i,ptr_L,L_len);mget(L_i,ptr_L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_L_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_x_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_L,L_len*ecc_frost_ristretto255_sha512_POINTSIZE)};Module.ecc_frost_ristretto255_sha512_encode_group_commitment_list=(out,commitment_list,commitment_list_len)=>{const ptr_out=mput(out,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);_ecc_frost_ristretto255_sha512_encode_group_commitment_list(ptr_out,ptr_commitment_list,commitment_list_len);mget(out,ptr_out,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);mfree(ptr_out,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE)};Module.ecc_frost_ristretto255_sha512_participants_from_commitment_list=(identifiers,commitment_list,commitment_list_len)=>{const ptr_identifiers=mput(identifiers,commitment_list_len*ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);_ecc_frost_ristretto255_sha512_participants_from_commitment_list(ptr_identifiers,ptr_commitment_list,commitment_list_len);mget(identifiers,ptr_identifiers,commitment_list_len*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_identifiers,commitment_list_len*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE)};Module.ecc_frost_ristretto255_sha512_binding_factor_for_participant=(binding_factor,binding_factor_list,binding_factor_list_len,identifier)=>{const ptr_binding_factor=mput(binding_factor,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_binding_factor_list=mput(binding_factor_list,binding_factor_list_len*ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);const ptr_identifier=mput(identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);const fun_ret=_ecc_frost_ristretto255_sha512_binding_factor_for_participant(ptr_binding_factor,ptr_binding_factor_list,binding_factor_list_len,ptr_identifier);mget(binding_factor,ptr_binding_factor,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_binding_factor,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_binding_factor_list,binding_factor_list_len*ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);mfree(ptr_identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);return fun_ret};Module.ecc_frost_ristretto255_sha512_compute_binding_factors=(binding_factor_list,commitment_list,commitment_list_len,msg,msg_len)=>{const ptr_binding_factor_list=mput(binding_factor_list,commitment_list_len*ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);const ptr_msg=mput(msg,msg_len);_ecc_frost_ristretto255_sha512_compute_binding_factors(ptr_binding_factor_list,ptr_commitment_list,commitment_list_len,ptr_msg,msg_len);mget(binding_factor_list,ptr_binding_factor_list,commitment_list_len*ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);mfree(ptr_binding_factor_list,commitment_list_len*ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);mfree(ptr_msg,msg_len)};Module.ecc_frost_ristretto255_sha512_compute_group_commitment=(group_comm,commitment_list,commitment_list_len,binding_factor_list,binding_factor_list_len)=>{const ptr_group_comm=mput(group_comm,ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);const ptr_binding_factor_list=mput(binding_factor_list,ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE);_ecc_frost_ristretto255_sha512_compute_group_commitment(ptr_group_comm,ptr_commitment_list,commitment_list_len,ptr_binding_factor_list,binding_factor_list_len);mget(group_comm,ptr_group_comm,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_group_comm,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);mfree(ptr_binding_factor_list,ecc_frost_ristretto255_sha512_BINDINGFACTORSIZE)};Module.ecc_frost_ristretto255_sha512_compute_challenge=(challenge,group_commitment,group_public_key,msg,msg_len)=>{const ptr_challenge=mput(challenge,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_group_commitment=mput(group_commitment,ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_group_public_key=mput(group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const ptr_msg=mput(msg,msg_len);_ecc_frost_ristretto255_sha512_compute_challenge(ptr_challenge,ptr_group_commitment,ptr_group_public_key,ptr_msg,msg_len);mget(challenge,ptr_challenge,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_challenge,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_group_commitment,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);mfree(ptr_msg,msg_len)};Module.ecc_frost_ristretto255_sha512_commit_with_randomness=(nonce,comm,sk_i,hiding_nonce_randomness,binding_nonce_randomness)=>{const ptr_nonce=mput(nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);const ptr_comm=mput(comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);const ptr_sk_i=mput(sk_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_hiding_nonce_randomness=mput(hiding_nonce_randomness,32);const ptr_binding_nonce_randomness=mput(binding_nonce_randomness,32);_ecc_frost_ristretto255_sha512_commit_with_randomness(ptr_nonce,ptr_comm,ptr_sk_i,ptr_hiding_nonce_randomness,ptr_binding_nonce_randomness);mget(nonce,ptr_nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);mget(comm,ptr_comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);mfree(ptr_nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);mfree(ptr_comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);mfree(ptr_sk_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_hiding_nonce_randomness,32);mfree(ptr_binding_nonce_randomness,32)};Module.ecc_frost_ristretto255_sha512_commit=(nonce,comm,sk_i)=>{const ptr_nonce=mput(nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);const ptr_comm=mput(comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);const ptr_sk_i=mput(sk_i,ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_commit(ptr_nonce,ptr_comm,ptr_sk_i);mget(nonce,ptr_nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);mget(comm,ptr_comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);mfree(ptr_nonce,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);mfree(ptr_comm,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);mfree(ptr_sk_i,ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_sign=(sig_share,identifier,sk_i,group_public_key,nonce_i,msg,msg_len,commitment_list,commitment_list_len)=>{const ptr_sig_share=mput(sig_share,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_identifier=mput(identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_sk_i=mput(sk_i,ecc_frost_ristretto255_sha512_SECRETKEYSIZE);const ptr_group_public_key=mput(group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const ptr_nonce_i=mput(nonce_i,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);const ptr_msg=mput(msg,msg_len);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);_ecc_frost_ristretto255_sha512_sign(ptr_sig_share,ptr_identifier,ptr_sk_i,ptr_group_public_key,ptr_nonce_i,ptr_msg,msg_len,ptr_commitment_list,commitment_list_len);mget(sig_share,ptr_sig_share,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_sig_share,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_sk_i,ecc_frost_ristretto255_sha512_SECRETKEYSIZE);mfree(ptr_group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);mfree(ptr_nonce_i,ecc_frost_ristretto255_sha512_NONCEPAIRSIZE);mfree(ptr_msg,msg_len);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE)};Module.ecc_frost_ristretto255_sha512_aggregate=(signature,commitment_list,commitment_list_len,msg,msg_len,sig_shares,sig_shares_len)=>{const ptr_signature=mput(signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const ptr_msg=mput(msg,msg_len);const ptr_sig_shares=mput(sig_shares,sig_shares_len*ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_aggregate(ptr_signature,ptr_commitment_list,commitment_list_len,ptr_msg,msg_len,ptr_sig_shares,sig_shares_len);mget(signature,ptr_signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);mfree(ptr_signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);mfree(ptr_msg,msg_len);mfree(ptr_sig_shares,sig_shares_len*ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_verify_signature_share=(identifier,public_key_share_i,comm_i,sig_share_i,commitment_list,commitment_list_len,group_public_key,msg,msg_len)=>{const ptr_identifier=mput(identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_public_key_share_i=mput(public_key_share_i,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const ptr_comm_i=mput(comm_i,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);const ptr_sig_share_i=mput(sig_share_i,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_commitment_list=mput(commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);const ptr_group_public_key=mput(group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const ptr_msg=mput(msg,msg_len);const fun_ret=_ecc_frost_ristretto255_sha512_verify_signature_share(ptr_identifier,ptr_public_key_share_i,ptr_comm_i,ptr_sig_share_i,ptr_commitment_list,commitment_list_len,ptr_group_public_key,ptr_msg,msg_len);mfree(ptr_identifier,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_public_key_share_i,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);mfree(ptr_comm_i,ecc_frost_ristretto255_sha512_NONCECOMMITMENTPAIRSIZE);mfree(ptr_sig_share_i,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_commitment_list,commitment_list_len*ecc_frost_ristretto255_sha512_COMMITMENTSIZE);mfree(ptr_group_public_key,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);mfree(ptr_msg,msg_len);return fun_ret};Module.ecc_frost_ristretto255_sha512_H1=(h1,m,m_len)=>{const ptr_h1=mput(h1,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m=mput(m,m_len);_ecc_frost_ristretto255_sha512_H1(ptr_h1,ptr_m,m_len);mget(h1,ptr_h1,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h1,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m,m_len)};Module.ecc_frost_ristretto255_sha512_H1_2=(h1,m1,m1_len,m2,m2_len)=>{const ptr_h1=mput(h1,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m1=mput(m1,m1_len);const ptr_m2=mput(m2,m2_len);_ecc_frost_ristretto255_sha512_H1_2(ptr_h1,ptr_m1,m1_len,ptr_m2,m2_len);mget(h1,ptr_h1,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h1,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m1,m1_len);mfree(ptr_m2,m2_len)};Module.ecc_frost_ristretto255_sha512_H2=(h2,m,m_len)=>{const ptr_h2=mput(h2,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m=mput(m,m_len);_ecc_frost_ristretto255_sha512_H2(ptr_h2,ptr_m,m_len);mget(h2,ptr_h2,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h2,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m,m_len)};Module.ecc_frost_ristretto255_sha512_H2_3=(h2,m1,m1_len,m2,m2_len,m3,m3_len)=>{const ptr_h2=mput(h2,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m1=mput(m1,m1_len);const ptr_m2=mput(m2,m2_len);const ptr_m3=mput(m3,m3_len);_ecc_frost_ristretto255_sha512_H2_3(ptr_h2,ptr_m1,m1_len,ptr_m2,m2_len,ptr_m3,m3_len);mget(h2,ptr_h2,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h2,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m1,m1_len);mfree(ptr_m2,m2_len);mfree(ptr_m3,m3_len)};Module.ecc_frost_ristretto255_sha512_H3=(h3,m,m_len)=>{const ptr_h3=mput(h3,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m=mput(m,m_len);_ecc_frost_ristretto255_sha512_H3(ptr_h3,ptr_m,m_len);mget(h3,ptr_h3,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h3,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m,m_len)};Module.ecc_frost_ristretto255_sha512_H3_2=(h3,m1,m1_len,m2,m2_len)=>{const ptr_h3=mput(h3,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_m1=mput(m1,m1_len);const ptr_m2=mput(m2,m2_len);_ecc_frost_ristretto255_sha512_H3_2(ptr_h3,ptr_m1,m1_len,ptr_m2,m2_len);mget(h3,ptr_h3,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_h3,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_m1,m1_len);mfree(ptr_m2,m2_len)};Module.ecc_frost_ristretto255_sha512_H4=(h4,m,m_len)=>{const ptr_h4=mput(h4,64);const ptr_m=mput(m,m_len);_ecc_frost_ristretto255_sha512_H4(ptr_h4,ptr_m,m_len);mget(h4,ptr_h4,64);mfree(ptr_h4,64);mfree(ptr_m,m_len)};Module.ecc_frost_ristretto255_sha512_H5=(h5,m,m_len)=>{const ptr_h5=mput(h5,64);const ptr_m=mput(m,m_len);_ecc_frost_ristretto255_sha512_H5(ptr_h5,ptr_m,m_len);mget(h5,ptr_h5,64);mfree(ptr_h5,64);mfree(ptr_m,m_len)};Module.ecc_frost_ristretto255_sha512_prime_order_sign=(signature,msg,msg_len,SK)=>{const ptr_signature=mput(signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);const ptr_msg=mput(msg,msg_len);const ptr_SK=mput(SK,ecc_frost_ristretto255_sha512_SECRETKEYSIZE);_ecc_frost_ristretto255_sha512_prime_order_sign(ptr_signature,ptr_msg,msg_len,ptr_SK);mget(signature,ptr_signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);mfree(ptr_signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);mfree(ptr_msg,msg_len);mfree(ptr_SK,ecc_frost_ristretto255_sha512_SECRETKEYSIZE)};Module.ecc_frost_ristretto255_sha512_prime_order_verify=(msg,msg_len,signature,PK)=>{const ptr_msg=mput(msg,msg_len);const ptr_signature=mput(signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);const ptr_PK=mput(PK,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);const fun_ret=_ecc_frost_ristretto255_sha512_prime_order_verify(ptr_msg,msg_len,ptr_signature,ptr_PK);mfree(ptr_msg,msg_len);mfree(ptr_signature,ecc_frost_ristretto255_sha512_SIGNATURESIZE);mfree(ptr_PK,ecc_frost_ristretto255_sha512_PUBLICKEYSIZE);return fun_ret};Module.ecc_frost_ristretto255_sha512_trusted_dealer_keygen_with_coefficients=(participant_private_keys,group_public_key,vss_commitment,polynomial_coefficients,secret_key,n,t,coefficients)=>{const ptr_participant_private_keys=mput(participant_private_keys,n*ecc_frost_ristretto255_sha512_POINTSIZE);const ptr_group_public_key=mput(group_public_key,ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_vss_commitment=mput(vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_polynomial_coefficients=mput(polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_secret_key=mput(secret_key,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_coefficients=mput(coefficients,(t-1)*ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_trusted_dealer_keygen_with_coefficients(ptr_participant_private_keys,ptr_group_public_key,ptr_vss_commitment,ptr_polynomial_coefficients,ptr_secret_key,n,t,ptr_coefficients);mget(participant_private_keys,ptr_participant_private_keys,n*ecc_frost_ristretto255_sha512_POINTSIZE);mget(group_public_key,ptr_group_public_key,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mget(vss_commitment,ptr_vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mget(polynomial_coefficients,ptr_polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_participant_private_keys,n*ecc_frost_ristretto255_sha512_POINTSIZE);mfree(ptr_group_public_key,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_secret_key,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_coefficients,(t-1)*ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_secret_share_shard=(secret_key_shares,polynomial_coefficients,s,coefficients,n,t)=>{const ptr_secret_key_shares=mput(secret_key_shares,n*ecc_frost_ristretto255_sha512_POINTSIZE);const ptr_polynomial_coefficients=mput(polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_s=mput(s,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_coefficients=mput(coefficients,(t-1)*ecc_frost_ristretto255_sha512_SCALARSIZE);const fun_ret=_ecc_frost_ristretto255_sha512_secret_share_shard(ptr_secret_key_shares,ptr_polynomial_coefficients,ptr_s,ptr_coefficients,n,t);mget(secret_key_shares,ptr_secret_key_shares,n*ecc_frost_ristretto255_sha512_POINTSIZE);mget(polynomial_coefficients,ptr_polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_secret_key_shares,n*ecc_frost_ristretto255_sha512_POINTSIZE);mfree(ptr_polynomial_coefficients,t*ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_s,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_coefficients,(t-1)*ecc_frost_ristretto255_sha512_SCALARSIZE);return fun_ret};Module.ecc_frost_ristretto255_sha512_secret_share_combine=(s,shares,shares_len)=>{const ptr_s=mput(s,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_shares=mput(shares,shares_len*ecc_frost_ristretto255_sha512_POINTSIZE);const fun_ret=_ecc_frost_ristretto255_sha512_secret_share_combine(ptr_s,ptr_shares,shares_len);mget(s,ptr_s,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_s,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_shares,shares_len*ecc_frost_ristretto255_sha512_POINTSIZE);return fun_ret};Module.ecc_frost_ristretto255_sha512_polynomial_evaluate=(value,x,coeffs,coeffs_len)=>{const ptr_value=mput(value,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_x=mput(x,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_coeffs=mput(coeffs,coeffs_len*ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_polynomial_evaluate(ptr_value,ptr_x,ptr_coeffs,coeffs_len);mget(value,ptr_value,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_value,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_x,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_coeffs,coeffs_len*ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_polynomial_interpolate_constant=(f_zero,points,points_len)=>{const ptr_f_zero=mput(f_zero,ecc_frost_ristretto255_sha512_SCALARSIZE);const ptr_points=mput(points,points_len*ecc_frost_ristretto255_sha512_POINTSIZE);_ecc_frost_ristretto255_sha512_polynomial_interpolate_constant(ptr_f_zero,ptr_points,points_len);mget(f_zero,ptr_f_zero,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_f_zero,ecc_frost_ristretto255_sha512_SCALARSIZE);mfree(ptr_points,points_len*ecc_frost_ristretto255_sha512_POINTSIZE)};Module.ecc_frost_ristretto255_sha512_vss_commit=(vss_commitment,coeffs,coeffs_len)=>{const ptr_vss_commitment=mput(vss_commitment,coeffs_len*ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_coeffs=mput(coeffs,coeffs_len*ecc_frost_ristretto255_sha512_SCALARSIZE);_ecc_frost_ristretto255_sha512_vss_commit(ptr_vss_commitment,ptr_coeffs,coeffs_len);mget(vss_commitment,ptr_vss_commitment,coeffs_len*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_vss_commitment,coeffs_len*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_coeffs,coeffs_len*ecc_frost_ristretto255_sha512_SCALARSIZE)};Module.ecc_frost_ristretto255_sha512_vss_verify=(share_i,vss_commitment,t)=>{const ptr_share_i=mput(share_i,ecc_frost_ristretto255_sha512_POINTSIZE);const ptr_vss_commitment=mput(vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);const fun_ret=_ecc_frost_ristretto255_sha512_vss_verify(ptr_share_i,ptr_vss_commitment,t);mfree(ptr_share_i,ecc_frost_ristretto255_sha512_POINTSIZE);mfree(ptr_vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);return fun_ret};Module.ecc_frost_ristretto255_sha512_derive_group_info=(PK,participant_public_keys,n,t,vss_commitment)=>{const ptr_PK=mput(PK,ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_participant_public_keys=mput(participant_public_keys,n*ecc_frost_ristretto255_sha512_ELEMENTSIZE);const ptr_vss_commitment=mput(vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE);_ecc_frost_ristretto255_sha512_derive_group_info(ptr_PK,ptr_participant_public_keys,n,t,ptr_vss_commitment);mget(PK,ptr_PK,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mget(participant_public_keys,ptr_participant_public_keys,n*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_PK,ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_participant_public_keys,n*ecc_frost_ristretto255_sha512_ELEMENTSIZE);mfree(ptr_vss_commitment,t*ecc_frost_ristretto255_sha512_ELEMENTSIZE)};const ecc_pre_schema1_MESSAGESIZE=576;Module.ecc_pre_schema1_MESSAGESIZE=ecc_pre_schema1_MESSAGESIZE;const ecc_pre_schema1_SEEDSIZE=32;Module.ecc_pre_schema1_SEEDSIZE=ecc_pre_schema1_SEEDSIZE;const ecc_pre_schema1_PUBLICKEYSIZE=48;Module.ecc_pre_schema1_PUBLICKEYSIZE=ecc_pre_schema1_PUBLICKEYSIZE;const ecc_pre_schema1_PRIVATEKEYSIZE=32;Module.ecc_pre_schema1_PRIVATEKEYSIZE=ecc_pre_schema1_PRIVATEKEYSIZE;const ecc_pre_schema1_SIGNINGPUBLICKEYSIZE=32;Module.ecc_pre_schema1_SIGNINGPUBLICKEYSIZE=ecc_pre_schema1_SIGNINGPUBLICKEYSIZE;const ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE=64;Module.ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE=ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE;const ecc_pre_schema1_SIGNATURESIZE=64;Module.ecc_pre_schema1_SIGNATURESIZE=ecc_pre_schema1_SIGNATURESIZE;const ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE=752;Module.ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE=ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE;const ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE=2096;Module.ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE=ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE;const ecc_pre_schema1_REKEYSIZE=816;Module.ecc_pre_schema1_REKEYSIZE=ecc_pre_schema1_REKEYSIZE;Module.ecc_pre_schema1_MessageGen=m=>{const ptr_m=mput(m,ecc_pre_schema1_MESSAGESIZE);_ecc_pre_schema1_MessageGen(ptr_m);mget(m,ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_m,ecc_pre_schema1_MESSAGESIZE)};Module.ecc_pre_schema1_DeriveKey=(pk,sk,seed)=>{const ptr_pk=mput(pk,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_pre_schema1_PRIVATEKEYSIZE);const ptr_seed=mput(seed,ecc_pre_schema1_SEEDSIZE);_ecc_pre_schema1_DeriveKey(ptr_pk,ptr_sk,ptr_seed);mget(pk,ptr_pk,ecc_pre_schema1_PUBLICKEYSIZE);mget(sk,ptr_sk,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_pk,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_sk,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_seed,ecc_pre_schema1_SEEDSIZE)};Module.ecc_pre_schema1_KeyGen=(pk,sk)=>{const ptr_pk=mput(pk,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_sk=mput(sk,ecc_pre_schema1_PRIVATEKEYSIZE);_ecc_pre_schema1_KeyGen(ptr_pk,ptr_sk);mget(pk,ptr_pk,ecc_pre_schema1_PUBLICKEYSIZE);mget(sk,ptr_sk,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_pk,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_sk,ecc_pre_schema1_PRIVATEKEYSIZE)};Module.ecc_pre_schema1_DeriveSigningKey=(spk,ssk,seed)=>{const ptr_spk=mput(spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk=mput(ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);const ptr_seed=mput(seed,ecc_pre_schema1_SEEDSIZE);_ecc_pre_schema1_DeriveSigningKey(ptr_spk,ptr_ssk,ptr_seed);mget(spk,ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mget(ssk,ptr_ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);mfree(ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);mfree(ptr_seed,ecc_pre_schema1_SEEDSIZE)};Module.ecc_pre_schema1_SigningKeyGen=(spk,ssk)=>{const ptr_spk=mput(spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk=mput(ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);_ecc_pre_schema1_SigningKeyGen(ptr_spk,ptr_ssk);mget(spk,ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mget(ssk,ptr_ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);mfree(ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE)};Module.ecc_pre_schema1_EncryptWithSeed=(C_j_raw,m,pk_j,spk_i,ssk_i,seed)=>{const ptr_C_j_raw=mput(C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);const ptr_m=mput(m,ecc_pre_schema1_MESSAGESIZE);const ptr_pk_j=mput(pk_j,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_spk_i=mput(spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk_i=mput(ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);const ptr_seed=mput(seed,ecc_pre_schema1_SEEDSIZE);_ecc_pre_schema1_EncryptWithSeed(ptr_C_j_raw,ptr_m,ptr_pk_j,ptr_spk_i,ptr_ssk_i,ptr_seed);mget(C_j_raw,ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_pk_j,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);mfree(ptr_seed,ecc_pre_schema1_SEEDSIZE)};Module.ecc_pre_schema1_Encrypt=(C_j_raw,m,pk_j,spk_i,ssk_i)=>{const ptr_C_j_raw=mput(C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);const ptr_m=mput(m,ecc_pre_schema1_MESSAGESIZE);const ptr_pk_j=mput(pk_j,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_spk_i=mput(spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk_i=mput(ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);_ecc_pre_schema1_Encrypt(ptr_C_j_raw,ptr_m,ptr_pk_j,ptr_spk_i,ptr_ssk_i);mget(C_j_raw,ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_pk_j,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE)};Module.ecc_pre_schema1_ReKeyGen=(tk_i_j_raw,sk_i,pk_j,spk_i,ssk_i)=>{const ptr_tk_i_j_raw=mput(tk_i_j_raw,ecc_pre_schema1_REKEYSIZE);const ptr_sk_i=mput(sk_i,ecc_pre_schema1_PRIVATEKEYSIZE);const ptr_pk_j=mput(pk_j,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_spk_i=mput(spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk_i=mput(ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);_ecc_pre_schema1_ReKeyGen(ptr_tk_i_j_raw,ptr_sk_i,ptr_pk_j,ptr_spk_i,ptr_ssk_i);mget(tk_i_j_raw,ptr_tk_i_j_raw,ecc_pre_schema1_REKEYSIZE);mfree(ptr_tk_i_j_raw,ecc_pre_schema1_REKEYSIZE);mfree(ptr_sk_i,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_pk_j,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk_i,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE)};Module.ecc_pre_schema1_ReEncrypt=(C_j_raw,C_i_raw,tk_i_j_raw,spk_i,pk_j,spk,ssk)=>{const ptr_C_j_raw=mput(C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE);const ptr_C_i_raw=mput(C_i_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);const ptr_tk_i_j_raw=mput(tk_i_j_raw,ecc_pre_schema1_REKEYSIZE);const ptr_spk_i=mput(spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_pk_j=mput(pk_j,ecc_pre_schema1_PUBLICKEYSIZE);const ptr_spk=mput(spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const ptr_ssk=mput(ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);const fun_ret=_ecc_pre_schema1_ReEncrypt(ptr_C_j_raw,ptr_C_i_raw,ptr_tk_i_j_raw,ptr_spk_i,ptr_pk_j,ptr_spk,ptr_ssk);mget(C_j_raw,ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE);mfree(ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE);mfree(ptr_C_i_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_tk_i_j_raw,ecc_pre_schema1_REKEYSIZE);mfree(ptr_spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_pk_j,ecc_pre_schema1_PUBLICKEYSIZE);mfree(ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);mfree(ptr_ssk,ecc_pre_schema1_SIGNINGPRIVATEKEYSIZE);return fun_ret};Module.ecc_pre_schema1_DecryptLevel1=(m,C_i_raw,sk_i,spk_i)=>{const ptr_m=mput(m,ecc_pre_schema1_MESSAGESIZE);const ptr_C_i_raw=mput(C_i_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);const ptr_sk_i=mput(sk_i,ecc_pre_schema1_PRIVATEKEYSIZE);const ptr_spk_i=mput(spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const fun_ret=_ecc_pre_schema1_DecryptLevel1(ptr_m,ptr_C_i_raw,ptr_sk_i,ptr_spk_i);mget(m,ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_C_i_raw,ecc_pre_schema1_CIPHERTEXTLEVEL1SIZE);mfree(ptr_sk_i,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_spk_i,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);return fun_ret};Module.ecc_pre_schema1_DecryptLevel2=(m,C_j_raw,sk_j,spk)=>{const ptr_m=mput(m,ecc_pre_schema1_MESSAGESIZE);const ptr_C_j_raw=mput(C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE);const ptr_sk_j=mput(sk_j,ecc_pre_schema1_PRIVATEKEYSIZE);const ptr_spk=mput(spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);const fun_ret=_ecc_pre_schema1_DecryptLevel2(ptr_m,ptr_C_j_raw,ptr_sk_j,ptr_spk);mget(m,ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_m,ecc_pre_schema1_MESSAGESIZE);mfree(ptr_C_j_raw,ecc_pre_schema1_CIPHERTEXTLEVEL2SIZE);mfree(ptr_sk_j,ecc_pre_schema1_PRIVATEKEYSIZE);mfree(ptr_spk,ecc_pre_schema1_SIGNINGPUBLICKEYSIZE);return fun_ret}; return libecc_module.ready diff --git a/bindings/js/opaque.test.js b/bindings/js/opaque.test.js index bb4cf531..01a06952 100644 --- a/bindings/js/opaque.test.js +++ b/bindings/js/opaque.test.js @@ -8,9 +8,10 @@ import { hex2bin, bin2hex, + str2bin, randombytes, libecc_promise, - libecc, str2bin, + libecc, } from "./util.js"; import { opaque_RecoverPublicKey, @@ -58,7 +59,7 @@ describe("OPAQUE(ristretto255, SHA-512)", () => { const request = opaque_CreateRegistrationRequestWithBlind(clientInputs.password, blindRegistration); const registrationRequest = request.registrationRequest; - assert.strictEqual(bin2hex(registrationRequest), "62235332ae15911d69812e9eeb6ac8fe4fa0ffc7590831d5c5e1631e01049276"); + assert.strictEqual(bin2hex(registrationRequest), "5059ff249eb1551b7ce4991f3336205bde44a105a032e747d21bf382e75f7a71"); const registrationResponse = opaque_CreateRegistrationResponse( registrationRequest, @@ -67,7 +68,7 @@ describe("OPAQUE(ristretto255, SHA-512)", () => { serverInputs.oprfSeed, ); - assert.strictEqual(bin2hex(registrationResponse), "6268d13fea98ebc8e6b88d0b3cc8a78d2ac8fa8efc741cd2e966940c52c31c71b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78"); + assert.strictEqual(bin2hex(registrationResponse), "7408a268083e03abc7097fc05b587834539065e86fb0c7b6342fcf5e01e5b019b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78"); const envelopeNonce = hex2bin("ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec"); const finalizeRequest = opaque_FinalizeRegistrationRequestWithNonce( @@ -82,7 +83,7 @@ describe("OPAQUE(ristretto255, SHA-512)", () => { const registrationRecord = finalizeRequest.registrationRecord; const exportKey = finalizeRequest.exportKey; - assert.strictEqual(bin2hex(registrationRecord), "8e5e5c04b2154336fa52ac691eb6df5f59ec7315b8467b0bba1ed4f413043b449afea0ddedbbce5c083c5d5d02aa5218bcc7100f541d841bb5974f084f7aa0b929399feb39efd17e13ce1035cbb23251da3b5126a574b239c7b73519d8847e2fac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec8e8bde8d4eb9e171240b3d2dfb43ef93efe5cd15412614b3df11ecb58890047e2fa31c283e7c58c40495226cfa0ed7756e493431b85c464aad7fdaaf1ab41ac7"); + assert.strictEqual(bin2hex(registrationRecord), "2ec892bdbf9b3e2ea834be9eb11f5d187e64ba661ec041c0a3b66db8b7d6cc301ac5844383c7708077dea41cbefe2fa15724f449e535dd7dd562e66f5ecfb95864eadddec9db5874959905117dad40a4524111849799281fefe3c51fa82785c5ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfecb9dbe7d48cf714fc3533becab6faf60b783c94d258477eb74ecc453413bf61c53fd58f0fb3c1175410b674c02e1b59b2d729a865b709db3dc4ee2bb45703d5a8"); const clientState = new Uint8Array(libecc.ecc_opaque_ristretto255_sha512_CLIENTSTATESIZE); const blindLogin = hex2bin("6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4b0790308"); @@ -98,7 +99,7 @@ describe("OPAQUE(ristretto255, SHA-512)", () => { clientKeyshare ); - assert.strictEqual(bin2hex(ke1), "1670c409ebb699a6012629451d218d42a34eddba1d2978536c45e199c60a0b4eda7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663"); + assert.strictEqual(bin2hex(ke1), "c4dedb0ba6ed5d965d6f250fbe554cd45cba5dfcce3ce836e4aee778aa3cd44dda7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663"); const serverState = new Uint8Array(libecc.ecc_opaque_ristretto255_sha512_SERVERSTATESIZE); const maskingNonce = hex2bin("38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d"); @@ -122,7 +123,7 @@ describe("OPAQUE(ristretto255, SHA-512)", () => { serverKeyshare, ); - assert.strictEqual(bin2hex(ke2), "36b4d06f413b72004392d7359cd6a998c667533203d6a671afe81ca09a282f7238fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d378cc6b0113bf0b6afd9e0728e62ba793d5d25bb97794c154d036bf09c98c472368bffc4e35b7dc48f5a32dd3fede3b9e563f7a170d0e082d02c0a105cdf1ee0ea1928202076ff37ce174f2c669d52d8adc424e925a3bc9a4ca5ce16d9b7a1791ff7e47a0d2fa42424e5476f8cfa7bb20b2796ad877295a996ffcb049313f4e971cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe402848f3b062916ea7666973222944dabe1027e5bea84b1b5d46dab64b1c6eda3170d4c9adba8afa61eb4153061d528b39102f32ecda7d7625dbc229e6630a607e03"); + assert.strictEqual(bin2hex(ke2), "7e308140890bcde30cbcea28b01ea1ecfbd077cff62c4def8efa075aabcbb47138fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6dd6ec60bcdb26dc455ddf3e718f1020490c192d70dfc7e403981179d8073d1146a4f9aa1ced4e4cd984c657eb3b54ced3848326f70331953d91b02535af44d9fe0610f003be80cb2098357928c8ea17bb065af33095f39d4e0b53b1687f02d522d96bad4ca354293d5c401177ccbd302cf565b96c327f71bc9eaf2890675d2fbb71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe40287f33611c2cf0eef57adbf48942737d9421e6b20e4b9d6e391d4168bf4bf96ea57aa42ad41c977605e027a9ef706a349f4b2919fe3562c8e86c4eeecf2f9457d4"); const clientFinishResult = opaque_ClientFinish( clientState, @@ -137,7 +138,7 @@ describe("OPAQUE(ristretto255, SHA-512)", () => { assert.strictEqual(clientFinishResult.result, 0); assert.deepStrictEqual(clientFinishResult.exportKey, exportKey); - assert.strictEqual(bin2hex(ke3), "4e23f0f84a5261918a7fc23bf1978a935cf4e320d56984079f8c7f4a54847b9e979f519928c5898927cf6aa8d51ac42dc2d0f5840956caa3a34dbc55ce74415f"); + assert.strictEqual(bin2hex(ke3), "df9a13cd256091f90f0fcb2ef6b3411e4aebff07bb0813299c0ec7f5dedd33a7681231a001a82f1dece1777921f42abfeee551ee34392e1c9743c5cc1dc1ef8c"); const serverFinishResult = opaque_ServerFinish(serverState, ke3); diff --git a/bindings/js/oprf.js b/bindings/js/oprf.js index 0bb9d077..438fd1f6 100644 --- a/bindings/js/oprf.js +++ b/bindings/js/oprf.js @@ -5,21 +5,20 @@ * Copy of the license at https://opensource.org/licenses/MIT */ -import libecc_module from "./libecc.js"; +import { + libecc, +} from "./util.js"; /** * Evaluates serialized representations of blinded group elements from the * client as inputs. * - * See https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-08#section-3.3.1.1 - * * @param {Uint8Array} skS private key * @param {Uint8Array} blindedElement blinded element * @param {Uint8Array} info - * @return {Promise} evaluated element + * @return {Uint8Array} evaluated element */ -export async function oprf_ristretto255_sha512_Evaluate(skS, blindedElement, info) { - const libecc = await libecc_module(); +export function oprf_Evaluate(skS, blindedElement, info) { let evaluatedElement = new Uint8Array(32); libecc.ecc_voprf_ristretto255_sha512_BlindEvaluate( @@ -32,21 +31,18 @@ export async function oprf_ristretto255_sha512_Evaluate(skS, blindedElement, inf } /** - * Same as calling `oprf_ristretto255_sha512_Blind` with an + * Same as calling `oprf_Blind` with a * specified scalar blind. * - * See https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-08#section-3.3.3.1 - * * @param {Uint8Array} input message to blind * @param {Uint8Array} blind scalar to use in the blind operation * @return {Uint8Array} blinded element */ -export async function oprf_ristretto255_sha512_BlindWithScalar(input, blind) { - const libecc = await libecc_module(); +export function oprf_BlindWithScalar(input, blind) { let blindedElement = new Uint8Array(32); - await libecc.ecc_voprf_ristretto255_sha512_BlindWithScalar( + libecc.ecc_voprf_ristretto255_sha512_BlindWithScalar( blindedElement, input, input.length, blind, @@ -57,18 +53,16 @@ export async function oprf_ristretto255_sha512_BlindWithScalar(input, blind) { } /** - * See https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-08#section-3.3.3.1 * * @param {Uint8Array} input message to blind * @return object {blind, blindedElement} */ -export async function oprf_ristretto255_sha512_Blind(input) { - const libecc = await libecc_module(); +export function oprf_Blind(input) { let blindedElement = new Uint8Array(32); let blind = new Uint8Array(32); - await libecc.ecc_voprf_ristretto255_sha512_Blind( + libecc.ecc_voprf_ristretto255_sha512_Blind( blindedElement, blind, input, input.length, @@ -79,15 +73,13 @@ export async function oprf_ristretto255_sha512_Blind(input) { } /** - * See https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-08#section-3.3.3.2 * * @param input the input message * @param blind * @param evaluatedElement * @param {Uint8Array} info */ -export async function oprf_ristretto255_sha512_Finalize(input, blind, evaluatedElement, info) { - const libecc = await libecc_module(); +export function oprf_Finalize(input, blind, evaluatedElement, info) { let output = new Uint8Array(64); libecc.ecc_voprf_ristretto255_sha512_Finalize( diff --git a/bindings/js/oprf.test.js b/bindings/js/oprf.test.js index f53b52bc..b3c4bff6 100644 --- a/bindings/js/oprf.test.js +++ b/bindings/js/oprf.test.js @@ -8,48 +8,48 @@ import { bin2hex, hex2bin, + libecc_promise, } from "./util.js"; import { - oprf_ristretto255_sha512_BlindWithScalar, - oprf_ristretto255_sha512_Evaluate, - oprf_ristretto255_sha512_Finalize, + oprf_BlindWithScalar, + oprf_Evaluate, + oprf_Finalize, } from "./oprf.js"; import assert from "assert"; -// https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-08#appendix-A.1 - describe("OPRF(ristretto255, SHA-512)", () => { - // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-08#appendix-A.1.1 - const skSm = hex2bin("74db8e13d2c5148a1181d57cc06debd730da4df1978b72ac18bc48992a0d2c0f"); + const skSm = hex2bin("5ebcea5ee37023ccb9fc2d2019f9d7737be85591ae8652ffa9ef0f4d37063b0e"); - // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-08#appendix-A.1.1.1 it("input 00", async () => { + await libecc_promise; + const input = hex2bin("00"); - const info = hex2bin("7465737420696e666f"); - const blind = hex2bin("c604c785ada70d77a5256ae21767de8c3304115237d262134f5e46e512cf8e03"); + const info = hex2bin("74657374206b6579"); + const blind = hex2bin("64d37aed22a27f5191de1c1d69fadb899d8862b58eb4220029e036ec4c1f6706"); - const blindedElement = await oprf_ristretto255_sha512_BlindWithScalar(input, blind); - const evaluationElement = await oprf_ristretto255_sha512_Evaluate(skSm, blindedElement, info); - const output = await oprf_ristretto255_sha512_Finalize(input, blind, evaluationElement, info); + const blindedElement = oprf_BlindWithScalar(input, blind); + const evaluationElement = oprf_Evaluate(skSm, blindedElement, info); + const output = oprf_Finalize(input, blind, evaluationElement, info); - assert.strictEqual(bin2hex(blindedElement), "b617363ffc96d9dd2309d3f8bd7345b5226eb9c863912cd86b8f34cf754c1b4e"); - assert.strictEqual(bin2hex(evaluationElement), "2a0c57e1dc889c729496670779647c56026fb0c1ce314c14f95726ff228c5461"); - assert.strictEqual(bin2hex(output), "be060dfe78216ed06ab2b716896f9215da964ebeec2ac23cbb4c158e8b9cbbea968a8061b23c04f350750ad1e5102c60593d679b6dcb22badb68f396fb7f6cc0"); + assert.strictEqual(bin2hex(blindedElement), "609a0ae68c15a3cf6903766461307e5c8bb2f95e7e6550e1ffa2dc99e412803c"); + assert.strictEqual(bin2hex(evaluationElement), "7ec6578ae5120958eb2db1745758ff379e77cb64fe77b0b2d8cc917ea0869c7e"); + assert.strictEqual(bin2hex(output), "527759c3d9366f277d8c6020418d96bb393ba2afb20ff90df23fb7708264e2f3ab9135e3bd69955851de4b1f9fe8a0973396719b7912ba9ee8aa7d0b5e24bcf6"); }); - // https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-08#appendix-A.1.1.2 it("input 5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a", async () => { + await libecc_promise; + const input = hex2bin("5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a"); - const info = hex2bin("7465737420696e666f"); - const blind = hex2bin("5ed895206bfc53316d307b23e46ecc6623afb3086da74189a416012be037e50b"); + const info = hex2bin("74657374206b6579"); + const blind = hex2bin("64d37aed22a27f5191de1c1d69fadb899d8862b58eb4220029e036ec4c1f6706"); - const blindedElement = await oprf_ristretto255_sha512_BlindWithScalar(input, blind); - const evaluationElement = await oprf_ristretto255_sha512_Evaluate(skSm, blindedElement, info); - const output = await oprf_ristretto255_sha512_Finalize(input, blind, evaluationElement, info); + const blindedElement = oprf_BlindWithScalar(input, blind); + const evaluationElement = oprf_Evaluate(skSm, blindedElement, info); + const output = oprf_Finalize(input, blind, evaluationElement, info); - assert.strictEqual(bin2hex(blindedElement), "927e71dbbceecf21cd0631fcb7f15ca0143b9a15e587f84a35b8bd20bf2e0767"); - assert.strictEqual(bin2hex(evaluationElement), "505f2cd525a0ded45d41b9ae58e835beb0f25afcdf4de947ca5c5e4a73197910"); - assert.strictEqual(bin2hex(output), "4e45a1b18f93d220b2570fe9e4a49ef4ec108c8c43c15c26bd743d994a1d68eaf27e9fc05651ddfa36186022d22a036cca03ad27daca359f4a3d044d32b26455"); + assert.strictEqual(bin2hex(blindedElement), "da27ef466870f5f15296299850aa088629945a17d1f5b7f5ff043f76b3c06418"); + assert.strictEqual(bin2hex(evaluationElement), "b4cbf5a4f1eeda5a63ce7b77c7d23f461db3fcab0dd28e4e17cecb5c90d02c25"); + assert.strictEqual(bin2hex(output), "f4a74c9c592497375e796aa837e907b1a045d34306a749db9f34221f7e750cb4f2a6413a6bf6fa5e19ba6348eb673934a722a7ede2e7621306d18951e7cf2c73"); }); }); diff --git a/bindings/jvm/src/main/java/org/ssohub/crypto/ecc/libecc.java b/bindings/jvm/src/main/java/org/ssohub/crypto/ecc/libecc.java index c7dcb8ae..7879394d 100644 --- a/bindings/jvm/src/main/java/org/ssohub/crypto/ecc/libecc.java +++ b/bindings/jvm/src/main/java/org/ssohub/crypto/ecc/libecc.java @@ -1248,7 +1248,7 @@ public static native int ecc_h2c_expand_message_xmd_sha512( public static final int ecc_voprf_ristretto255_sha512_SCALARSIZE = 32; /** - * Size of a proof. Proof is a sequence of two scalars. + * Size of a proof. Proof is a tuple of two scalars. * */ public static final int ecc_voprf_ristretto255_sha512_PROOFSIZE = 64; @@ -1288,7 +1288,11 @@ public static native int ecc_h2c_expand_message_xmd_sha512( public static final int ecc_voprf_ristretto255_sha512_MAXINFOSIZE = 2000; /** - * + * Generates a proof using the specified scalar. Given elements A and B, two + * non-empty lists of elements C and D of length m, and a scalar k; this + * function produces a proof that k*A == B and k*C[i] == D[i] for each i in + * [0, ..., m - 1]. The output is a value of type Proof, which is a tuple of two + * scalar values. * * @param proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE * @param k size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -1313,7 +1317,11 @@ public static native void ecc_voprf_ristretto255_sha512_GenerateProofWithScalar( ); /** - * + * Generates a proof. Given elements A and B, two + * non-empty lists of elements C and D of length m, and a scalar k; this + * function produces a proof that k*A == B and k*C[i] == D[i] for each i in + * [0, ..., m - 1]. The output is a value of type Proof, which is a tuple of two + * scalar values. * * @param proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE * @param k size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -1336,7 +1344,9 @@ public static native void ecc_voprf_ristretto255_sha512_GenerateProof( ); /** - * + * Helper function used in GenerateProof. It is an optimization of the + * ComputeComposites function for servers since they have knowledge of the + * private key. * * @param M (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param Z (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -1359,7 +1369,11 @@ public static native void ecc_voprf_ristretto255_sha512_ComputeCompositesFast( ); /** - * + * This function takes elements A and B, two non-empty lists of elements C and D + * of length m, and a Proof value output from GenerateProof. It outputs a single + * boolean value indicating whether or not the proof is valid for the given DLEQ + * inputs. Note this function can verify proofs on lists of inputs whenever the + * proof was generated as a batched DLEQ proof with the same inputs. * * @param A size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param B size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -1381,7 +1395,7 @@ public static native int ecc_voprf_ristretto255_sha512_VerifyProof( ); /** - * + * Helper function used in `VerifyProof`. * * @param M (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param Z (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -1456,7 +1470,8 @@ public static native int ecc_voprf_ristretto255_sha512_BlindWithScalar( ); /** - * + * The OPRF protocol begins with the client blinding its input. Note that this + * function can fail for certain inputs that map to the group identity element. * * @param blind (output) scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param blindedElement (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -1474,7 +1489,8 @@ public static native int ecc_voprf_ristretto255_sha512_Blind( ); /** - * + * Clients store blind locally, and send blindedElement to the server for + * evaluation. Upon receipt, servers process blindedElement using this function. * * @param evaluatedElement (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param skS scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -1487,7 +1503,11 @@ public static native void ecc_voprf_ristretto255_sha512_BlindEvaluate( ); /** - * + * Servers send the output evaluatedElement to clients for processing. Recall + * that servers may process multiple client inputs by applying the BlindEvaluate + * function to each blindedElement received, and returning an array with the + * corresponding evaluatedElement values. Upon receipt of evaluatedElement, + * clients process it to complete the OPRF evaluation with this function. * * @param output (output) size:ecc_voprf_ristretto255_sha512_Nh * @param input the input message, size:inputLen @@ -1504,7 +1524,8 @@ public static native void ecc_voprf_ristretto255_sha512_Finalize( ); /** - * + * An entity which knows both the secret key and the input can compute the PRF + * result using this function. * * @param output (output) size:ecc_voprf_ristretto255_sha512_Nh * @param skS size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -1522,7 +1543,8 @@ public static native int ecc_voprf_ristretto255_sha512_Evaluate( ); /** - * + * Same as calling ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate but + * using an specified scalar `r`. * * @param evaluatedElement (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -1541,7 +1563,10 @@ public static native void ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateW ); /** - * + * The VOPRF protocol begins with the client blinding its input. Clients store + * the output blind locally and send blindedElement to the server for + * evaluation. Upon receipt, servers process blindedElement to compute an + * evaluated element and DLEQ proof using this function. * * @param evaluatedElement (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -1558,7 +1583,9 @@ public static native void ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate( ); /** - * + * The server sends both evaluatedElement and proof back to the client. Upon + * receipt, the client processes both values to complete the VOPRF computation + * using this function below. * * @param output (output) size:ecc_voprf_ristretto255_sha512_Nh * @param input the input message, size:inputLen @@ -1582,7 +1609,8 @@ public static native int ecc_voprf_ristretto255_sha512_VerifiableFinalize( ); /** - * + * Same as calling ecc_voprf_ristretto255_sha512_PartiallyBlind with an + * specified blind scalar. * * @param blindedElement (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param tweakedKey (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -1608,7 +1636,12 @@ public static native int ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar( ); /** - * + * The POPRF protocol begins with the client blinding its input, using the + * following modified Blind function. In this step, the client also binds a + * public info value, which produces an additional tweakedKey to be used later + * in the protocol. Note that this function can fail for certain private inputs + * that map to the group identity element, as well as certain public inputs + * that, if not detected at this point, will cause server evaluation to fail. * * @param blind (output) scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param blindedElement (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -1634,7 +1667,8 @@ public static native int ecc_voprf_ristretto255_sha512_PartiallyBlind( ); /** - * + * Same as calling ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate with an + * specified scalar r. * * @param evaluatedElement (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -1658,7 +1692,10 @@ public static native int ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWit ); /** - * + * Clients store the outputs blind and tweakedKey locally and send + * blindedElement to the server for evaluation. Upon receipt, servers process + * blindedElement to compute an evaluated element and DLEQ proof using the + * this function. * * @param evaluatedElement (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param proof (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -1680,7 +1717,9 @@ public static native int ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate( ); /** - * + * The server sends both evaluatedElement and proof back to the client. Upon + * receipt, the client processes both values to complete the POPRF computation + * using this function. * * @param output (output) size:ecc_voprf_ristretto255_sha512_Nh * @param input the input message, size:inputLen @@ -1767,7 +1806,8 @@ public static native void ecc_voprf_ristretto255_sha512_HashToGroup( ); /** - * + * Same as calling ecc_voprf_ristretto255_sha512_HashToScalar with an specified + * DST. * * @param out (output) size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param input size:inputLen @@ -1784,7 +1824,8 @@ public static native void ecc_voprf_ristretto255_sha512_HashToScalarWithDST( ); /** - * + * Deterministically maps an array of bytes x to an element in GF(p) in + * the ristretto255 curve. * * @param out (output) size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param input size:inputLen diff --git a/bindings/jvm/src/main/java/overview.html b/bindings/jvm/src/main/java/overview.html index 5715a809..5b435a15 100644 --- a/bindings/jvm/src/main/java/overview.html +++ b/bindings/jvm/src/main/java/overview.html @@ -6,7 +6,7 @@

Features

-

OPRF Oblivious pseudo-random functions using ristretto255

+

OPRF Oblivious pseudo-random functions

-This is an implementation of draft-irtf-cfrg-voprf-16 +This is an implementation of draft-irtf-cfrg-voprf-20 ciphersuite OPRF(ristretto255, SHA-512) using `libsodium`.

-There are two variants in this protocol: a base mode and verifiable mode. In the -base mode, a client and server interact to compute `output = F(skS, input, info)`, -where `input` is the client's private input, `skS` is the server's private key, `info` -is the public input, and `output` is the computation output. The client learns `output` -and the server learns nothing. In the verifiable mode, the client also receives proof -that the server used `skS` in computing the function. +An Oblivious Pseudorandom Function (OPRF) is a two-party protocol between client +and server for computing the output of a Pseudorandom Function (PRF). The server +provides the PRF secret key, and the client provides the PRF input. At the end +of the protocol, the client learns the PRF output without learning anything +about the PRF secret key, and the server learns neither the PRF input nor +output.

-The flow is shown below (from the irtf draft): +There are two variations of the basic protocol: +

    +
  • + VOPRF: is OPRF with the notion of verifiability. Clients can verify that the + server used a specific private key during the execution of the protocol. +
  • +
  • + POPRF: is a partially-oblivious VOPRF that allows clients and servers to + provide public input to the PRF computation. +
  • +
+

+The OPRF flow is shown below (from the IRTF draft):

-Client(input, info)                               Server(skS, info)
-----------------------------------------------------------------------
-blind, blindedElement = Blind(input)
+    Client(input)                                        Server(skS)
+  -------------------------------------------------------------------
+  blind, blindedElement = Blind(input)
 
-blindedElement
----------->
+                             blindedElement
+                               ---------->
 
-evaluatedElement = Evaluate(skS, blindedElement, info)
+                evaluatedElement = BlindEvaluate(skS, blindedElement)
 
-evaluatedElement
-<----------
+                             evaluatedElement
+                               <----------
 
-output = Finalize(input, blind, evaluatedElement, blindedElement, info)
+  output = Finalize(input, blind, evaluatedElement)
 
-In the verifiable mode of the protocol, the server additionally -computes a proof in Evaluate. The client verifies this proof using -the server's expected public key before completing the protocol and -producing the protocol output. +For the advanced modes VOPRF and POPRF refer to the published draft.

OPAQUE The OPAQUE Asymmetric PAKE Protocol

diff --git a/bindings/jvm/src/test/java/org/ssohub/crypto/ecc/OprfTest.java b/bindings/jvm/src/test/java/org/ssohub/crypto/ecc/OprfTest.java index 0484a9aa..d1b484c7 100644 --- a/bindings/jvm/src/test/java/org/ssohub/crypto/ecc/OprfTest.java +++ b/bindings/jvm/src/test/java/org/ssohub/crypto/ecc/OprfTest.java @@ -20,23 +20,23 @@ public class OprfTest { @Test void oprf_ristretto255_sha512_base_test1() { - byte[] skSm = hex2bin("74db8e13d2c5148a1181d57cc06debd730da4df1978b72ac18bc48992a0d2c0f"); + byte[] skSm = hex2bin("5ebcea5ee37023ccb9fc2d2019f9d7737be85591ae8652ffa9ef0f4d37063b0e"); byte[] input = hex2bin("00"); - byte[] blind = hex2bin("c604c785ada70d77a5256ae21767de8c3304115237d262134f5e46e512cf8e03"); + byte[] blind = hex2bin("64d37aed22a27f5191de1c1d69fadb899d8862b58eb4220029e036ec4c1f6706"); byte[] blindedElement = Oprf.oprf_ristretto255_sha512_BlindWithScalar( input, blind ); - assertEquals("b617363ffc96d9dd2309d3f8bd7345b5226eb9c863912cd86b8f34cf754c1b4e", bin2hex(blindedElement)); + assertEquals("609a0ae68c15a3cf6903766461307e5c8bb2f95e7e6550e1ffa2dc99e412803c", bin2hex(blindedElement)); byte[] evaluationElement = Oprf.oprf_ristretto255_sha512_Evaluate( skSm, blindedElement ); - assertEquals("2a0c57e1dc889c729496670779647c56026fb0c1ce314c14f95726ff228c5461", bin2hex(evaluationElement)); + assertEquals("7ec6578ae5120958eb2db1745758ff379e77cb64fe77b0b2d8cc917ea0869c7e", bin2hex(evaluationElement)); byte[] output = Oprf.oprf_ristretto255_sha512_Finalize( input, @@ -44,28 +44,28 @@ void oprf_ristretto255_sha512_base_test1() { evaluationElement ); - assertEquals("be060dfe78216ed06ab2b716896f9215da964ebeec2ac23cbb4c158e8b9cbbea968a8061b23c04f350750ad1e5102c60593d679b6dcb22badb68f396fb7f6cc0", bin2hex(output)); + assertEquals("527759c3d9366f277d8c6020418d96bb393ba2afb20ff90df23fb7708264e2f3ab9135e3bd69955851de4b1f9fe8a0973396719b7912ba9ee8aa7d0b5e24bcf6", bin2hex(output)); } @Test void oprf_ristretto255_sha512_base_test2() { - byte[] skSm = hex2bin("74db8e13d2c5148a1181d57cc06debd730da4df1978b72ac18bc48992a0d2c0f"); + byte[] skSm = hex2bin("5ebcea5ee37023ccb9fc2d2019f9d7737be85591ae8652ffa9ef0f4d37063b0e"); byte[] input = hex2bin("5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a"); - byte[] blind = hex2bin("5ed895206bfc53316d307b23e46ecc6623afb3086da74189a416012be037e50b"); + byte[] blind = hex2bin("64d37aed22a27f5191de1c1d69fadb899d8862b58eb4220029e036ec4c1f6706"); byte[] blindedElement = Oprf.oprf_ristretto255_sha512_BlindWithScalar( input, blind ); - assertEquals("927e71dbbceecf21cd0631fcb7f15ca0143b9a15e587f84a35b8bd20bf2e0767", bin2hex(blindedElement)); + assertEquals("da27ef466870f5f15296299850aa088629945a17d1f5b7f5ff043f76b3c06418", bin2hex(blindedElement)); byte[] evaluationElement = Oprf.oprf_ristretto255_sha512_Evaluate( skSm, blindedElement ); - assertEquals("505f2cd525a0ded45d41b9ae58e835beb0f25afcdf4de947ca5c5e4a73197910", bin2hex(evaluationElement)); + assertEquals("b4cbf5a4f1eeda5a63ce7b77c7d23f461db3fcab0dd28e4e17cecb5c90d02c25", bin2hex(evaluationElement)); byte[] output = Oprf.oprf_ristretto255_sha512_Finalize( input, @@ -73,6 +73,6 @@ void oprf_ristretto255_sha512_base_test2() { evaluationElement ); - assertEquals("4e45a1b18f93d220b2570fe9e4a49ef4ec108c8c43c15c26bd743d994a1d68eaf27e9fc05651ddfa36186022d22a036cca03ad27daca359f4a3d044d32b26455", bin2hex(output)); + assertEquals("f4a74c9c592497375e796aa837e907b1a045d34306a749db9f34221f7e750cb4f2a6413a6bf6fa5e19ba6348eb673934a722a7ede2e7621306d18951e7cf2c73", bin2hex(output)); } } diff --git a/bindings/jvm/src/test/java/org/ssohub/crypto/ecc/opaque/OpaqueTest.java b/bindings/jvm/src/test/java/org/ssohub/crypto/ecc/opaque/OpaqueTest.java index 79d7a4e4..8c2526b4 100644 --- a/bindings/jvm/src/test/java/org/ssohub/crypto/ecc/opaque/OpaqueTest.java +++ b/bindings/jvm/src/test/java/org/ssohub/crypto/ecc/opaque/OpaqueTest.java @@ -49,7 +49,7 @@ void testProtocolWithKnownValues() { ); RegistrationRequest registrationRequest = request.getRegistrationRequest(); - assertEquals("62235332ae15911d69812e9eeb6ac8fe4fa0ffc7590831d5c5e1631e01049276", registrationRequest.toHex()); + assertEquals("5059ff249eb1551b7ce4991f3336205bde44a105a032e747d21bf382e75f7a71", registrationRequest.toHex()); RegistrationResponse registrationResponse = Opaque.createRegistrationResponse( registrationRequest, @@ -58,7 +58,7 @@ void testProtocolWithKnownValues() { serverInputs.getOprfSeed() ); - assertEquals("6268d13fea98ebc8e6b88d0b3cc8a78d2ac8fa8efc741cd2e966940c52c31c71b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78", registrationResponse.toHex()); + assertEquals("7408a268083e03abc7097fc05b587834539065e86fb0c7b6342fcf5e01e5b019b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78", registrationResponse.toHex()); OpaqueSeed envelopeNonce = OpaqueSeed.fromHex("ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec"); FinalizeRegistrationRequestResult finalizeRequest = Opaque.finalizeRegistrationRequestWithNonce( @@ -73,7 +73,7 @@ void testProtocolWithKnownValues() { RegistrationRecord registrationRecord = finalizeRequest.getRegistrationRecord(); Data exportKey = finalizeRequest.getExportKey(); - assertEquals("8e5e5c04b2154336fa52ac691eb6df5f59ec7315b8467b0bba1ed4f413043b449afea0ddedbbce5c083c5d5d02aa5218bcc7100f541d841bb5974f084f7aa0b929399feb39efd17e13ce1035cbb23251da3b5126a574b239c7b73519d8847e2fac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec8e8bde8d4eb9e171240b3d2dfb43ef93efe5cd15412614b3df11ecb58890047e2fa31c283e7c58c40495226cfa0ed7756e493431b85c464aad7fdaaf1ab41ac7", registrationRecord.toHex()); + assertEquals("2ec892bdbf9b3e2ea834be9eb11f5d187e64ba661ec041c0a3b66db8b7d6cc301ac5844383c7708077dea41cbefe2fa15724f449e535dd7dd562e66f5ecfb95864eadddec9db5874959905117dad40a4524111849799281fefe3c51fa82785c5ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfecb9dbe7d48cf714fc3533becab6faf60b783c94d258477eb74ecc453413bf61c53fd58f0fb3c1175410b674c02e1b59b2d729a865b709db3dc4ee2bb45703d5a8", registrationRecord.toHex()); ClientState clientState = new ClientState(); R255Scalar blindLogin = R255Scalar.fromHex("6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4b0790308"); @@ -89,7 +89,7 @@ void testProtocolWithKnownValues() { clientKeyshare ); - assertEquals("1670c409ebb699a6012629451d218d42a34eddba1d2978536c45e199c60a0b4eda7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663", ke1.toHex()); + assertEquals("c4dedb0ba6ed5d965d6f250fbe554cd45cba5dfcce3ce836e4aee778aa3cd44dda7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663", ke1.toHex()); ServerState serverState = new ServerState(); OpaqueSeed maskingNonce = OpaqueSeed.fromHex("38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d"); @@ -113,7 +113,7 @@ void testProtocolWithKnownValues() { serverKeyshare ); - assertEquals("36b4d06f413b72004392d7359cd6a998c667533203d6a671afe81ca09a282f7238fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d378cc6b0113bf0b6afd9e0728e62ba793d5d25bb97794c154d036bf09c98c472368bffc4e35b7dc48f5a32dd3fede3b9e563f7a170d0e082d02c0a105cdf1ee0ea1928202076ff37ce174f2c669d52d8adc424e925a3bc9a4ca5ce16d9b7a1791ff7e47a0d2fa42424e5476f8cfa7bb20b2796ad877295a996ffcb049313f4e971cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe402848f3b062916ea7666973222944dabe1027e5bea84b1b5d46dab64b1c6eda3170d4c9adba8afa61eb4153061d528b39102f32ecda7d7625dbc229e6630a607e03", ke2.toHex()); + assertEquals("7e308140890bcde30cbcea28b01ea1ecfbd077cff62c4def8efa075aabcbb47138fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6dd6ec60bcdb26dc455ddf3e718f1020490c192d70dfc7e403981179d8073d1146a4f9aa1ced4e4cd984c657eb3b54ced3848326f70331953d91b02535af44d9fe0610f003be80cb2098357928c8ea17bb065af33095f39d4e0b53b1687f02d522d96bad4ca354293d5c401177ccbd302cf565b96c327f71bc9eaf2890675d2fbb71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe40287f33611c2cf0eef57adbf48942737d9421e6b20e4b9d6e391d4168bf4bf96ea57aa42ad41c977605e027a9ef706a349f4b2919fe3562c8e86c4eeecf2f9457d4", ke2.toHex()); ClientFinishResult clientFinishResult = Opaque.clientFinish( clientState, @@ -128,7 +128,7 @@ void testProtocolWithKnownValues() { assertEquals(0, clientFinishResult.getResult()); assertEquals(exportKey, clientFinishResult.getExportKey()); - assertEquals("4e23f0f84a5261918a7fc23bf1978a935cf4e320d56984079f8c7f4a54847b9e979f519928c5898927cf6aa8d51ac42dc2d0f5840956caa3a34dbc55ce74415f", ke3.toHex()); + assertEquals("df9a13cd256091f90f0fcb2ef6b3411e4aebff07bb0813299c0ec7f5dedd33a7681231a001a82f1dece1777921f42abfeee551ee34392e1c9743c5cc1dc1ef8c", ke3.toHex()); ServerFinishResult serverFinishResult = Opaque.serverFinish(serverState, ke3); diff --git a/bindings/python/src/libecc/libecc.py b/bindings/python/src/libecc/libecc.py index a75b86a7..bcdf0a70 100644 --- a/bindings/python/src/libecc/libecc.py +++ b/bindings/python/src/libecc/libecc.py @@ -1853,7 +1853,7 @@ def ecc_h2c_expand_message_xmd_sha512( ecc_voprf_ristretto255_sha512_PROOFSIZE = 64 """ -Size of a proof. Proof is a sequence of two scalars. +Size of a proof. Proof is a tuple of two scalars. """ ecc_voprf_ristretto255_sha512_Nh = 64 @@ -1897,7 +1897,11 @@ def ecc_voprf_ristretto255_sha512_GenerateProofWithScalar( r: bytes ) -> None: """ - + Generates a proof using the specified scalar. Given elements A and B, two + non-empty lists of elements C and D of length m, and a scalar k; this + function produces a proof that k*A == B and k*C[i] == D[i] for each i in + [0, ..., m - 1]. The output is a value of type Proof, which is a tuple of two + scalar values. proof -- (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE k -- size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -1941,7 +1945,11 @@ def ecc_voprf_ristretto255_sha512_GenerateProof( mode: int ) -> None: """ - + Generates a proof. Given elements A and B, two + non-empty lists of elements C and D of length m, and a scalar k; this + function produces a proof that k*A == B and k*C[i] == D[i] for each i in + [0, ..., m - 1]. The output is a value of type Proof, which is a tuple of two + scalar values. proof -- (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE k -- size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -1982,7 +1990,9 @@ def ecc_voprf_ristretto255_sha512_ComputeCompositesFast( mode: int ) -> None: """ - + Helper function used in GenerateProof. It is an optimization of the + ComputeComposites function for servers since they have knowledge of the + private key. M -- (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE Z -- (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2022,7 +2032,11 @@ def ecc_voprf_ristretto255_sha512_VerifyProof( proof: bytes ) -> int: """ - + This function takes elements A and B, two non-empty lists of elements C and D + of length m, and a Proof value output from GenerateProof. It outputs a single + boolean value indicating whether or not the proof is valid for the given DLEQ + inputs. Note this function can verify proofs on lists of inputs whenever the + proof was generated as a batched DLEQ proof with the same inputs. A -- size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE B -- size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2060,7 +2074,7 @@ def ecc_voprf_ristretto255_sha512_ComputeComposites( mode: int ) -> None: """ - + Helper function used in `VerifyProof`. M -- (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE Z -- (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2183,7 +2197,8 @@ def ecc_voprf_ristretto255_sha512_Blind( mode: int ) -> int: """ - + The OPRF protocol begins with the client blinding its input. Note that this + function can fail for certain inputs that map to the group identity element. blind -- (output) scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE blindedElement -- (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2211,7 +2226,8 @@ def ecc_voprf_ristretto255_sha512_BlindEvaluate( blindedElement: bytes ) -> None: """ - + Clients store blind locally, and send blindedElement to the server for + evaluation. Upon receipt, servers process blindedElement using this function. evaluatedElement -- (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE skS -- scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -2236,7 +2252,11 @@ def ecc_voprf_ristretto255_sha512_Finalize( evaluatedElement: bytes ) -> None: """ - + Servers send the output evaluatedElement to clients for processing. Recall + that servers may process multiple client inputs by applying the BlindEvaluate + function to each blindedElement received, and returning an array with the + corresponding evaluatedElement values. Upon receipt of evaluatedElement, + clients process it to complete the OPRF evaluation with this function. output -- (output) size:ecc_voprf_ristretto255_sha512_Nh input -- the input message, size:inputLen @@ -2266,7 +2286,8 @@ def ecc_voprf_ristretto255_sha512_Evaluate( mode: int ) -> int: """ - + An entity which knows both the secret key and the input can compute the PRF + result using this function. output -- (output) size:ecc_voprf_ristretto255_sha512_Nh skS -- size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -2297,7 +2318,8 @@ def ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateWithScalar( r: bytes ) -> None: """ - + Same as calling ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate but + using an specified scalar `r`. evaluatedElement -- (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE proof -- (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -2331,7 +2353,10 @@ def ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate( blindedElement: bytes ) -> None: """ - + The VOPRF protocol begins with the client blinding its input. Clients store + the output blind locally and send blindedElement to the server for + evaluation. Upon receipt, servers process blindedElement to compute an + evaluated element and DLEQ proof using this function. evaluatedElement -- (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE proof -- (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -2365,7 +2390,9 @@ def ecc_voprf_ristretto255_sha512_VerifiableFinalize( proof: bytes ) -> int: """ - + The server sends both evaluatedElement and proof back to the client. Upon + receipt, the client processes both values to complete the VOPRF computation + using this function below. output -- (output) size:ecc_voprf_ristretto255_sha512_Nh input -- the input message, size:inputLen @@ -2408,7 +2435,8 @@ def ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar( blind: bytes ) -> int: """ - + Same as calling ecc_voprf_ristretto255_sha512_PartiallyBlind with an + specified blind scalar. blindedElement -- (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE tweakedKey -- (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2452,7 +2480,12 @@ def ecc_voprf_ristretto255_sha512_PartiallyBlind( pkS: bytes ) -> int: """ - + The POPRF protocol begins with the client blinding its input, using the + following modified Blind function. In this step, the client also binds a + public info value, which produces an additional tweakedKey to be used later + in the protocol. Note that this function can fail for certain private inputs + that map to the group identity element, as well as certain public inputs + that, if not detected at this point, will cause server evaluation to fail. blind -- (output) scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE blindedElement -- (output) blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -2495,7 +2528,8 @@ def ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar( r: bytes ) -> int: """ - + Same as calling ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate with an + specified scalar r. evaluatedElement -- (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE proof -- (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -2535,7 +2569,10 @@ def ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate( infoLen: int ) -> int: """ - + Clients store the outputs blind and tweakedKey locally and send + blindedElement to the server for evaluation. Upon receipt, servers process + blindedElement to compute an evaluated element and DLEQ proof using the + this function. evaluatedElement -- (output) size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE proof -- (output) size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -2576,7 +2613,9 @@ def ecc_voprf_ristretto255_sha512_PartiallyFinalize( tweakedKey: bytes ) -> int: """ - + The server sends both evaluatedElement and proof back to the client. Upon + receipt, the client processes both values to complete the POPRF computation + using this function. output -- (output) size:ecc_voprf_ristretto255_sha512_Nh input -- the input message, size:inputLen @@ -2716,7 +2755,8 @@ def ecc_voprf_ristretto255_sha512_HashToScalarWithDST( dstLen: int ) -> None: """ - + Same as calling ecc_voprf_ristretto255_sha512_HashToScalar with an specified + DST. out -- (output) size:ecc_voprf_ristretto255_sha512_SCALARSIZE input -- size:inputLen @@ -2744,7 +2784,8 @@ def ecc_voprf_ristretto255_sha512_HashToScalar( mode: int ) -> None: """ - + Deterministically maps an array of bytes x to an element in GF(p) in + the ristretto255 curve. out -- (output) size:ecc_voprf_ristretto255_sha512_SCALARSIZE input -- size:inputLen diff --git a/src/voprf.c b/src/voprf.c index 68f5f629..aba8899a 100644 --- a/src/voprf.c +++ b/src/voprf.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2022, Alden Torres + * Copyright (c) 2021-2023, Alden Torres * * Licensed under the terms of the MIT license. * Copy of the license at https://opensource.org/licenses/MIT @@ -56,9 +56,10 @@ static int createContextString( const byte_t *prefix, const int prefixLen ) { - // contextString = "${RFC_ID}-" || I2OSP(mode, 1) || I2OSP(suite_id, 2) + // contextString = "OPRFV1-" || I2OSP(mode, 1) || "-" || identifier - byte_t rfcId[7] = "VOPRF10"; // TODO: change to "RFCXXXX", where XXXX is the final number + byte_t id[6] = "OPRFV1"; + byte_t identifier[19] = "ristretto255-SHA512"; byte_t dash[1] = "-"; byte_t *p = contextString; @@ -68,18 +69,18 @@ static int createContextString( p += prefixLen; } - ecc_concat2(p, rfcId, sizeof rfcId, dash, 1); - p += sizeof rfcId + 1; + ecc_concat2(p, id, sizeof id, dash, 1); + p += sizeof id + 1; ecc_I2OSP(p, mode, 1); p += 1; - ecc_I2OSP(p, 0x0001, 2); // 0x0001 for OPRF(ristretto255, SHA-512) - p += 2; + ecc_concat2(p, dash, 1, identifier, sizeof identifier); + p += 1 + sizeof identifier; return (int)(p - contextString); } void ecc_voprf_ristretto255_sha512_GenerateProofWithScalar( - byte_t *proofPtr, + byte_t *proof_ptr, const byte_t *k, const byte_t *A, const byte_t *B, @@ -113,7 +114,7 @@ void ecc_voprf_ristretto255_sha512_GenerateProofWithScalar( // // proof = [c, s] - Proof_t *proof = (Proof_t *) proofPtr; + Proof_t *proof = (Proof_t *) proof_ptr; // (M, Z) = ComputeCompositesFast(k, B, Cs, Ds) byte_t M[ELEMENTSIZE]; @@ -703,7 +704,7 @@ int ecc_voprf_ristretto255_sha512_DeriveKeyPair( } int ecc_voprf_ristretto255_sha512_BlindWithScalar( - byte_t *blindedElement, // 32 + byte_t *blindedElement, const byte_t *input, const int inputLen, const byte_t *blind, const int mode @@ -913,7 +914,7 @@ void ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate( int ecc_voprf_ristretto255_sha512_VerifiableFinalize( byte_t *output, - const byte_t *input, int inputLen, + const byte_t *input, const int inputLen, const byte_t *blind, const byte_t *evaluatedElement, const byte_t *blindedElement, @@ -937,7 +938,7 @@ int ecc_voprf_ristretto255_sha512_VerifiableFinalize( byte_t generator[ELEMENTSIZE]; ecc_ristretto255_generator(generator); - int verification = ecc_voprf_ristretto255_sha512_VerifyProof( + const int verification = ecc_voprf_ristretto255_sha512_VerifyProof( generator, pkS, blindedElement, evaluatedElement, 1, MODE_VOPRF, @@ -962,7 +963,7 @@ int ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar( byte_t *tweakedKey, const byte_t *input, const int inputLen, const byte_t *info, const int infoLen, - byte_t *pkS, + const byte_t *pkS, const byte_t *blind ) { if (infoLen > ecc_voprf_ristretto255_sha512_MAXINFOSIZE) @@ -1052,7 +1053,7 @@ int ecc_voprf_ristretto255_sha512_PartiallyBlind( byte_t *tweakedKey, const byte_t *input, const int inputLen, const byte_t *info, const int infoLen, - byte_t *pkS + const byte_t *pkS ) { ecc_ristretto255_scalar_random(blind); return ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar( @@ -1070,7 +1071,7 @@ int ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar( byte_t *proof, const byte_t *skS, const byte_t *blindedElement, - const byte_t *info, int infoLen, + const byte_t *info, const int infoLen, const byte_t *r ) { if (infoLen > ecc_voprf_ristretto255_sha512_MAXINFOSIZE) @@ -1160,7 +1161,7 @@ int ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate( byte_t *proof, const byte_t *skS, const byte_t *blindedElement, - const byte_t *info, int infoLen + const byte_t *info, const int infoLen ) { byte_t r[SCALARSIZE]; ecc_ristretto255_scalar_random(r); @@ -1182,12 +1183,12 @@ int ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate( int ecc_voprf_ristretto255_sha512_PartiallyFinalize( byte_t *output, - const byte_t *input, int inputLen, + const byte_t *input, const int inputLen, const byte_t *blind, const byte_t *evaluatedElement, const byte_t *blindedElement, const byte_t *proof, - const byte_t *info, int infoLen, + const byte_t *info, const int infoLen, const byte_t *tweakedKey ) { if (infoLen > ecc_voprf_ristretto255_sha512_MAXINFOSIZE) @@ -1270,8 +1271,8 @@ int ecc_voprf_ristretto255_sha512_PartiallyFinalize( int ecc_voprf_ristretto255_sha512_PartiallyEvaluate( byte_t *output, const byte_t *skS, - const byte_t *input, int inputLen, - const byte_t *info, int infoLen + const byte_t *input, const int inputLen, + const byte_t *info, const int infoLen ) { if (infoLen > ecc_voprf_ristretto255_sha512_MAXINFOSIZE) return -1; diff --git a/src/voprf.h b/src/voprf.h index 0eecf8bb..2e683673 100644 --- a/src/voprf.h +++ b/src/voprf.h @@ -10,7 +10,8 @@ #include "export.h" -// https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-16 +// https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-20 +// https://github.com/cfrg/draft-irtf-cfrg-voprf // const /** @@ -28,7 +29,7 @@ // const /** - * Size of a proof. Proof is a sequence of two scalars. + * Size of a proof. Proof is a tuple of two scalars. */ #define ecc_voprf_ristretto255_sha512_PROOFSIZE 64 @@ -67,6 +68,11 @@ #define ecc_voprf_ristretto255_sha512_MAXINFOSIZE 2000 /** + * Generates a proof using the specified scalar. Given elements A and B, two + * non-empty lists of elements C and D of length m, and a scalar k; this + * function produces a proof that k*A == B and k*C[i] == D[i] for each i in + * [0, ..., m - 1]. The output is a value of type Proof, which is a tuple of two + * scalar values. * * @param[out] proof size:ecc_voprf_ristretto255_sha512_PROOFSIZE * @param k size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -92,6 +98,11 @@ void ecc_voprf_ristretto255_sha512_GenerateProofWithScalar( ); /** + * Generates a proof. Given elements A and B, two + * non-empty lists of elements C and D of length m, and a scalar k; this + * function produces a proof that k*A == B and k*C[i] == D[i] for each i in + * [0, ..., m - 1]. The output is a value of type Proof, which is a tuple of two + * scalar values. * * @param[out] proof size:ecc_voprf_ristretto255_sha512_PROOFSIZE * @param k size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -115,6 +126,9 @@ void ecc_voprf_ristretto255_sha512_GenerateProof( ); /** + * Helper function used in GenerateProof. It is an optimization of the + * ComputeComposites function for servers since they have knowledge of the + * private key. * * @param[out] M size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param[out] Z size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -138,6 +152,11 @@ void ecc_voprf_ristretto255_sha512_ComputeCompositesFast( ); /** + * This function takes elements A and B, two non-empty lists of elements C and D + * of length m, and a Proof value output from GenerateProof. It outputs a single + * boolean value indicating whether or not the proof is valid for the given DLEQ + * inputs. Note this function can verify proofs on lists of inputs whenever the + * proof was generated as a batched DLEQ proof with the same inputs. * * @param A size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param B size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -160,6 +179,7 @@ int ecc_voprf_ristretto255_sha512_VerifyProof( ); /** + * Helper function used in `VerifyProof`. * * @param[out] M size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param[out] Z size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -234,6 +254,8 @@ int ecc_voprf_ristretto255_sha512_BlindWithScalar( ); /** + * The OPRF protocol begins with the client blinding its input. Note that this + * function can fail for certain inputs that map to the group identity element. * * @param[out] blind scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param[out] blindedElement blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -251,6 +273,8 @@ int ecc_voprf_ristretto255_sha512_Blind( ); /** + * Clients store blind locally, and send blindedElement to the server for + * evaluation. Upon receipt, servers process blindedElement using this function. * * @param[out] evaluatedElement blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param skS scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -264,6 +288,11 @@ void ecc_voprf_ristretto255_sha512_BlindEvaluate( ); /** + * Servers send the output evaluatedElement to clients for processing. Recall + * that servers may process multiple client inputs by applying the BlindEvaluate + * function to each blindedElement received, and returning an array with the + * corresponding evaluatedElement values. Upon receipt of evaluatedElement, + * clients process it to complete the OPRF evaluation with this function. * * @param[out] output size:ecc_voprf_ristretto255_sha512_Nh * @param input the input message, size:inputLen @@ -280,6 +309,8 @@ void ecc_voprf_ristretto255_sha512_Finalize( ); /** + * An entity which knows both the secret key and the input can compute the PRF + * result using this function. * * @param[out] output size:ecc_voprf_ristretto255_sha512_Nh * @param skS size:ecc_voprf_ristretto255_sha512_SCALARSIZE @@ -297,6 +328,8 @@ int ecc_voprf_ristretto255_sha512_Evaluate( ); /** + * Same as calling ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate but + * using a specified scalar `r`. * * @param[out] evaluatedElement size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param[out] proof size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -316,6 +349,10 @@ void ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluateWithScalar( ); /** + * The VOPRF protocol begins with the client blinding its input. Clients store + * the output blind locally and send blindedElement to the server for + * evaluation. Upon receipt, servers process blindedElement to compute an + * evaluated element and DLEQ proof using this function. * * @param[out] evaluatedElement size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param[out] proof size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -333,6 +370,9 @@ void ecc_voprf_ristretto255_sha512_VerifiableBlindEvaluate( ); /** + * The server sends both evaluatedElement and proof back to the client. Upon + * receipt, the client processes both values to complete the VOPRF computation + * using this function below. * * @param[out] output size:ecc_voprf_ristretto255_sha512_Nh * @param input the input message, size:inputLen @@ -356,6 +396,8 @@ int ecc_voprf_ristretto255_sha512_VerifiableFinalize( ); /** + * Same as calling ecc_voprf_ristretto255_sha512_PartiallyBlind with an + * specified blind scalar. * * @param[out] blindedElement blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param[out] tweakedKey blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -373,11 +415,17 @@ int ecc_voprf_ristretto255_sha512_PartiallyBlindWithScalar( byte_t *tweakedKey, const byte_t *input, int inputLen, const byte_t *info, int infoLen, - byte_t *pkS, + const byte_t *pkS, const byte_t *blind ); /** + * The POPRF protocol begins with the client blinding its input, using the + * following modified Blind function. In this step, the client also binds a + * public info value, which produces an additional tweakedKey to be used later + * in the protocol. Note that this function can fail for certain private inputs + * that map to the group identity element, as well as certain public inputs + * that, if not detected at this point, will cause server evaluation to fail. * * @param[out] blind scalar used in the blind operation, size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param[out] blindedElement blinded element, size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE @@ -396,10 +444,12 @@ int ecc_voprf_ristretto255_sha512_PartiallyBlind( byte_t *tweakedKey, const byte_t *input, int inputLen, const byte_t *info, int infoLen, - byte_t *pkS + const byte_t *pkS ); /** + * Same as calling ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate with an + * specified scalar r. * * @param[out] evaluatedElement size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param[out] proof size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -421,6 +471,10 @@ int ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluateWithScalar( ); /** + * Clients store the outputs blind and tweakedKey locally and send + * blindedElement to the server for evaluation. Upon receipt, servers process + * blindedElement to compute an evaluated element and DLEQ proof using the + * this function. * * @param[out] evaluatedElement size:ecc_voprf_ristretto255_sha512_ELEMENTSIZE * @param[out] proof size:ecc_voprf_ristretto255_sha512_PROOFSIZE @@ -440,6 +494,9 @@ int ecc_voprf_ristretto255_sha512_PartiallyBlindEvaluate( ); /** + * The server sends both evaluatedElement and proof back to the client. Upon + * receipt, the client processes both values to complete the POPRF computation + * using this function. * * @param[out] output size:ecc_voprf_ristretto255_sha512_Nh * @param input the input message, size:inputLen @@ -519,6 +576,8 @@ void ecc_voprf_ristretto255_sha512_HashToGroup( ); /** + * Same as calling ecc_voprf_ristretto255_sha512_HashToScalar with a specified + * DST. * * @param[out] out size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param input size:inputLen @@ -534,6 +593,8 @@ void ecc_voprf_ristretto255_sha512_HashToScalarWithDST( ); /** + * Deterministically maps an array of bytes x to an element in GF(p) in + * the ristretto255 curve. * * @param[out] out size:ecc_voprf_ristretto255_sha512_SCALARSIZE * @param input size:inputLen diff --git a/test/data/opaque/ristretto255_sha512.json b/test/data/opaque/ristretto255_sha512.json index 04771a24..ff9f3b92 100644 --- a/test/data/opaque/ristretto255_sha512.json +++ b/test/data/opaque/ristretto255_sha512.json @@ -1,120 +1,312 @@ -{ - "vectors": [ - { - "config": { - "Context": "4f50415155452d504f43", - "Fake": "False", - "Group": "ristretto255", - "Hash": "SHA512", - "KDF": "HKDF-SHA512", - "KSF": "Identity", - "MAC": "HMAC-SHA512", - "Name": "3DH", - "Nh": "64", - "Nm": "64", - "Nok": "32", - "Npk": "32", - "Nsk": "32", - "Nx": "64", - "OPRF": "0001" - }, - "inputs": { - "blind_login": "6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4b0790308", - "blind_registration": "76cfbfe758db884bebb33582331ba9f159720ca8784a2a070a265d9c2d6abe01", - "client_keyshare": "0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663", - "client_nonce": "da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc", - "client_private_keyshare": "22c919134c9bdd9dc0c5ef3450f18b54820f43f646a95223bf4a85b2018c2001", - "credential_identifier": "31323334", - "envelope_nonce": "ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec", - "masking_nonce": "38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d", - "oprf_seed": "f433d0227b0b9dd54f7c4422b600e764e47fb503f1f9a0f0a47c6606b054a7fdc65347f1a08f277e22358bbabe26f823fca82c7848e9a75661f4ec5d5c1989ef", - "password": "436f7272656374486f72736542617474657279537461706c65", - "server_keyshare": "c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe4028", - "server_nonce": "71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1", - "server_private_key": "47451a85372f8b3537e249d7b54188091fb18edde78094b43e2ba42b5eb89f0d", - "server_private_keyshare": "2e842960258a95e28bcfef489cffd19d8ec99cc1375d840f96936da7dbb0b40d", - "server_public_key": "b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78" - }, - "intermediates": { - "auth_key": "e1ff65c196e1c4b4bf46361798eec479b318831329680f33b4f77ad49d8c6e6ef49d87082d654d21f2e36454582353fefc23c07637bd8ca4aa88a4461ea96d6c", - "client_mac_key": "4d4d4c4b8b35501876ed01d07f5718357ff720163b84813b1bde4f3b6ca3e1de744a267e3d145e6095a0e5b1617714e10af7e10093d0ba8dd115e6bdb1f5ccd9", - "client_public_key": "8e5e5c04b2154336fa52ac691eb6df5f59ec7315b8467b0bba1ed4f413043b44", - "envelope": "ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec8e8bde8d4eb9e171240b3d2dfb43ef93efe5cd15412614b3df11ecb58890047e2fa31c283e7c58c40495226cfa0ed7756e493431b85c464aad7fdaaf1ab41ac7", - "handshake_secret": "885a0a7bd8e704d8fc26f62b8657f8c5d01ffb35b27ad538493968dcf6dba7a2d42d404d6ed6a87805a030ffafe791fb69fd044c1ac152ee0ee78853cebb0700", - "masking_key": "9afea0ddedbbce5c083c5d5d02aa5218bcc7100f541d841bb5974f084f7aa0b929399feb39efd17e13ce1035cbb23251da3b5126a574b239c7b73519d8847e2f", - "oprf_key": "6c246eaa55e47d0490ffa8a6f784e803eed9384a250458def36a2acebf15c905", - "randomized_pwd": "4386bf4b83db06f47672fd60b4cface554558da7be3c616c56b2ed29b544d1b50bc45893b1c05d8d6866a9bbe91395e4704740be58728e8872352f56d5319f8f", - "server_mac_key": "d29e33eb506fbf199c818d1300e7253404a7d5de9c660a90f79afe4cc15da2ae31e511c6eb1c4df95f47c9759606732781a3d1884a4d53cba690bdb9e9ac4d7c" - }, - "outputs": { - "KE1": "1670c409ebb699a6012629451d218d42a34eddba1d2978536c45e199c60a0b4eda7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663", - "KE2": "36b4d06f413b72004392d7359cd6a998c667533203d6a671afe81ca09a282f7238fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d378cc6b0113bf0b6afd9e0728e62ba793d5d25bb97794c154d036bf09c98c472368bffc4e35b7dc48f5a32dd3fede3b9e563f7a170d0e082d02c0a105cdf1ee0ea1928202076ff37ce174f2c669d52d8adc424e925a3bc9a4ca5ce16d9b7a1791ff7e47a0d2fa42424e5476f8cfa7bb20b2796ad877295a996ffcb049313f4e971cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe402848f3b062916ea7666973222944dabe1027e5bea84b1b5d46dab64b1c6eda3170d4c9adba8afa61eb4153061d528b39102f32ecda7d7625dbc229e6630a607e03", - "KE3": "4e23f0f84a5261918a7fc23bf1978a935cf4e320d56984079f8c7f4a54847b9e979f519928c5898927cf6aa8d51ac42dc2d0f5840956caa3a34dbc55ce74415f", - "export_key": "403a270110164ae0de7ea77c6824343211e8c1663ccaedde908dc9acf661039a379c8ac7e4b0cb23a8d1375ae94a772f91536de131d9d86633cb9445f773dfac", - "registration_request": "62235332ae15911d69812e9eeb6ac8fe4fa0ffc7590831d5c5e1631e01049276", - "registration_response": "6268d13fea98ebc8e6b88d0b3cc8a78d2ac8fa8efc741cd2e966940c52c31c71b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78", - "registration_upload": "8e5e5c04b2154336fa52ac691eb6df5f59ec7315b8467b0bba1ed4f413043b449afea0ddedbbce5c083c5d5d02aa5218bcc7100f541d841bb5974f084f7aa0b929399feb39efd17e13ce1035cbb23251da3b5126a574b239c7b73519d8847e2fac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec8e8bde8d4eb9e171240b3d2dfb43ef93efe5cd15412614b3df11ecb58890047e2fa31c283e7c58c40495226cfa0ed7756e493431b85c464aad7fdaaf1ab41ac7", - "session_key": "d2dea308255aa3cecf72bcd6ac96ff7ab2e8bad0494b90180ad340b7d8942a36ee358e76c372790d4a5c1ac900997ea2abbf35f2d65510f8dfd668e593b8e1fe" - } - }, - { - "config": { - "Context": "4f50415155452d504f43", - "Fake": "False", - "Group": "ristretto255", - "Hash": "SHA512", - "KDF": "HKDF-SHA512", - "KSF": "Identity", - "MAC": "HMAC-SHA512", - "Name": "3DH", - "Nh": "64", - "Nm": "64", - "Nok": "32", - "Npk": "32", - "Nsk": "32", - "Nx": "64", - "OPRF": "0001" - }, - "inputs": { - "blind_login": "6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4b0790308", - "blind_registration": "76cfbfe758db884bebb33582331ba9f159720ca8784a2a070a265d9c2d6abe01", - "client_identity": "616c696365", - "client_keyshare": "0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663", - "client_nonce": "da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc", - "client_private_keyshare": "22c919134c9bdd9dc0c5ef3450f18b54820f43f646a95223bf4a85b2018c2001", - "credential_identifier": "31323334", - "envelope_nonce": "ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec", - "masking_nonce": "38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d", - "oprf_seed": "f433d0227b0b9dd54f7c4422b600e764e47fb503f1f9a0f0a47c6606b054a7fdc65347f1a08f277e22358bbabe26f823fca82c7848e9a75661f4ec5d5c1989ef", - "password": "436f7272656374486f72736542617474657279537461706c65", - "server_identity": "626f62", - "server_keyshare": "c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe4028", - "server_nonce": "71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1", - "server_private_key": "47451a85372f8b3537e249d7b54188091fb18edde78094b43e2ba42b5eb89f0d", - "server_private_keyshare": "2e842960258a95e28bcfef489cffd19d8ec99cc1375d840f96936da7dbb0b40d", - "server_public_key": "b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78" - }, - "intermediates": { - "auth_key": "e1ff65c196e1c4b4bf46361798eec479b318831329680f33b4f77ad49d8c6e6ef49d87082d654d21f2e36454582353fefc23c07637bd8ca4aa88a4461ea96d6c", - "client_mac_key": "1c284c2a22bfb415a5091c94726dd02ae9adb12d28db5207a87be0c3f75c1c37df549315f51e0dd2053271a477a45bf0adbc246f7f7e47e201785b6429e93a84", - "client_public_key": "8e5e5c04b2154336fa52ac691eb6df5f59ec7315b8467b0bba1ed4f413043b44", - "envelope": "ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec43084457c1ffa561c8f37fbad1b8de6c41e6df200e6ebe15d5ce4243fa973ef3e480644e56a6de865cc4d3d9e20e0510e63474e2b11f4b4c8f665cc439cc2d7d", - "handshake_secret": "19d0d9f286f44f573dd61435690b0359c3a70e5c363ba4819acfa113b0ddeab603f322185812ddcdd2abbfba77933cd5c3430ea6591e99c30a19884a80d25dab", - "masking_key": "9afea0ddedbbce5c083c5d5d02aa5218bcc7100f541d841bb5974f084f7aa0b929399feb39efd17e13ce1035cbb23251da3b5126a574b239c7b73519d8847e2f", - "oprf_key": "6c246eaa55e47d0490ffa8a6f784e803eed9384a250458def36a2acebf15c905", - "randomized_pwd": "4386bf4b83db06f47672fd60b4cface554558da7be3c616c56b2ed29b544d1b50bc45893b1c05d8d6866a9bbe91395e4704740be58728e8872352f56d5319f8f", - "server_mac_key": "5096c1f1b295521bc8c5aeba462fc11e123eb710899f164dab73745f55f42b27a31f810efb06fc56890f3635a18f3f8c9ef7881f32a251a5f5a7354c8270f257" - }, - "outputs": { - "KE1": "1670c409ebb699a6012629451d218d42a34eddba1d2978536c45e199c60a0b4eda7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663", - "KE2": "36b4d06f413b72004392d7359cd6a998c667533203d6a671afe81ca09a282f7238fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d378cc6b0113bf0b6afd9e0728e62ba793d5d25bb97794c154d036bf09c98c472368bffc4e35b7dc48f5a32dd3fede3b9e563f7a170d0e082d02c0a105cdf1ee0279ab2faaf30bb2722ef0dbb4c66632703c736dc6aeb163c467a60e0abb09bf4d4d49c1c65f522667cb4b6da94faa9d7835ad67e8e3198afb4e64d6fb06bc35371cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe4028dfe19d6cf6d292ae99a497f9ba41702a1945f5d9f3ab60ea801b5a691098c7af74956a5e1324322877b6d399583670e54dc907525235fd47c8e396fab340beed", - "KE3": "824fe89731cd47062819165662cd1c42c4b2d2321bd062e637fdd0361b0dad0302bd5e9a9d02c72452dc65298bf330071e061b8bb4e1c8762a350d99c8c003ac", - "export_key": "403a270110164ae0de7ea77c6824343211e8c1663ccaedde908dc9acf661039a379c8ac7e4b0cb23a8d1375ae94a772f91536de131d9d86633cb9445f773dfac", - "registration_request": "62235332ae15911d69812e9eeb6ac8fe4fa0ffc7590831d5c5e1631e01049276", - "registration_response": "6268d13fea98ebc8e6b88d0b3cc8a78d2ac8fa8efc741cd2e966940c52c31c71b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78", - "registration_upload": "8e5e5c04b2154336fa52ac691eb6df5f59ec7315b8467b0bba1ed4f413043b449afea0ddedbbce5c083c5d5d02aa5218bcc7100f541d841bb5974f084f7aa0b929399feb39efd17e13ce1035cbb23251da3b5126a574b239c7b73519d8847e2fac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec43084457c1ffa561c8f37fbad1b8de6c41e6df200e6ebe15d5ce4243fa973ef3e480644e56a6de865cc4d3d9e20e0510e63474e2b11f4b4c8f665cc439cc2d7d", - "session_key": "5ea9a76f5f5cc59ba7871012836947c946f8c303cc94e048cdc83adac89db7187cf5c718ffdd7cb6d8c3005dc0f77814d5f26011b584f9622c649a357cb17a4c" - } +[ + { + "config": { + "Context": "4f50415155452d504f43", + "Fake": "False", + "Group": "ristretto255", + "Hash": "SHA512", + "KDF": "HKDF-SHA512", + "KSF": "Identity", + "MAC": "HMAC-SHA512", + "Name": "3DH", + "Nh": "64", + "Nm": "64", + "Nok": "32", + "Npk": "32", + "Nsk": "32", + "Nx": "64", + "OPRF": "ristretto255-SHA512" + }, + "inputs": { + "blind_login": "6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4b0790308", + "blind_registration": "76cfbfe758db884bebb33582331ba9f159720ca8784a2a070a265d9c2d6abe01", + "client_keyshare": "0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663", + "client_nonce": "da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc", + "client_private_keyshare": "22c919134c9bdd9dc0c5ef3450f18b54820f43f646a95223bf4a85b2018c2001", + "credential_identifier": "31323334", + "envelope_nonce": "ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec", + "masking_nonce": "38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d", + "oprf_seed": "f433d0227b0b9dd54f7c4422b600e764e47fb503f1f9a0f0a47c6606b054a7fdc65347f1a08f277e22358bbabe26f823fca82c7848e9a75661f4ec5d5c1989ef", + "password": "436f7272656374486f72736542617474657279537461706c65", + "server_keyshare": "c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe4028", + "server_nonce": "71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1", + "server_private_key": "47451a85372f8b3537e249d7b54188091fb18edde78094b43e2ba42b5eb89f0d", + "server_private_keyshare": "2e842960258a95e28bcfef489cffd19d8ec99cc1375d840f96936da7dbb0b40d", + "server_public_key": "b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78" + }, + "intermediates": { + "auth_key": "6cd32316f18d72a9a927a83199fa030663a38ce0c11fbaef82aa90037730494fc555c4d49506284516edd1628c27965b7555a4ebfed2223199f6c67966dde822", + "client_mac_key": "f2d019bad603b45b2ac50376279a0a37d097723b5405aa4fb20a59f60cdbdd52ec043372cedcdbbdb634c54483e1be51a88d13a5798180acb84c10b1297069fd", + "client_public_key": "2ec892bdbf9b3e2ea834be9eb11f5d187e64ba661ec041c0a3b66db8b7d6cc30", + "envelope": "ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfecb9dbe7d48cf714fc3533becab6faf60b783c94d258477eb74ecc453413bf61c53fd58f0fb3c1175410b674c02e1b59b2d729a865b709db3dc4ee2bb45703d5a8", + "handshake_secret": "562564da0d4efdc73cb6efbb454388dabfa5052d4e7e83f4d0240c5afd8352881e762755c2f1a9110e36b05fe770f0f48658489c9730dcd365e6c2d4049c8fe3", + "masking_key": "1ac5844383c7708077dea41cbefe2fa15724f449e535dd7dd562e66f5ecfb95864eadddec9db5874959905117dad40a4524111849799281fefe3c51fa82785c5", + "oprf_key": "5d4c6a8b7c7138182afb4345d1fae6a9f18a1744afbcc3854f8f5a2b4b4c6d05", + "randomized_pwd": "aac48c25ab036e30750839d31d6e73007344cb1155289fb7d329beb932e9adeea73d5d5c22a0ce1952f8aba6d66007615cd1698d4ac85ef1fcf150031d1435d9", + "server_mac_key": "59473632c53a647f9f4ab4d6c3b81e241dd9cb19ca05f0eabed7e593f0407ff57e7f060621e5e48d5291be600a1959fbecbc26d4a7157bd227a993c37b645f73" + }, + "outputs": { + "KE1": "c4dedb0ba6ed5d965d6f250fbe554cd45cba5dfcce3ce836e4aee778aa3cd44dda7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663", + "KE2": "7e308140890bcde30cbcea28b01ea1ecfbd077cff62c4def8efa075aabcbb47138fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6dd6ec60bcdb26dc455ddf3e718f1020490c192d70dfc7e403981179d8073d1146a4f9aa1ced4e4cd984c657eb3b54ced3848326f70331953d91b02535af44d9fe0610f003be80cb2098357928c8ea17bb065af33095f39d4e0b53b1687f02d522d96bad4ca354293d5c401177ccbd302cf565b96c327f71bc9eaf2890675d2fbb71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe40287f33611c2cf0eef57adbf48942737d9421e6b20e4b9d6e391d4168bf4bf96ea57aa42ad41c977605e027a9ef706a349f4b2919fe3562c8e86c4eeecf2f9457d4", + "KE3": "df9a13cd256091f90f0fcb2ef6b3411e4aebff07bb0813299c0ec7f5dedd33a7681231a001a82f1dece1777921f42abfeee551ee34392e1c9743c5cc1dc1ef8c", + "export_key": "1ef15b4fa99e8a852412450ab78713aad30d21fa6966c9b8c9fb3262a970dc62950d4dd4ed62598229b1b72794fc0335199d9f7fcc6eaedde92cc04870e63f16", + "registration_request": "5059ff249eb1551b7ce4991f3336205bde44a105a032e747d21bf382e75f7a71", + "registration_response": "7408a268083e03abc7097fc05b587834539065e86fb0c7b6342fcf5e01e5b019b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78", + "registration_upload": "2ec892bdbf9b3e2ea834be9eb11f5d187e64ba661ec041c0a3b66db8b7d6cc301ac5844383c7708077dea41cbefe2fa15724f449e535dd7dd562e66f5ecfb95864eadddec9db5874959905117dad40a4524111849799281fefe3c51fa82785c5ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfecb9dbe7d48cf714fc3533becab6faf60b783c94d258477eb74ecc453413bf61c53fd58f0fb3c1175410b674c02e1b59b2d729a865b709db3dc4ee2bb45703d5a8", + "session_key": "8a0f9f4928fc0c3b5bb261c4b7b3997600405424a8128632e85a5667b4b742484ed791933971be6d3fcf2b23c56b8e8f7e7edcae19a03b8fd87f5999fce129d2" + } + }, + { + "config": { + "Context": "4f50415155452d504f43", + "Fake": "False", + "Group": "ristretto255", + "Hash": "SHA512", + "KDF": "HKDF-SHA512", + "KSF": "Identity", + "MAC": "HMAC-SHA512", + "Name": "3DH", + "Nh": "64", + "Nm": "64", + "Nok": "32", + "Npk": "32", + "Nsk": "32", + "Nx": "64", + "OPRF": "ristretto255-SHA512" + }, + "inputs": { + "blind_login": "6ecc102d2e7a7cf49617aad7bbe188556792d4acd60a1a8a8d2b65d4b0790308", + "blind_registration": "76cfbfe758db884bebb33582331ba9f159720ca8784a2a070a265d9c2d6abe01", + "client_identity": "616c696365", + "client_keyshare": "0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663", + "client_nonce": "da7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc", + "client_private_keyshare": "22c919134c9bdd9dc0c5ef3450f18b54820f43f646a95223bf4a85b2018c2001", + "credential_identifier": "31323334", + "envelope_nonce": "ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec", + "masking_nonce": "38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d", + "oprf_seed": "f433d0227b0b9dd54f7c4422b600e764e47fb503f1f9a0f0a47c6606b054a7fdc65347f1a08f277e22358bbabe26f823fca82c7848e9a75661f4ec5d5c1989ef", + "password": "436f7272656374486f72736542617474657279537461706c65", + "server_identity": "626f62", + "server_keyshare": "c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe4028", + "server_nonce": "71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1", + "server_private_key": "47451a85372f8b3537e249d7b54188091fb18edde78094b43e2ba42b5eb89f0d", + "server_private_keyshare": "2e842960258a95e28bcfef489cffd19d8ec99cc1375d840f96936da7dbb0b40d", + "server_public_key": "b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78" + }, + "intermediates": { + "auth_key": "6cd32316f18d72a9a927a83199fa030663a38ce0c11fbaef82aa90037730494fc555c4d49506284516edd1628c27965b7555a4ebfed2223199f6c67966dde822", + "client_mac_key": "156e4ab0b9f71ef994bbbb73928e6d14d7335cf9561f113d61ac6b41fab35f9c72fe827d3c4d7dd91d8398ee619810e4f9286e6b32f329eb6b1476ce18fa8500", + "client_public_key": "2ec892bdbf9b3e2ea834be9eb11f5d187e64ba661ec041c0a3b66db8b7d6cc30", + "envelope": "ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec1ac902dc5589e9a5f0de56ad685ea8486210ef41449cd4d8712828913c5d2b680b2b3af4a26c765cff329bfb66d38ecf1d6cfa9e7a73c222c6efe0d9520f7d7c", + "handshake_secret": "bc2abaa979af9cbb6859856b7d5d201a038fbdfa7e10f11d131d3f8f6fc3b263bde4db6d2d9207d4648ff80415a276d5f157f9d37a3eade559db2e5f3fa026b2", + "masking_key": "1ac5844383c7708077dea41cbefe2fa15724f449e535dd7dd562e66f5ecfb95864eadddec9db5874959905117dad40a4524111849799281fefe3c51fa82785c5", + "oprf_key": "5d4c6a8b7c7138182afb4345d1fae6a9f18a1744afbcc3854f8f5a2b4b4c6d05", + "randomized_pwd": "aac48c25ab036e30750839d31d6e73007344cb1155289fb7d329beb932e9adeea73d5d5c22a0ce1952f8aba6d66007615cd1698d4ac85ef1fcf150031d1435d9", + "server_mac_key": "2420461c589866700b08c8818cbf390c872629a14cf32a264dad3375f85f33188c8f04bdb71880b2d4613187a0e416808ab62b45858b88319882602371ef5f75" + }, + "outputs": { + "KE1": "c4dedb0ba6ed5d965d6f250fbe554cd45cba5dfcce3ce836e4aee778aa3cd44dda7e07376d6d6f034cfa9bb537d11b8c6b4238c334333d1f0aebb380cae6a6cc0c3a00c961fead8a16f818929cc976f0475e4f723519318b96f4947a7a5f9663", + "KE2": "7e308140890bcde30cbcea28b01ea1ecfbd077cff62c4def8efa075aabcbb47138fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6dd6ec60bcdb26dc455ddf3e718f1020490c192d70dfc7e403981179d8073d1146a4f9aa1ced4e4cd984c657eb3b54ced3848326f70331953d91b02535af44d9fea502150b67fe36795dd8914f164e49f81c7688a38928372134b7dccd50e09f8fed9518b7b2f94835b3c4fe4c8475e7513f20eb97ff0568a39caee3fd6251876f71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1c8c39f573135474c51660b02425bca633e339cec4e1acc69c94dd48497fe4028c463164503598ea84fab9005b9cd51b7bb3206fb22a412e8a86b9cb6ffca18f5ea6b4c24fdc94865e8bf74248e6be15b85b1604140ffad2175f9518452d381af", + "KE3": "a86ece659d90525e2476aa1756d313b067581cb7b0643b97be6b8ab8d0f1084357e514ecfaff9dc18f6cca37da630545f0048393f16bc175eb819653ebc45b60", + "export_key": "1ef15b4fa99e8a852412450ab78713aad30d21fa6966c9b8c9fb3262a970dc62950d4dd4ed62598229b1b72794fc0335199d9f7fcc6eaedde92cc04870e63f16", + "registration_request": "5059ff249eb1551b7ce4991f3336205bde44a105a032e747d21bf382e75f7a71", + "registration_response": "7408a268083e03abc7097fc05b587834539065e86fb0c7b6342fcf5e01e5b019b2fe7af9f48cc502d016729d2fe25cdd433f2c4bc904660b2a382c9b79df1a78", + "registration_upload": "2ec892bdbf9b3e2ea834be9eb11f5d187e64ba661ec041c0a3b66db8b7d6cc301ac5844383c7708077dea41cbefe2fa15724f449e535dd7dd562e66f5ecfb95864eadddec9db5874959905117dad40a4524111849799281fefe3c51fa82785c5ac13171b2f17bc2c74997f0fce1e1f35bec6b91fe2e12dbd323d23ba7a38dfec1ac902dc5589e9a5f0de56ad685ea8486210ef41449cd4d8712828913c5d2b680b2b3af4a26c765cff329bfb66d38ecf1d6cfa9e7a73c222c6efe0d9520f7d7c", + "session_key": "0968e91efeb702d6aa09023a9a79803332d8bd3442a79b8ad09490b9267161013bf475bed945238a5e976ef7d7de7ff41ae30439fe2fc39758fb3e56f2683e60" + } + }, + { + "config": { + "Context": "4f50415155452d504f43", + "Fake": "False", + "Group": "P256_XMD:SHA-256_SSWU_RO_", + "Hash": "SHA256", + "KDF": "HKDF-SHA256", + "KSF": "Identity", + "MAC": "HMAC-SHA256", + "Name": "3DH", + "Nh": "32", + "Nm": "32", + "Nok": "32", + "Npk": "33", + "Nsk": "32", + "Nx": "32", + "OPRF": "P256-SHA256" + }, + "inputs": { + "blind_login": "c497fddf6056d241e6cf9fb7ac37c384f49b357a221eb0a802c989b9942256c1", + "blind_registration": "411bf1a62d119afe30df682b91a0a33d777972d4f2daa4b34ca527d597078153", + "client_keyshare": "03493f36ca12467d1f5eaaabea67ca31377c4869c1e9a62346b6f01a991624b95d", + "client_nonce": "ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f91fdaeeb1", + "client_private_keyshare": "89d5a7e18567f255748a86beac13913df755a5adf776d69e143147b545d22134", + "credential_identifier": "31323334", + "envelope_nonce": "a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf65670e51f", + "masking_nonce": "38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d", + "oprf_seed": "62f60b286d20ce4fd1d64809b0021dad6ed5d52a2c8cf27ae6582543a0a8dce2", + "password": "436f7272656374486f72736542617474657279537461706c65", + "server_keyshare": "020e67941e94deba835214421d2d8c90de9b0f7f925d11e2032ce19b1832ae8e0f", + "server_nonce": "71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1", + "server_private_key": "c36139381df63bfc91c850db0b9cfbec7a62e86d80040a41aa7725bf0e79d5e5", + "server_private_keyshare": "9addab838c920fa7044f3a46b91ecaea24b0e72039928ee7d4c37a5b9bc17349", + "server_public_key": "035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd9f2092d6067784874" + }, + "intermediates": { + "auth_key": "5bd4be1602516092dc5078f8d699f5721dc1720a49fb80d8e5c16377abd0987b", + "client_mac_key": "7329ffd54df21db5532fce8794fca78b505fef9397aad28a424f6ea3f97c51ca", + "client_public_key": "02dc91b178ba2c4bbf9b9403fca25457b906a7f507e59b6e703031e09114ba2be0", + "envelope": "a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf65670e51fe155412cb432898eda63529c3b2633521f770cccbd25d7548a4e20665a45e65a", + "handshake_secret": "c59197dd9269abfdb3037ea1c203a97627e2c0aa142000d1c3f06a2c8713077d", + "masking_key": "7f0ed53532d3ae8e505ecc70d42d2b814b6b0e48156def71ea029148b2803aaf", + "oprf_key": "2dfb5cb9aa1476093be74ca0d43e5b02862a05f5d6972614d7433acdc66f7f31", + "randomized_pwd": "06be0a1a51d56557a3adad57ba29c5510565dcd8b5078fa319151b9382258fb0", + "server_mac_key": "a431a5c1d3cb5772cbc66af0c2851e23dd9ad153a0c8b99081c7d0d543173fde" + }, + "outputs": { + "KE1": "037342f0bcb3ecea754c1e67576c86aa90c1de3875f390ad599a26686cdfee6e07ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f91fdaeeb103493f36ca12467d1f5eaaabea67ca31377c4869c1e9a62346b6f01a991624b95d", + "KE2": "0246da9fe4d41d5ba69faa6c509a1d5bafd49a48615a47a8dd4b0823cc1476481138fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d2f0c547f70deaeca54d878c14c1aa5e1ab405dec833777132eea905c2fbb12504a67dcbe0e66740c76b62c13b04a38a77926e19072953319ec65e41f9bfd2ae2687bd3348bfe33cb0bb9864fdb3b307f7dd68a17f3f150074a0bfc830ab889717d71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1020e67941e94deba835214421d2d8c90de9b0f7f925d11e2032ce19b1832ae8e0fb5166145361a2c344d9737dd5c826fede3bbfafa418ad379ce4fa65fbb15db6e", + "KE3": "272d04758b2b436bf0239ba7b9bd0a1686a9b6542ceaaf08732054beda956498", + "export_key": "c3c9a1b0e33ac84dd83d0b7e8af6794e17e7a3caadff289fbd9dc769a853c64b", + "registration_request": "029e949a29cfa0bf7c1287333d2fb3dc586c41aa652f5070d26a5315a1b50229f8", + "registration_response": "0350d3694c00978f00a5ce7cd08a00547e4ab5fb5fc2b2f6717cdaa6c89136efef035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd9f2092d6067784874", + "registration_upload": "02dc91b178ba2c4bbf9b9403fca25457b906a7f507e59b6e703031e09114ba2be07f0ed53532d3ae8e505ecc70d42d2b814b6b0e48156def71ea029148b2803aafa921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf65670e51fe155412cb432898eda63529c3b2633521f770cccbd25d7548a4e20665a45e65a", + "session_key": "a224790a010afc0a3f37e23c1b7a5cb7f9e73e3d9a924116510d97d80e2a1e0c" + } + }, + { + "config": { + "Context": "4f50415155452d504f43", + "Fake": "False", + "Group": "P256_XMD:SHA-256_SSWU_RO_", + "Hash": "SHA256", + "KDF": "HKDF-SHA256", + "KSF": "Identity", + "MAC": "HMAC-SHA256", + "Name": "3DH", + "Nh": "32", + "Nm": "32", + "Nok": "32", + "Npk": "33", + "Nsk": "32", + "Nx": "32", + "OPRF": "P256-SHA256" + }, + "inputs": { + "blind_login": "c497fddf6056d241e6cf9fb7ac37c384f49b357a221eb0a802c989b9942256c1", + "blind_registration": "411bf1a62d119afe30df682b91a0a33d777972d4f2daa4b34ca527d597078153", + "client_identity": "616c696365", + "client_keyshare": "03493f36ca12467d1f5eaaabea67ca31377c4869c1e9a62346b6f01a991624b95d", + "client_nonce": "ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f91fdaeeb1", + "client_private_keyshare": "89d5a7e18567f255748a86beac13913df755a5adf776d69e143147b545d22134", + "credential_identifier": "31323334", + "envelope_nonce": "a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf65670e51f", + "masking_nonce": "38fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d", + "oprf_seed": "62f60b286d20ce4fd1d64809b0021dad6ed5d52a2c8cf27ae6582543a0a8dce2", + "password": "436f7272656374486f72736542617474657279537461706c65", + "server_identity": "626f62", + "server_keyshare": "020e67941e94deba835214421d2d8c90de9b0f7f925d11e2032ce19b1832ae8e0f", + "server_nonce": "71cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1", + "server_private_key": "c36139381df63bfc91c850db0b9cfbec7a62e86d80040a41aa7725bf0e79d5e5", + "server_private_keyshare": "9addab838c920fa7044f3a46b91ecaea24b0e72039928ee7d4c37a5b9bc17349", + "server_public_key": "035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd9f2092d6067784874" + }, + "intermediates": { + "auth_key": "5bd4be1602516092dc5078f8d699f5721dc1720a49fb80d8e5c16377abd0987b", + "client_mac_key": "e48e2064cf570dbd18eb42550d4459c58ac4ae4e28881d1aefbabd668f7f1df9", + "client_public_key": "02dc91b178ba2c4bbf9b9403fca25457b906a7f507e59b6e703031e09114ba2be0", + "envelope": "a921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf65670e51f4d7773a36a208a866301dbb2858e40dc5638017527cf91aef32d3848eebe0971", + "handshake_secret": "0ee4a82c4a34992f72bfbcb5d2ce64044477dfe200b9d8c92bf1759b219b3485", + "masking_key": "7f0ed53532d3ae8e505ecc70d42d2b814b6b0e48156def71ea029148b2803aaf", + "oprf_key": "2dfb5cb9aa1476093be74ca0d43e5b02862a05f5d6972614d7433acdc66f7f31", + "randomized_pwd": "06be0a1a51d56557a3adad57ba29c5510565dcd8b5078fa319151b9382258fb0", + "server_mac_key": "77ebd7511216a51e9c2f3368ce6c1e40513f24b6f42085ef18e7f737b427aab5" + }, + "outputs": { + "KE1": "037342f0bcb3ecea754c1e67576c86aa90c1de3875f390ad599a26686cdfee6e07ab3d33bde0e93eda72392346a7a73051110674bbf6b1b7ffab8be4f91fdaeeb103493f36ca12467d1f5eaaabea67ca31377c4869c1e9a62346b6f01a991624b95d", + "KE2": "0246da9fe4d41d5ba69faa6c509a1d5bafd49a48615a47a8dd4b0823cc1476481138fe59af0df2c79f57b8780278f5ae47355fe1f817119041951c80f612fdfc6d2f0c547f70deaeca54d878c14c1aa5e1ab405dec833777132eea905c2fbb12504a67dcbe0e66740c76b62c13b04a38a77926e19072953319ec65e41f9bfd2ae268d7f106042021c80300e4c6f585980cf39fc51a4a6bba41b0729f9b240c729e5671cd9960ecef2fe0d0f7494986fa3d8b2bb01963537e60efb13981e138e3d4a1020e67941e94deba835214421d2d8c90de9b0f7f925d11e2032ce19b1832ae8e0fdca637d2a5390f4c809a67b46977c536fe9f643f703178a17a413d14e4bb523c", + "KE3": "298cd0077d018f122bc95d706e5fef06537814c567f08d5e40b0c0ae918f9287", + "export_key": "c3c9a1b0e33ac84dd83d0b7e8af6794e17e7a3caadff289fbd9dc769a853c64b", + "registration_request": "029e949a29cfa0bf7c1287333d2fb3dc586c41aa652f5070d26a5315a1b50229f8", + "registration_response": "0350d3694c00978f00a5ce7cd08a00547e4ab5fb5fc2b2f6717cdaa6c89136efef035f40ff9cf88aa1f5cd4fe5fd3da9ea65a4923a5594f84fd9f2092d6067784874", + "registration_upload": "02dc91b178ba2c4bbf9b9403fca25457b906a7f507e59b6e703031e09114ba2be07f0ed53532d3ae8e505ecc70d42d2b814b6b0e48156def71ea029148b2803aafa921f2a014513bd8a90e477a629794e89fec12d12206dde662ebdcf65670e51f4d7773a36a208a866301dbb2858e40dc5638017527cf91aef32d3848eebe0971", + "session_key": "0c59872e9bcdde274f4f52f6ba0fd1acca211d6eb7db98677b457a739ef1f0d8" + } + }, + { + "config": { + "Context": "4f50415155452d504f43", + "Fake": "True", + "Group": "ristretto255", + "Hash": "SHA512", + "KDF": "HKDF-SHA512", + "KSF": "Identity", + "MAC": "HMAC-SHA512", + "Name": "3DH", + "Nh": "64", + "Nm": "64", + "Nok": "32", + "Npk": "32", + "Nsk": "32", + "Nx": "64", + "OPRF": "ristretto255-SHA512" + }, + "inputs": { + "KE1": "b0a26dcaca2230b8f5e4b1bcab9c84b586140221bb8b2848486874b0be44890542d4e61ed3f8d64cdd3b9d153343eca15b9b0d5e388232793c6376bd2d9cfd0a0e4ed8bcc15f3dd01a30365c97c0c0de0a3dd3fbf5d3cbec55fb6ac1d3bf740f", + "client_identity": "616c696365", + "client_private_key": "2b98980aa95ab53a0f39f0291903d2fdf04b00c167f0814169922df873002409", + "client_public_key": "84f43f9492e19c22d8bdaa4447cc3d4db1cdb5427a9f852c4707921212c36251", + "credential_identifier": "31323334", + "masking_key": "39ebd51f0e39a07a1c2d2431995b0399bca9996c5d10014d6ebab4453dc10ce5cef38ed3df6e56bfff40c2d8dd4671c2b4cf63c3d54860f31fe40220d690bb71", + "masking_nonce": "9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a6", + "oprf_seed": "743fc168d1f826ad43738933e5adb23da6fb95f95a1b069f0daa0522d0a78b617f701fc6aa46d3e7981e70de7765dfcd6b1e13e3369a582eb8dc456b10aa53b0", + "server_identity": "626f62", + "server_keyshare": "5236e2e06d49f0b496db2a786f6ee1016f15b4fd6c0dbd95d6b117055d914157", + "server_nonce": "1e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813055ae2d12", + "server_private_key": "c788585ae8b5ba2942b693b849be0c0426384e41977c18d2e81fbe30fd7c9f06", + "server_private_keyshare": "6d8fba9741a357584770f85294430bce2252fe212a8a372152a73c7ffe414503", + "server_public_key": "825f832667480f08b0c9069da5083ac4d0e9ee31b49c4e0310031fea04d52966" + }, + "intermediates": {}, + "outputs": { + "KE2": "928f79ad8df21963e91411b9f55165ba833dea918f441db967cdc09521d229259c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a632b5ab1bff96636144faa4f9f9afaac75dd88ea99cf5175902ae3f3b2195693f165f11929ba510a5978e64dcdabecbd7ee1e4380ce270e58fea58e6462d92964a1aaef72698bca1c673baeb04cc2bf7de5f3c2f5553464552d3a0f7698a9ca7f9c5e70c6cb1f706b2f175ab9d04bbd13926e816b6811a50b4aafa9799d5ed7971e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813055ae2d125236e2e06d49f0b496db2a786f6ee1016f15b4fd6c0dbd95d6b117055d914157cb5e11625c701e642293ad32bfcf88da653c9b6e71efc8a89607fd46ed5e7b9bf7cc7dbb997a4fd41194a04bcd0c5d88052e080a2f02c68d8d9e9c0ce15c92ff" + } + }, + { + "config": { + "Context": "4f50415155452d504f43", + "Fake": "True", + "Group": "P256_XMD:SHA-256_SSWU_RO_", + "Hash": "SHA256", + "KDF": "HKDF-SHA256", + "KSF": "Identity", + "MAC": "HMAC-SHA256", + "Name": "3DH", + "Nh": "32", + "Nm": "32", + "Nok": "32", + "Npk": "33", + "Nsk": "32", + "Nx": "32", + "OPRF": "P256-SHA256" + }, + "inputs": { + "KE1": "0396875da2b4f7749bba411513aea02dc514a48d169d8a9531bd61d3af3fa9baae42d4e61ed3f8d64cdd3b9d153343eca15b9b0d5e388232793c6376bd2d9cfd0a03994d4f1221bfd205063469e92ea4d492f7cc76a327223633ab74590c30cf7285", + "client_identity": "616c696365", + "client_private_key": "d423b87899fc61d014fc8330a4e26190fcfa470a3afe5924324294af7dbbc1dd", + "client_public_key": "03b81708eae026a9370616c22e1e8542fe9dbebd36ce8a2661b708e9628f4a57fc", + "credential_identifier": "31323334", + "masking_key": "caecc6ccb4cae27cb54d8f3a1af1bac52a3d53107ce08497cdd362b1992e4e5e", + "masking_nonce": "9c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a6", + "oprf_seed": "bb1cd59e16ac09bc0cb6d528541695d7eba2239b1613a3db3ade77b36280f725", + "server_identity": "626f62", + "server_keyshare": "03f42965d5bcba2a590a49eb2418061effe40b5c29a34b8e5163e0ef32044b2e4c", + "server_nonce": "1e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813055ae2d12", + "server_private_key": "34fbe7e830be1fe8d2187c97414e3826040cbe49b893b64229bab5e85a5888c7", + "server_private_keyshare": "1a2a0ff27f3ca75221378a2a21fe5222ce0b439452f870475857a34197ba8f6d", + "server_public_key": "0221e034c0e202fe883dcfc96802a7624166fed4cfcab4ae30cf5f3290d01c88bf" + }, + "intermediates": {}, + "outputs": { + "KE2": "0201198dcd13f9792eb75dcfa815f61b049abfe2e3e9456d4bbbceec5f442efd049c035896a043e70f897d87180c543e7a063b83c1bb728fbd189c619e27b6e5a6facda65ce0a97b9085e7af07f61fd3fdd046d257cbf2183ce8766090b8041a8bf28d79dd4c9031ddc75bb6ddb4c291e639937840e3d39fc0d5a3d6e7723c09f7945df485bcf9aefe3fe82d149e84049e259bb5b33d6a2ff3b25e4bfb7eff0962821e10f6eeab2a7a420bf09da9b27a4639645622c46358de9cf7ae813055ae2d1203f42965d5bcba2a590a49eb2418061effe40b5c29a34b8e5163e0ef32044b2e4c196137813ed8ec48627f0b0d90d9427f4ec137f8360769df167c25836eae5d91" } - ] -} + } +] diff --git a/test/data/voprf/ristretto255_sha512_oprf.json b/test/data/voprf/ristretto255_sha512_oprf.json index 9c66c98f..5e128969 100644 --- a/test/data/voprf/ristretto255_sha512_oprf.json +++ b/test/data/voprf/ristretto255_sha512_oprf.json @@ -1,21 +1,21 @@ { "Seed": "a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3", "KeyInfo": "74657374206b6579", - "skSm": "e617ae6f2d10de61e16cab73023c5a2df74335d13f89470957214664468d2e0b", + "skSm": "5ebcea5ee37023ccb9fc2d2019f9d7737be85591ae8652ffa9ef0f4d37063b0e", "vectors": [ { "Input": "00", "Blind": "64d37aed22a27f5191de1c1d69fadb899d8862b58eb4220029e036ec4c1f6706", - "BlindedElement": "c83d0d8a3e80be2ced8bf35c5f3e24d42260ca8fa9a0403ca83033588c26614d", - "EvaluationElement": "b29ca44d6dfafc77a50b72abc53cfb7abcbe9cf6714afc76893ee8dcaf053b59", - "Output": "8a19c9b8f4459d541ebbfff4e29f36620e44e825a27b0f2e3a3c0d8e963588ee04348312dc8b43a48c41d4e7d904f95c91813a6b4f624392433f0568409da628" + "BlindedElement": "609a0ae68c15a3cf6903766461307e5c8bb2f95e7e6550e1ffa2dc99e412803c", + "EvaluationElement": "7ec6578ae5120958eb2db1745758ff379e77cb64fe77b0b2d8cc917ea0869c7e", + "Output": "527759c3d9366f277d8c6020418d96bb393ba2afb20ff90df23fb7708264e2f3ab9135e3bd69955851de4b1f9fe8a0973396719b7912ba9ee8aa7d0b5e24bcf6" }, { "Input": "5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a", "Blind": "64d37aed22a27f5191de1c1d69fadb899d8862b58eb4220029e036ec4c1f6706", - "BlindedElement": "8673ffd2f26b2579922fc485c77e106def00982e0abb233b4c6e54841d43ba29", - "EvaluationElement": "68ed7037846f48a1b4073a0d110f6e4de8f53ab845365c0f3d7f1b67caa39126", - "Output": "bcdbd421c0863495d63d81a868858f34f5215437c5777072a92703f36b36c4a2d3e7e54a5762e70b06223527c211e2d4364481270f72971a2db8b7ab8fad84ee" + "BlindedElement": "da27ef466870f5f15296299850aa088629945a17d1f5b7f5ff043f76b3c06418", + "EvaluationElement": "b4cbf5a4f1eeda5a63ce7b77c7d23f461db3fcab0dd28e4e17cecb5c90d02c25", + "Output": "f4a74c9c592497375e796aa837e907b1a045d34306a749db9f34221f7e750cb4f2a6413a6bf6fa5e19ba6348eb673934a722a7ede2e7621306d18951e7cf2c73" } ] } diff --git a/test/data/voprf/ristretto255_sha512_poprf.json b/test/data/voprf/ristretto255_sha512_poprf.json index 5c4db2ea..3876cc07 100644 --- a/test/data/voprf/ristretto255_sha512_poprf.json +++ b/test/data/voprf/ristretto255_sha512_poprf.json @@ -1,28 +1,28 @@ { "Seed": "a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3", "KeyInfo": "74657374206b6579", - "skSm": "024eaeb72e5b3729d7f19d90aa44e3d2f4c445fb29011ffd755655636f2b100a", - "pkSm": "e001954ccd18ec5aa89bcbf26c03d84dc4d9c9b973d9f06b1e0ceb7b79f41d65", + "skSm": "145c79c108538421ac164ecbe131942136d5570b16d8bf41a24d4337da981e07", + "pkSm": "c647bef38497bc6ec077c22af65b696efa43bff3b4a1975a3e8e0a1c5a79d631", "vectors": [ { "Input": "00", "Info": "7465737420696e666f", "Blind": "64d37aed22a27f5191de1c1d69fadb899d8862b58eb4220029e036ec4c1f6706", - "BlindedElement": "009ffa1ffc529e4f1d3d8de1c06d22fbb15e39920a72ad4efed6c39af9438a2d", - "EvaluationElement": "aa9af25bf4edead5e2e0a4b8f93db9b497017f93cf68c75045f02172bfc5d304", - "Proof": "bb893ccce54685a871185bb056cb5e0594d09d3b53f2f879de06a650b8aeff08371f2ff9f3d5cac7f393cc37b2c71c2a6fbb80f35fe36b8e5cbddf11469c8e03", + "BlindedElement": "c8713aa89241d6989ac142f22dba30596db635c772cbf25021fdd8f3d461f715", + "EvaluationElement": "1a4b860d808ff19624731e67b5eff20ceb2df3c3c03b906f5693e2078450d874", + "Proof": "41ad1a291aa02c80b0915fbfbb0c0afa15a57e2970067a602ddb9e8fd6b7100de32e1ecff943a36f0b10e3dae6bd266cdeb8adf825d86ef27dbc6c0e30c52206", "ProofRandomScalar": "222a5e897cf59db8145db8d16e597e8facb80ae7d4e26d9881aa6f61d645fc0e", - "Output": "e7ed59e3f808c369598961ebfd9af74272894e0904d1c11653a21b08204dba1a5fb5c3dd6be6c419190a84b576d91eb3d8d920d450fee0427fd24524950d72d6" + "Output": "ca688351e88afb1d841fde4401c79efebb2eb75e7998fa9737bd5a82a152406d38bd29f680504e54fd4587eddcf2f37a2617ac2fbd2993f7bdf45442ace7d221" }, { "Input": "5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a", "Info": "7465737420696e666f", "Blind": "64d37aed22a27f5191de1c1d69fadb899d8862b58eb4220029e036ec4c1f6706", - "BlindedElement": "5e009e08e228f95ee3703cff60a1d54225bb282bdb6d7dc9a78e287f8418315a", - "EvaluationElement": "2e528236481eb6d87b07ef5f8c17910323d04b3bf0cb2f2d23d5a7ad9f069b22", - "Proof": "3796381ab287189839288bbaffc971eb87c3a28226fa99dc83b363adb2f4b20e4ae81fb675ebcd43d13918f71846cb488d0ce7d473bfca68450a5a5472564500", + "BlindedElement": "f0f0b209dd4d5f1844dac679acc7761b91a2e704879656cb7c201e82a99ab07d", + "EvaluationElement": "8c3c9d064c334c6991e99f286ea2301d1bde170b54003fb9c44c6d7bd6fc1540", + "Proof": "4c39992d55ffba38232cdac88fe583af8a85441fefd7d1d4a8d0394cd1de77018bf135c174f20281b3341ab1f453fe72b0293a7398703384bed822bfdeec8908", "ProofRandomScalar": "222a5e897cf59db8145db8d16e597e8facb80ae7d4e26d9881aa6f61d645fc0e", - "Output": "9a0d8c55e2fef4bada9fb5877a0e739496e539a0d835722911dab9ec112397e763a605acbc072619e8b8acefb8ee704a357556edc802648089d684baa763ce14" + "Output": "7c6557b276a137922a0bcfc2aa2b35dd78322bd500235eb6d6b6f91bc5b56a52de2d65612d503236b321f5d0bebcbc52b64b92e426f29c9b8b69f52de98ae507" } ] } diff --git a/test/data/voprf/ristretto255_sha512_voprf.json b/test/data/voprf/ristretto255_sha512_voprf.json index d465ede5..98eecc70 100644 --- a/test/data/voprf/ristretto255_sha512_voprf.json +++ b/test/data/voprf/ristretto255_sha512_voprf.json @@ -1,26 +1,26 @@ { "Seed": "a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3", "KeyInfo": "74657374206b6579", - "skSm": "a3b8dea4a99be2469da7f7d2d93fe5f2867317d6705350475d47739c7214da07", - "pkSm": "c00fbee6832a8e5d6cc1d1a23315daf6a6018f19e29ba37b05499259da854b48", + "skSm": "e6f73f344b79b379f1a0dd37e07ff62e38d9f71345ce62ae3a9bc60b04ccd909", + "pkSm": "c803e2cc6b05fc15064549b5920659ca4a77b2cca6f04f6b357009335476ad4e", "vectors": [ { "Input": "00", "Blind": "64d37aed22a27f5191de1c1d69fadb899d8862b58eb4220029e036ec4c1f6706", - "BlindedElement": "6cce2c7913f4c8c0ac44ec149a1544b0e711e1630753d4efc7c5fe36a4d50638", - "EvaluationElement": "826f2f3e553a039bcd69c9df6cb166e7943fd207089ae7041f6041322ce7033a", - "Proof": "2e541a6962e783d2f42d5f4fb1364e51c368e95e83a962614714e9dfe21a720cd8c8eb8106131b4a758b5a0987d3870adb348f5eae7b4a2bc26735928cc4b90c", + "BlindedElement": "863f330cc1a1259ed5a5998a23acfd37fb4351a793a5b3c090b642ddc439b945", + "EvaluationElement": "aa8fa048764d5623868679402ff6108d2521884fa138cd7f9c7669a9a014267e", + "Proof": "ddef93772692e535d1a53903db24367355cc2cc78de93b3be5a8ffcc6985dd066d4346421d17bf5117a2a1ff0fcb2a759f58a539dfbe857a40bce4cf49ec600d", "ProofRandomScalar": "222a5e897cf59db8145db8d16e597e8facb80ae7d4e26d9881aa6f61d645fc0e", - "Output": "4d5dd83db5bfd850e3e0c17519f1013aab904e7b131dc1ded31f7a76aacf040f6b344b0e635cf6df30771a35157e0e3d9539f7a891b48cd8521692b15c51538d" + "Output": "b58cfbe118e0cb94d79b5fd6a6dafb98764dff49c14e1770b566e42402da1a7da4d8527693914139caee5bd03903af43a491351d23b430948dd50cde10d32b3c" }, { "Input": "5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a", "Blind": "64d37aed22a27f5191de1c1d69fadb899d8862b58eb4220029e036ec4c1f6706", - "BlindedElement": "6a4e632b76a2cfcb0295ee74098a15a3e858f6006fd9fa8576a5813e051ac134", - "EvaluationElement": "2cb879d933a1af46c77e89f3f39a38f80347bf4716da3dc307c8aa1282179823", - "Proof": "eabae3489c46b9e9a8da0cc921d2bc2960ef5fb0b38c8f067cc5c21f62f4eb0ff5472009aec126f543b6051b5d62ccbf2625aab6684076c26cfdf0904257090c", + "BlindedElement": "cc0b2a350101881d8a4cba4c80241d74fb7dcbfde4a61fde2f91443c2bf9ef0c", + "EvaluationElement": "60a59a57208d48aca71e9e850d22674b611f752bed48b36f7a91b372bd7ad468", + "Proof": "401a0da6264f8cf45bb2f5264bc31e109155600babb3cd4e5af7d181a2c9dc0a67154fabf031fd936051dec80b0b6ae29c9503493dde7393b722eafdf5a50b02", "ProofRandomScalar": "222a5e897cf59db8145db8d16e597e8facb80ae7d4e26d9881aa6f61d645fc0e", - "Output": "5c3fe06ef39905710a124df0727c6c938f48234b35ccc4548c0736d7f6f36e6b7333a9aefc93d6b1ee20151a40bce453866b62cf5d41799982fee61006809159" + "Output": "8a9a2f3c7f085b65933594309041fc1898d42d0858e59f90814ae90571a6df60356f4610bf816f27afdd84f47719e480906d27ecd994985890e5f539e7ea74b6" } ] } diff --git a/test/test_voprf.c b/test/test_voprf.c index 2e240834..4dbd5d7a 100644 --- a/test/test_voprf.c +++ b/test/test_voprf.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2022, Alden Torres + * Copyright (c) 2021-2023, Alden Torres * * Licensed under the terms of the MIT license. * Copy of the license at https://opensource.org/licenses/MIT @@ -7,7 +7,6 @@ #include "ecc_test.h" -// https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-16#appendix-A-1-1 static void test_ecc_voprf_ristretto255_sha512_oprf(void **state) { ECC_UNUSED(state); @@ -92,7 +91,6 @@ static void test_ecc_voprf_ristretto255_sha512_oprf(void **state) { ecc_json_destroy(json); } -// https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-voprf-16#appendix-A-1-2 static void test_ecc_voprf_ristretto255_sha512_voprf(void **state) { ECC_UNUSED(state);