From nobody Fri Dec 19 17:16:03 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BC8B5350287 for ; Thu, 6 Nov 2025 17:45:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451118; cv=none; b=n0dyGlhoPpYp/smZ2bgW7BwUuyFYaL7K1DWyWBBO0ZlS+yKiNFoqtn5lguK82i7wWb94EU4Xub/viTraCLIRoIZ7BRg/16T7DYn6JF9DbO2ZHdoDM4V1qTNc6ZnxCcdvEgXYvepkAKhhFh170iqPKDmeBvh5EoVnmpdoe5MtCC0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451118; c=relaxed/simple; bh=k61MYFMMaFNORE143WuR8u8TMnZTQTMl3pAPZVZYr3U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S47OyBgDauoXyWjFY7A9qfiDLRQE/IxwgPtRKJtJVOOJyTRazJQQfhoiwieoQqv9MvVqeE+9CdPYgKZUe0fhqBZHzLMcwEe1rMjMHELvuwLKMnrKhsnhi1FVotpkXvbawO8s1nP0mxTS1aEUE1NR0Z0GfDUmOQONmgbNW+9evOI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Ufbh2dua; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Ufbh2dua" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762451115; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OUQdQwyIqZTzeJrYIiFd0wR4yxjGopoVQGhDss0o5hs=; b=Ufbh2duaKcqCfMpCunKkdBFMtn/LikQuXxdA+hxM7sE1dMipGA4/5Lv0zCE7L+HDEm/jZy PsD30uGbqlsmi+xOkjUDy4wnJkpQspwPG+b391SBOgaNca37AaA95wUFIlXg+3cgK0LFun 26EC3+OvjpYQuUSkLuQTa+kHx+I/L+s= Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-116-75TfXcyxOSeENyVvi_n7fg-1; Thu, 06 Nov 2025 12:45:12 -0500 X-MC-Unique: 75TfXcyxOSeENyVvi_n7fg-1 X-Mimecast-MFC-AGG-ID: 75TfXcyxOSeENyVvi_n7fg_1762451110 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CFF12193E8BA; Thu, 6 Nov 2025 17:45:09 +0000 (UTC) Received: from warthog.procyon.org.com (unknown [10.42.28.6]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id B66D41800875; Thu, 6 Nov 2025 17:45:05 +0000 (UTC) From: David Howells To: Herbert Xu Cc: David Howells , Eric Biggers , Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , "Jason A . Donenfeld" , Ard Biesheuvel , Stephan Mueller , Lukas Wunner , Ignat Korchagin , linux-crypto@vger.kernel.org, keyrings@vger.kernel.org, linux-modules@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 1/8] crypto: Add support for shake256 through crypto_shash Date: Thu, 6 Nov 2025 17:44:45 +0000 Message-ID: <20251106174456.31818-2-dhowells@redhat.com> In-Reply-To: <20251106174456.31818-1-dhowells@redhat.com> References: <20251106174456.31818-1-dhowells@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Content-Type: text/plain; charset="utf-8" Add shake256 support to the SHA-3 crypto_sig module so that ML-DSA can use it. Signed-off-by: David Howells cc: Stephan Mueller cc: Eric Biggers cc: Jason A. Donenfeld cc: Ard Biesheuvel cc: Herbert Xu cc: linux-crypto@vger.kernel.org --- crypto/sha3.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/crypto/sha3.c b/crypto/sha3.c index 8f364979ec89..be1d18baee8d 100644 --- a/crypto/sha3.c +++ b/crypto/sha3.c @@ -9,6 +9,7 @@ #include =20 #define SHA3_CTX(desc) ((struct sha3_ctx *)shash_desc_ctx(desc)) +#define SHAKE_CTX(desc) ((struct shake_ctx *)shash_desc_ctx(desc)) =20 static int crypto_sha3_224_init(struct shash_desc *desc) { @@ -87,6 +88,36 @@ static int crypto_sha3_import_core(struct shash_desc *de= sc, const void *in) return 0; } =20 +static int crypto_shake256_init(struct shash_desc *desc) +{ + shake256_init(SHAKE_CTX(desc)); + return 0; +} + +static int crypto_shake_update(struct shash_desc *desc, const u8 *data, + unsigned int len) +{ + shake_update(SHAKE_CTX(desc), data, len); + return 0; +} + +static int crypto_shake_final(struct shash_desc *desc, u8 *out) +{ + const struct shash_alg *alg =3D crypto_shash_alg(desc->tfm); + + shake_squeeze(SHAKE_CTX(desc), out, alg->digestsize); + return 0; +} + +static int crypto_shake256_digest(struct shash_desc *desc, + const u8 *data, unsigned int len, u8 *out) +{ + const struct shash_alg *alg =3D crypto_shash_alg(desc->tfm); + + shake256(data, len, out, alg->digestsize); + return 0; +} + static struct shash_alg algs[] =3D { { .digestsize =3D SHA3_224_DIGEST_SIZE, .init =3D crypto_sha3_224_init, @@ -139,6 +170,17 @@ static struct shash_alg algs[] =3D { { .base.cra_driver_name =3D "sha3-512-lib", .base.cra_blocksize =3D SHA3_512_BLOCK_SIZE, .base.cra_module =3D THIS_MODULE, +}, { + .digestsize =3D SHAKE256_DEFAULT_SIZE, + .init =3D crypto_shake256_init, + .update =3D crypto_shake_update, + .final =3D crypto_shake_final, + .digest =3D crypto_shake256_digest, + .descsize =3D sizeof(struct shake_ctx), + .base.cra_name =3D "shake256", + .base.cra_driver_name =3D "shake256-lib", + .base.cra_blocksize =3D SHAKE256_BLOCK_SIZE, + .base.cra_module =3D THIS_MODULE, } }; =20 static int __init crypto_sha3_mod_init(void) From nobody Fri Dec 19 17:16:03 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E14134A78A for ; Thu, 6 Nov 2025 17:45:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451133; cv=none; b=r7Ok3OiE066EgjcNdfV04HIl+Jby8ASZmAWW8LeCUsWnQdFqD2dh91jruU8xnRVYNYvoBheO5fVAcZaxJ7t4ZxPgaJnx2NmvBNX8f5A+sHFJKEiQm3n5yC8zNxNrgG2t8zMpa/1AF4VshJgTA+v6hyJo6M7dYJ0UQOG9gQ+GWZo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451133; c=relaxed/simple; bh=RsFpoj/3KWjEY/564n7RUirF/zOSNgGL3wnUj2bIY1U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=f+g3a/WUyLLF1GX1QZBTyCuGv+O2p1cR8CqcsPu3uWF6ETm8Kn62h80MMJfJFSvkjyXBirYO1znEIS8LkzkVSYWTS2NZe1+MMiidws8D4aRWgnUOWYJR+vR1Rj79+/i+K/xkaBOfwCeJgLtuCyin9IfAuSMVy9DCnG7/tUDJe1I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=YRdBnmfh; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="YRdBnmfh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762451122; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=c3OKHJu2WWFKVEGKVX0+TJhMxOZc0W8T/nxiHPfAIJk=; b=YRdBnmfhyU51JBnrbOA5kyufalshgefddo/jH+XwCDB1S79Vb5aTNqpbkADSOvASWtC/8c YpfW99kC+ppKBaY+Q4CPho+6OU/xHhc9HxXe5Fv6WStks9hf7jg2GB5wunz6ReZ9Xx0eoX sdSdpY5c5FMiTgWeRBz2vcAeoy+FPYA= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-10-6-PPKOVfNQyOGrwxfk1KOw-1; Thu, 06 Nov 2025 12:45:18 -0500 X-MC-Unique: 6-PPKOVfNQyOGrwxfk1KOw-1 X-Mimecast-MFC-AGG-ID: 6-PPKOVfNQyOGrwxfk1KOw_1762451116 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1DD781800370; Thu, 6 Nov 2025 17:45:16 +0000 (UTC) Received: from warthog.procyon.org.com (unknown [10.42.28.6]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 357E41800362; Thu, 6 Nov 2025 17:45:11 +0000 (UTC) From: David Howells To: Herbert Xu Cc: David Howells , Eric Biggers , Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , "Jason A . Donenfeld" , Ard Biesheuvel , Stephan Mueller , Lukas Wunner , Ignat Korchagin , linux-crypto@vger.kernel.org, keyrings@vger.kernel.org, linux-modules@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 2/8] crypto: Add ML-DSA/Dilithium verify support Date: Thu, 6 Nov 2025 17:44:46 +0000 Message-ID: <20251106174456.31818-3-dhowells@redhat.com> In-Reply-To: <20251106174456.31818-1-dhowells@redhat.com> References: <20251106174456.31818-1-dhowells@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Port the signature verification code from Stephan Mueller's Leancrypto implementation of ML-DSA/Dilithium to the kernel. The keypair generation and signature generation is not included and nor is composite signature support to reduce code footprint size. Apologies to Stephan, but I've stripped out a bunch of macros to do return checking and suchlike and removed a bunch of "lc_" prefixes from the code. Composite signature support is mostly removed and none of the arch-specific code from Leancrypto has been included for the moment, so this is pure C. The interface to this code is through the crypto_sig API as the PKCS#7 code wants to use that rather than calling it directly. As such, I've placed it in crypto/ rather than lib/crypto/. Only the verification hooks are implemented; the signing hooks return an error. Signed-off-by: David Howells cc: Stephan Mueller cc: Eric Biggers cc: Jason A. Donenfeld cc: Ard Biesheuvel cc: Herbert Xu cc: linux-crypto@vger.kernel.org --- crypto/Kconfig | 1 + crypto/Makefile | 1 + crypto/ml_dsa/Kconfig | 17 + crypto/ml_dsa/Makefile | 18 + crypto/ml_dsa/dilithium.h | 547 ++++++++++++++++++++ crypto/ml_dsa/dilithium_44.c | 33 ++ crypto/ml_dsa/dilithium_44.h | 282 ++++++++++ crypto/ml_dsa/dilithium_65.c | 33 ++ crypto/ml_dsa/dilithium_65.h | 282 ++++++++++ crypto/ml_dsa/dilithium_87.c | 33 ++ crypto/ml_dsa/dilithium_87.h | 282 ++++++++++ crypto/ml_dsa/dilithium_api.c | 429 +++++++++++++++ crypto/ml_dsa/dilithium_debug.h | 49 ++ crypto/ml_dsa/dilithium_ntt.c | 89 ++++ crypto/ml_dsa/dilithium_ntt.h | 35 ++ crypto/ml_dsa/dilithium_pack.h | 119 +++++ crypto/ml_dsa/dilithium_poly.c | 377 ++++++++++++++ crypto/ml_dsa/dilithium_poly.h | 181 +++++++ crypto/ml_dsa/dilithium_poly_c.h | 141 +++++ crypto/ml_dsa/dilithium_poly_common.h | 35 ++ crypto/ml_dsa/dilithium_polyvec.h | 343 ++++++++++++ crypto/ml_dsa/dilithium_polyvec_c.h | 81 +++ crypto/ml_dsa/dilithium_reduce.h | 85 +++ crypto/ml_dsa/dilithium_rounding.c | 128 +++++ crypto/ml_dsa/dilithium_service_helpers.h | 99 ++++ crypto/ml_dsa/dilithium_sig.c | 334 ++++++++++++ crypto/ml_dsa/dilithium_signature_c.c | 102 ++++ crypto/ml_dsa/dilithium_signature_c.h | 37 ++ crypto/ml_dsa/dilithium_signature_helper.c | 97 ++++ crypto/ml_dsa/dilithium_signature_impl.h | 370 +++++++++++++ crypto/ml_dsa/dilithium_type.h | 102 ++++ crypto/ml_dsa/dilithium_zetas.c | 67 +++ crypto/ml_dsa/signature_domain_separation.c | 203 ++++++++ crypto/ml_dsa/signature_domain_separation.h | 30 ++ 34 files changed, 5062 insertions(+) create mode 100644 crypto/ml_dsa/Kconfig create mode 100644 crypto/ml_dsa/Makefile create mode 100644 crypto/ml_dsa/dilithium.h create mode 100644 crypto/ml_dsa/dilithium_44.c create mode 100644 crypto/ml_dsa/dilithium_44.h create mode 100644 crypto/ml_dsa/dilithium_65.c create mode 100644 crypto/ml_dsa/dilithium_65.h create mode 100644 crypto/ml_dsa/dilithium_87.c create mode 100644 crypto/ml_dsa/dilithium_87.h create mode 100644 crypto/ml_dsa/dilithium_api.c create mode 100644 crypto/ml_dsa/dilithium_debug.h create mode 100644 crypto/ml_dsa/dilithium_ntt.c create mode 100644 crypto/ml_dsa/dilithium_ntt.h create mode 100644 crypto/ml_dsa/dilithium_pack.h create mode 100644 crypto/ml_dsa/dilithium_poly.c create mode 100644 crypto/ml_dsa/dilithium_poly.h create mode 100644 crypto/ml_dsa/dilithium_poly_c.h create mode 100644 crypto/ml_dsa/dilithium_poly_common.h create mode 100644 crypto/ml_dsa/dilithium_polyvec.h create mode 100644 crypto/ml_dsa/dilithium_polyvec_c.h create mode 100644 crypto/ml_dsa/dilithium_reduce.h create mode 100644 crypto/ml_dsa/dilithium_rounding.c create mode 100644 crypto/ml_dsa/dilithium_service_helpers.h create mode 100644 crypto/ml_dsa/dilithium_sig.c create mode 100644 crypto/ml_dsa/dilithium_signature_c.c create mode 100644 crypto/ml_dsa/dilithium_signature_c.h create mode 100644 crypto/ml_dsa/dilithium_signature_helper.c create mode 100644 crypto/ml_dsa/dilithium_signature_impl.h create mode 100644 crypto/ml_dsa/dilithium_type.h create mode 100644 crypto/ml_dsa/dilithium_zetas.c create mode 100644 crypto/ml_dsa/signature_domain_separation.c create mode 100644 crypto/ml_dsa/signature_domain_separation.h diff --git a/crypto/Kconfig b/crypto/Kconfig index 57b85e903cf0..53f63f1766af 100644 --- a/crypto/Kconfig +++ b/crypto/Kconfig @@ -1453,5 +1453,6 @@ source "drivers/crypto/Kconfig" source "crypto/asymmetric_keys/Kconfig" source "certs/Kconfig" source "crypto/krb5/Kconfig" +source "crypto/ml_dsa/Kconfig" =20 endif # if CRYPTO diff --git a/crypto/Makefile b/crypto/Makefile index 0388ff8d219d..b810b920c17e 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -209,3 +209,4 @@ obj-$(CONFIG_CRYPTO_SIMD) +=3D crypto_simd.o obj-$(CONFIG_CRYPTO_KDF800108_CTR) +=3D kdf_sp800108.o =20 obj-$(CONFIG_CRYPTO_KRB5) +=3D krb5/ +obj-$(CONFIG_CRYPTO_ML_DSA) +=3D ml_dsa/ diff --git a/crypto/ml_dsa/Kconfig b/crypto/ml_dsa/Kconfig new file mode 100644 index 000000000000..cc0567c5b990 --- /dev/null +++ b/crypto/ml_dsa/Kconfig @@ -0,0 +1,17 @@ +# SPDX-License-Identifier: GPL-2.0 +menuconfig CRYPTO_ML_DSA + tristate "ML-DSA/Dilithium algorithm" + select CRYPTO_LIB_SHA3 + +if CRYPTO_ML_DSA + +config CRYPTO_DILITHIUM_44 + bool "Enable Dilithium-44 support" + +config CRYPTO_DILITHIUM_65 + bool "Enable Dilithium-65 support" + +config CRYPTO_DILITHIUM_87 + bool "Enable Dilithium-87 support" + +endif diff --git a/crypto/ml_dsa/Makefile b/crypto/ml_dsa/Makefile new file mode 100644 index 000000000000..d420a8ba6033 --- /dev/null +++ b/crypto/ml_dsa/Makefile @@ -0,0 +1,18 @@ +##########################################################################= ###### +# Signature implementation: Dilithium + +##########################################################################= ###### +# C Implementation +##########################################################################= ###### +ml_dsa-y +=3D \ + signature_domain_separation.o \ + dilithium_api.o \ + dilithium_zetas.o \ + dilithium_sig.o \ + dilithium_signature_helper.o + +ml_dsa-$(CONFIG_CRYPTO_DILITHIUM_87) +=3D dilithium_87.o +ml_dsa-$(CONFIG_CRYPTO_DILITHIUM_65) +=3D dilithium_65.o +ml_dsa-$(CONFIG_CRYPTO_DILITHIUM_44) +=3D dilithium_44.o + +obj-$(CONFIG_CRYPTO_ML_DSA) +=3D ml_dsa.o diff --git a/crypto/ml_dsa/dilithium.h b/crypto/ml_dsa/dilithium.h new file mode 100644 index 000000000000..f5a2322ab405 --- /dev/null +++ b/crypto/ml_dsa/dilithium.h @@ -0,0 +1,547 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_H +#define DILITHIUM_H + +#undef pr_fmt +#define pr_fmt(fmt) "ML-DSA: " fmt +#include +#include +#include +#include +#include +#include +#include + +#define DILITHIUM_SEEDBYTES 32 +#define DILITHIUM_CRHBYTES 64 +#define DILITHIUM_TRBYTES 64 +#define DILITHIUM_RNDBYTES 32 +#define DILITHIUM_N 256 +#define DILITHIUM_Q 8380417 +#define DILITHIUM_D 13 +#define DILITHIUM_ROOT_OF_UNITY 1753 + +extern const int32_t dilithium_zetas[DILITHIUM_N]; +#define lc_seeded_rng crypto_default_rng + +struct dilithium_ctx { + /* + * @brief Hash context used internally to the library - it should not + * be touched by the user + */ + struct shake_ctx dilithium_hash_ctx; + + /* + * @brief length of the user context (allowed range between 0 and 255 + * bytes) + * + * \note Use \p dilithium_ctx_userctx or + * \p dilithium_ed25519_ctx_userctx to set this value. + */ + size_t userctxlen; + + /* + * @brief buffer with a caller-specified context string + * + * \note Use \p dilithium_ctx_userctx or + * \p dilithium_ed25519_ctx_userctx to set this value. + */ + const uint8_t *userctx; + + /* + * @brief Pointer to the AHat buffer. This can be provided by the caller + * or it must be NULL otherwise. + * + * \note Use \p DILITHIUM_CTX_ON_STACK_AHAT to provide memory for + * storing AHat in the caller context and thus make the signature + * operation much faster starting with the 2nd use of the key (pair). + */ + void *ahat; + unsigned short ahat_size; + + /* + * @brief Pointer to the external mu. + * + * If set, the signature operation will use the provided mu instead of + * the message. In this case, the message pointer to the signature + * generation or verification can be NULL. + */ + const uint8_t *external_mu; + size_t external_mu_len; + + /* + * @brief NIST category required for composite signatures + * + * The domain separation logic depends on the selection of the right + * OID for the "Domain" data. + */ + unsigned int nist_category; + + /* + * @brief When set to true, only the ML-DSA.Sign_internal or + * ML-DSA.Verify_internal are performed (see FIPS 204 chapter 6). + * Otherwise the ML-DSA.Sign / ML-DSA.Verify (see FIPS chapter 5) is + * applied. + * + * \note Use \p dilithium_ctx_internal or + * \p dilithium_ed25519_ctx_internal to set this value. + * + * \warning Only set this value to true if you exactly know what you are + * doing!. + */ + bool ml_dsa_internal:1; + + /* + * @brief Was aHat already filled? This is used and set internally. + */ + bool ahat_expanded:1; +} __aligned(CRYPTO_MINALIGN); + +static inline void dilithium_hash_init(struct dilithium_ctx *ctx) +{ + shake256_init(&ctx->dilithium_hash_ctx); +} + +static inline bool dilithium_hash_check_blocksize(const struct dilithium_c= tx *ctx, size_t bsize) +{ + return bsize =3D=3D SHAKE256_BLOCK_SIZE; +} + +static inline bool dilithium_hash_check_digestsize(const struct dilithium_= ctx *ctx, size_t dsize) +{ + return true; +} + +static inline void dilithium_hash_clear(struct dilithium_ctx *ctx) +{ + shake_zeroize_ctx(&ctx->dilithium_hash_ctx); +} + +static inline void dilithium_hash_update(struct dilithium_ctx *ctx, + const u8 *in, size_t in_size) +{ + shake_update(&ctx->dilithium_hash_ctx, in, in_size); +} + +static inline void dilithium_hash_finup(struct dilithium_ctx *ctx, + const u8 *in, size_t in_size, + u8 *out, size_t out_size) +{ + shake_update(&ctx->dilithium_hash_ctx, in, in_size); + shake_squeeze(&ctx->dilithium_hash_ctx, out, out_size); + shake_zeroize_ctx(&ctx->dilithium_hash_ctx); +} + +static inline void dilithium_hash_final(struct dilithium_ctx *ctx, u8 *out= , size_t out_size) +{ + shake_squeeze(&ctx->dilithium_hash_ctx, out, out_size); + shake_zeroize_ctx(&ctx->dilithium_hash_ctx); +} + +#include "dilithium_87.h" +#include "dilithium_65.h" +#include "dilithium_44.h" + +enum dilithium_type { + DILITHIUM_UNKNOWN, /* Unknown key type */ + DILITHIUM_87, /* Dilithium 87 */ + DILITHIUM_65, /* Dilithium 65 */ + DILITHIUM_44, /* Dilithium 44 */ +}; + +/* @defgroup Dilithium ML-DSA / CRYSTALS-Dilithium Signature Mechanism + * + * \note Although the API uses the term "dilithium", the implementation co= mplies + * with FIPS 204. Thus the terms Dilithium and ML-DSA are used interchange= ably. + * + * Dilithium API concept + * + * The Dilithium API is accessible via the following header files with the + * mentioned purpose. + * + * * dilithium.h: This API is the generic API allowing the caller to select + * which Dilithium type (Dilithium 87, 65 or 44) are to be used. The sel= ection + * is made either with the flag specified during key generation or by ma= tching + * the size of the imported data with the different dilithium_*_load API + * calls. All remaining APIs take the information about the Dilithium ty= pe + * from the provided input data. + * + * This header file only provides inline functions which selectively call + * the API provided with the header files below. + * + * * dilithium_87.h: Direct access to Dilithium 87. + * + * * dilithium_65.h: Direct access to Dilithium 65. + * + * * dilithium_44.h: Direct access to Dilithium 44. + * + * To support the stream mode of the Dilithium signature operation, a + * context structure is required. This context structure can be allocated = either + * on the stack or heap with \p DILITHIUM_CTX_ON_STACK or + * \p dilithium_ctx_alloc. The context should be zeroized + * and freed (only for heap) with \p dilithium_ctx_zero or + * \p dilithium_ctx_zero_free. + */ + +/* + * @brief Dilithium public key + */ +struct dilithium_pk { + enum dilithium_type dilithium_type; + union { +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + struct dilithium_87_pk pk_87; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + struct dilithium_65_pk pk_65; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + struct dilithium_44_pk pk_44; +#endif + } key; +}; + +/* + * @brief Dilithium signature + */ +struct dilithium_sig { + enum dilithium_type dilithium_type; + union { +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + struct dilithium_87_sig sig_87; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + struct dilithium_65_sig sig_65; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + struct dilithium_44_sig sig_44; +#endif + } sig; +}; + +/* + * @ingroup Dilithium + * @brief Allocates Dilithium context on heap + * + * @param [out] ctx Dilithium context pointer + * + * @return 0 (success) or < 0 on error + */ +struct dilithium_ctx *dilithium_ctx_alloc(void); + +/* + * @ingroup Dilithium + * @brief Allocates Dilithium context on heap with support to keep the int= ernal + * representation of the key. + * + * \note See \p DILITHIUM_CTX_ON_STACK_AHAT for details. + * + * @param [out] ctx Dilithium context pointer + * + * @return 0 (success) or < 0 on error + */ +struct dilithium_ctx *dilithium_ctx_alloc_ahat(enum dilithium_type type); + +/* + * @ingroup Dilithium + * @brief Zeroizes and frees Dilithium context on heap + * + * @param [out] ctx Dilithium context pointer + */ +void dilithium_ctx_zero_free(struct dilithium_ctx *ctx); + +/* + * @ingroup Dilithium + * @brief Zeroizes Dilithium context either on heap or on stack + * + * @param [out] ctx Dilithium context pointer + */ +void dilithium_ctx_zero(struct dilithium_ctx *ctx); + +/* + * @ingroup Dilithium + * @brief Mark the Dilithium context to execute ML-DSA.Sign_internal / + * ML-DSA.Verify_internal. + * + * @param [in] ctx Dilithium context + */ +void dilithium_ctx_internal(struct dilithium_ctx *ctx); + +/* + * @ingroup Dilithium + * @brief Set the hash type that was used for pre-hashing the message. The + * message digest is used with the HashML-DSA. The message digest + * is to be provided via the message pointer in the sign/verify APIs. + * + * @param [in] ctx Dilithium context + * @param [in] hash Hash context referencing the used hash for pre-hashing= the + * message + */ +void dilithium_ctx_hash(struct dilithium_ctx *ctx, + struct crypto_shash *hash); + +/* + * @ingroup Dilithium + * @brief Specify the optional user context string to be applied with the + * Dilithium signature operation. + * + * @param [in] ctx Dilithium context + * @param [in] userctx User context string + * @param [in] userctxlen Size of the user context string + */ +void dilithium_ctx_userctx(struct dilithium_ctx *ctx, + const uint8_t *userctx, size_t userctxlen); + +/* + * @ingroup Dilithium + * @brief Specify the optional external mu value. + * + * \note If the external mu is specified, the signature generation / + * verification APIs do not require a message. In this case, the message b= uffer + * can be set to NULL. + * + * \note If both a message and an external mu are provided, the external mu + * takes precedence. + * + * @param [in] ctx Dilithium context + * @param [in] external_mu User context string + * @param [in] external_mu_len Size of the user context string + */ +void dilithium_ctx_external_mu(struct dilithium_ctx *ctx, + const uint8_t *external_mu, + size_t external_mu_len); + +/* + * @ingroup Dilithium + * @brief Invalidate the expanded key that potentially is stored in the co= ntext. + * + * This call can be executed on a context irrespective it was allocated wi= th + * space for the expanded representation or not. Thus, the caller does not= need + * to track whether the context supports the expanded key. + * + * @param [in] ctx Dilithium context + */ +void dilithium_ctx_drop_ahat(struct dilithium_ctx *ctx); + +/* + * @ingroup Dilithium + * @brief Obtain Dilithium type from public key + * + * @param [in] pk Public key from which the type is to be obtained + * + * @return key type + */ +enum dilithium_type dilithium_pk_type(const struct dilithium_pk *pk); + +/* + * @ingroup Dilithium + * @brief Obtain Dilithium type from signature + * + * @param [in] sig Signature from which the type is to be obtained + * + * @return key type + */ +enum dilithium_type +dilithium_sig_type(const struct dilithium_sig *sig); + +/* + * @ingroup Dilithium + * @brief Return the size of the Dilithium public key. + * + * @param [in] dilithium_type Dilithium type for which the size is request= ed + * + * @return requested size + */ +unsigned int dilithium_pk_size(enum dilithium_type dilithium_type); + +/* + * @ingroup Dilithium + * @brief Return the size of the Dilithium signature. + * + * @param [in] dilithium_type Dilithium type for which the size is request= ed + * + * @return requested size + */ +unsigned int dilithium_sig_size(enum dilithium_type dilithium_type); + +/* + * @ingroup Dilithium + * @brief Load a Dilithium public key provided with a buffer into the lean= crypto + * data structure. + * + * @param [out] pk Secret key to be filled (the caller must have it alloca= ted) + * @param [in] src_key Buffer that holds the key to be imported + * @param [in] src_key_len Buffer length that holds the key to be imported + * + * @return 0 on success or < 0 on error + */ +int dilithium_pk_load(struct dilithium_pk *pk, const uint8_t *src_key, + size_t src_key_len); + +/* + * @ingroup Dilithium + * @brief Load a Dilithium signature provided with a buffer into the leanc= rypto + * data structure. + * + * @param [out] sig Secret key to be filled (the caller must have it alloc= ated) + * @param [in] src_sig Buffer that holds the signature to be imported + * @param [in] src_sig_len Buffer length that holds the signature to be im= ported + * + * @return 0 on success or < 0 on error + */ +int dilithium_sig_load(struct dilithium_sig *sig, const uint8_t *src_sig, + size_t src_sig_len); + +/* + * @ingroup Dilithium + * @brief Obtain the reference to the Dilithium key and its length + * + * \note Only pointer references into the leancrypto data structure are re= turned + * which implies that any modification will modify the leancrypto key, too. + * + * @param [out] dilithium_key Dilithium key pointer + * @param [out] dilithium_key_len Length of the key buffer + * @param [in] pk Dilithium publi key from which the references are obtain= ed + * + * @return 0 on success, !=3D 0 on error + */ +int dilithium_pk_ptr(uint8_t **dilithium_key, size_t *dilithium_key_len, + struct dilithium_pk *pk); + +/* + * @ingroup Dilithium + * @brief Obtain the reference to the Dilithium signature and its length + * + * \note Only pointer references into the leancrypto data structure are re= turned + * which implies that any modification will modify the leancrypto signatur= e, + * too. + * + * @param [out] dilithium_sig Dilithium signature pointer + * @param [out] dilithium_sig_len Length of the signature buffer + * @param [in] sig Dilithium signature from which the references are obtai= ned + * + * @return 0 on success, !=3D 0 on error + */ +int dilithium_sig_ptr(uint8_t **dilithium_sig, size_t *dilithium_sig_len, + struct dilithium_sig *sig); + +/* + * @ingroup Dilithium + * @brief Verifies signature in one shot + * + * @param [in] sig pointer to input signature + * @param [in] m pointer to message + * @param [in] mlen length of message + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_verify(const struct dilithium_sig *sig, const uint8_t *m, + size_t mlen, const struct dilithium_pk *pk); + +/* + * @ingroup Dilithium + * @brief Verifies signature with Dilithium context in one shot + * + * This API allows the caller to provide an arbitrary context buffer which + * is hashed together with the message to form the message digest to be si= gned. + * + * @param [in] sig pointer to input signature + * @param [in] ctx reference to the allocated Dilithium context handle + * @param [in] m pointer to message + * @param [in] mlen length of message + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_verify_ctx(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen, const struct dilithium_pk *pk); + +/* + * @ingroup Dilithium + * @brief Initializes a signature verification operation + * + * This call is intended to support messages that are located in non-conti= guous + * places and even becomes available at different times. This call is to be + * used together with the dilithium_verify_update and + * dilithium_verify_final. + * + * @param [in,out] ctx pointer to an allocated Dilithium context + * @param [in] pk pointer to bit-packed public key + * + * @return 0 (success) or < 0 on error; -EOPNOTSUPP is returned if a diffe= rent + * hash than lc_shake256 is used. + */ +int dilithium_verify_init(struct dilithium_ctx *ctx, + const struct dilithium_pk *pk); + +/* + * @ingroup Dilithium + * @brief Add more data to an already initialized signature state + * + * This call is intended to support messages that are located in non-conti= guous + * places and even becomes available at different times. This call is to be + * used together with the dilithium_verify_init and + * dilithium_verify_final. + * + * @param [in] ctx pointer to Dilithium context that was initialized with + * dilithium_sign_init + * @param [in] m pointer to message to be signed + * @param [in] mlen length of message + * + * @return 0 (success) or < 0 on error + */ +int dilithium_verify_update(struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen); + +/* + * @ingroup Dilithium + * @brief Verifies signature + * + * @param [in] sig pointer to output signature + * @param [in] ctx pointer to Dilithium context that was initialized with + * dilithium_sign_init and filled with + * dilithium_sign_update + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_verify_final(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, + const struct dilithium_pk *pk); + +/* No valgrind */ +#define poison(addr, len) +#define unpoison(addr, len) +#define is_poisoned(addr, len) + +#endif /* DILITHIUM_H */ diff --git a/crypto/ml_dsa/dilithium_44.c b/crypto/ml_dsa/dilithium_44.c new file mode 100644 index 000000000000..1aea716016f0 --- /dev/null +++ b/crypto/ml_dsa/dilithium_44.c @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +#define DILITHIUM_TYPE_44 +#include "dilithium.h" + +#define DILITHIUM_TYPE "44" +#define DILITHIUM_MODE 2 +#define DILITHIUM_NIST_CATEGORY DILITHIUM44_NIST_CATEGORY +#define DILITHIUM_LAMBDA DILITHIUM44_LAMBDA +#define DILITHIUM_K DILITHIUM44_K +#define DILITHIUM_L DILITHIUM44_L +#define DILITHIUM_ETA DILITHIUM44_ETA +#define DILITHIUM_TAU DILITHIUM44_TAU +#define DILITHIUM_BETA DILITHIUM44_BETA +#define DILITHIUM_GAMMA1 DILITHIUM44_GAMMA1 +#define DILITHIUM_GAMMA2 DILITHIUM44_GAMMA2 +#define DILITHIUM_OMEGA DILITHIUM44_OMEGA + +#define DILITHIUM_CTILDE_BYTES DILITHIUM44_CTILDE_BYTES +#define DILITHIUM_POLYT1_PACKEDBYTES DILITHIUM44_POLYT1_PACKEDBYTES +#define DILITHIUM_POLYT0_PACKEDBYTES DILITHIUM44_POLYT0_PACKEDBYTES +#define DILITHIUM_POLYVECH_PACKEDBYTES DILITHIUM44_POLYVECH_PACKEDBYTES +#define DILITHIUM_POLYZ_PACKEDBYTES DILITHIUM44_POLYZ_PACKEDBYTES +#define DILITHIUM_POLYW1_PACKEDBYTES DILITHIUM44_POLYW1_PACKEDBYTES +#define DILITHIUM_POLYETA_PACKEDBYTES DILITHIUM44_POLYETA_PACKEDBYTES + +#define DILITHIUM_PUBLICKEYBYTES DILITHIUM44_PUBLICKEYBYTES +#define DILITHIUM_SECRETKEYBYTES DILITHIUM44_SECRETKEYBYTES +#define DILITHIUM_CRYPTO_BYTES DILITHIUM44_CRYPTO_BYTES + +#include "dilithium_ntt.c" +#include "dilithium_poly.c" +#include "dilithium_rounding.c" +#include "dilithium_signature_c.c" diff --git a/crypto/ml_dsa/dilithium_44.h b/crypto/ml_dsa/dilithium_44.h new file mode 100644 index 000000000000..8f3223a5476d --- /dev/null +++ b/crypto/ml_dsa/dilithium_44.h @@ -0,0 +1,282 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_44_H +#define DILITHIUM_44_H + +/* + * Dilithium Security Levels + * 2 -> 192 bits of security strength + * 3 -> 225 bits of security strength + * 5 -> 257 bits of security strength + */ + +/* DILITHIUM_MODE 2 */ +#define DILITHIUM44_NIST_CATEGORY 1 +#define DILITHIUM44_LAMBDA 128 +#define DILITHIUM44_K 4 +#define DILITHIUM44_L 4 +#define DILITHIUM44_ETA 2 +#define DILITHIUM44_TAU 39 +#define DILITHIUM44_BETA 78 +#define DILITHIUM44_GAMMA1 (1 << 17) +#define DILITHIUM44_GAMMA2 ((DILITHIUM_Q - 1) / 88) +#define DILITHIUM44_OMEGA 80 + +#define DILITHIUM44_CTILDE_BYTES (DILITHIUM44_LAMBDA * 2 / 8) +#define DILITHIUM44_POLYT1_PACKEDBYTES 320 +#define DILITHIUM44_POLYT0_PACKEDBYTES 416 +#define DILITHIUM44_POLYVECH_PACKEDBYTES (DILITHIUM44_OMEGA + DILITHIUM44_= K) + +#if DILITHIUM44_GAMMA1 =3D=3D (1 << 17) +#define DILITHIUM44_POLYZ_PACKEDBYTES 576 +#elif DILITHIUM44_GAMMA1 =3D=3D (1 << 19) +#define DILITHIUM44_POLYZ_PACKEDBYTES 640 +#endif + +#if DILITHIUM44_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 88 +#define DILITHIUM44_POLYW1_PACKEDBYTES 192 +#elif DILITHIUM44_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 32 +#define DILITHIUM44_POLYW1_PACKEDBYTES 128 +#endif + +#if DILITHIUM44_ETA =3D=3D 2 +#define DILITHIUM44_POLYETA_PACKEDBYTES 96 +#elif DILITHIUM44_ETA =3D=3D 4 +#define DILITHIUM44_POLYETA_PACKEDBYTES 128 +#endif + +/* + * Sizes of the different Dilithium buffer types. + * + * WARNING: Do not use these defines in your code. If you need the sizes of + * the different variable sizes, use sizeof of the different variable stru= cts or + * use the different *_size functions documented below to retrieve the dat= a size + * of a particular Dilithium component. + */ +#define DILITHIUM44_PUBLICKEYBYTES \ + (DILITHIUM_SEEDBYTES + \ + DILITHIUM44_K * DILITHIUM44_POLYT1_PACKEDBYTES) +#define DILITHIUM44_SECRETKEYBYTES \ + (2 * DILITHIUM_SEEDBYTES + DILITHIUM_TRBYTES + \ + DILITHIUM44_L * DILITHIUM44_POLYETA_PACKEDBYTES + \ + DILITHIUM44_K * DILITHIUM44_POLYETA_PACKEDBYTES + \ + DILITHIUM44_K * DILITHIUM44_POLYT0_PACKEDBYTES) + +#define DILITHIUM44_CRYPTO_BYTES \ + (DILITHIUM44_CTILDE_BYTES + \ + DILITHIUM44_L * DILITHIUM44_POLYZ_PACKEDBYTES + \ + DILITHIUM44_POLYVECH_PACKEDBYTES) + +#ifndef __ASSEMBLER__ +/* + * @brief Dilithium secret key + */ +struct dilithium_44_sk { + uint8_t sk[DILITHIUM44_SECRETKEYBYTES]; +}; + +/* + * @brief Dilithium public key + */ +struct dilithium_44_pk { + uint8_t pk[DILITHIUM44_PUBLICKEYBYTES]; +}; + +/* + * @brief Dilithium signature + */ +struct dilithium_44_sig { + uint8_t sig[DILITHIUM44_CRYPTO_BYTES]; +}; + +/* + * The alignment is based on largest alignment of a polyvecl typedef - thi= s is + * the AVX2 definition. + */ +#define DILITHIUM_AHAT_ALIGNMENT (32) + +/* Size of the AHat matrix for ML-DSA 87 */ +#define DILITHIUM_44_AHAT_SIZE = \ + (256 * sizeof(int32_t) * DILITHIUM44_K * DILITHIUM44_L) + +/* + * @brief Zeroize Dilithium context allocated with + * DILITHIUM_CTX_ON_STACK dilithium_ed25519_alloc + * + * @param [in] ctx Dilithium context to be zeroized + */ +static inline void dilithium_44_ctx_zero(struct dilithium_ctx *ctx) +{ + if (!ctx) + return; + dilithium_hash_clear(ctx); + if (ctx->ahat) { + memzero_explicit(ctx->ahat, ctx->ahat_size); + ctx->ahat_expanded =3D 0; + } +} + +/* + * @brief Allocate Dilithium stream context on heap + * + * @param [out] ctx Allocated Dilithium stream context + * + * @return: 0 on success, < 0 on error + */ +struct dilithium_ctx *dilithium_44_ctx_alloc(void); + +/* + * @brief Allocate Dilithium stream context on heap including additional + * parameter relevant for the signature operation. + * + * \note See \p DILITHIUM_44_CTX_ON_STACK_AHAT for details. + * + * @param [out] ctx Allocated Dilithium stream context + * + * @return: 0 on success, < 0 on error + */ +struct dilithium_ctx *dilithium_44_ctx_alloc_ahat(void); + +/* + * @brief Zeroize and free Dilithium stream context + * + * @param [in] ctx Dilithium stream context to be zeroized and freed + */ +void dilithium_44_ctx_zero_free(struct dilithium_ctx *ctx); + +/* + * @brief Return the size of the Dilithium secret key. + */ +static inline unsigned int dilithium_44_sk_size(void) +{ + return sizeof_field(struct dilithium_44_sk, sk); +} + +/* + * @brief Return the size of the Dilithium public key. + */ +static inline unsigned int dilithium_44_pk_size(void) +{ + return sizeof_field(struct dilithium_44_pk, pk); +} + +/* + * @brief Return the size of the Dilithium signature. + */ +static inline unsigned int dilithium_44_sig_size(void) +{ + return sizeof_field(struct dilithium_44_sig, sig); +} + +/* + * @brief Verifies ML-DSA signature in one shot + * + * @param [in] sig pointer to input signature + * @param [in] m pointer to message + * @param [in] mlen length of message + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_44_verify(const struct dilithium_44_sig *sig, const uint8_t = *m, + size_t mlen, const struct dilithium_44_pk *pk); + +/* + * @brief Verifies signature with Dilithium context in one shot + * + * This API allows the caller to provide an arbitrary context buffer which + * is hashed together with the message to form the message digest to be si= gned. + * + * @param [in] sig pointer to input signature + * @param [in] ctx reference to the allocated Dilithium context handle + * @param [in] m pointer to message + * @param [in] mlen length of message + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_44_verify_ctx(const struct dilithium_44_sig *sig, + struct dilithium_ctx *ctx, + const uint8_t *m, size_t mlen, + const struct dilithium_44_pk *pk); + +/* + * @brief Initializes a signature verification operation + * + * This call is intended to support messages that are located in non-conti= guous + * places and even becomes available at different times. This call is to be + * used together with the dilithium_verify_update and + * dilithium_verify_final. + * + * @param [in,out] ctx pointer to an allocated Dilithium context + * @param [in] pk pointer to bit-packed public key + * + * @return 0 (success) or < 0 on error; -EOPNOTSUPP is returned if a diffe= rent + * hash than lc_shake256 is used. + */ +int dilithium_44_verify_init(struct dilithium_ctx *ctx, + const struct dilithium_44_pk *pk); + +/* + * @brief Add more data to an already initialized signature state + * + * This call is intended to support messages that are located in non-conti= guous + * places and even becomes available at different times. This call is to be + * used together with the dilithium_verify_init and + * dilithium_verify_final. + * + * @param [in,out] ctx pointer to Dilithium context that was initialized w= ith + * dilithium_sign_init + * @param [in] m pointer to message to be signed + * @param [in] mlen length of message + * + * @return 0 (success) or < 0 on error + */ +int dilithium_44_verify_update(struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen); + +/* + * @brief Verifies signature + * + * @param [in] sig pointer to output signature + * @param [in] ctx pointer to Dilithium context that was initialized with + * dilithium_sign_init and filled with + * dilithium_sign_update + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_44_verify_final(const struct dilithium_44_sig *sig, + struct dilithium_ctx *ctx, + const struct dilithium_44_pk *pk); + +#endif /* __ASSEMBLER__ */ + +#endif /* DILITHIUM_44_H */ diff --git a/crypto/ml_dsa/dilithium_65.c b/crypto/ml_dsa/dilithium_65.c new file mode 100644 index 000000000000..08f3a8e71228 --- /dev/null +++ b/crypto/ml_dsa/dilithium_65.c @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +#define DILITHIUM_TYPE_65 +#include "dilithium.h" + +#define DILITHIUM_TYPE "65" +#define DILITHIUM_MODE 3 +#define DILITHIUM_NIST_CATEGORY DILITHIUM65_NIST_CATEGORY +#define DILITHIUM_LAMBDA DILITHIUM65_LAMBDA +#define DILITHIUM_K DILITHIUM65_K +#define DILITHIUM_L DILITHIUM65_L +#define DILITHIUM_ETA DILITHIUM65_ETA +#define DILITHIUM_TAU DILITHIUM65_TAU +#define DILITHIUM_BETA DILITHIUM65_BETA +#define DILITHIUM_GAMMA1 DILITHIUM65_GAMMA1 +#define DILITHIUM_GAMMA2 DILITHIUM65_GAMMA2 +#define DILITHIUM_OMEGA DILITHIUM65_OMEGA + +#define DILITHIUM_CTILDE_BYTES DILITHIUM65_CTILDE_BYTES +#define DILITHIUM_POLYT1_PACKEDBYTES DILITHIUM65_POLYT1_PACKEDBYTES +#define DILITHIUM_POLYT0_PACKEDBYTES DILITHIUM65_POLYT0_PACKEDBYTES +#define DILITHIUM_POLYVECH_PACKEDBYTES DILITHIUM65_POLYVECH_PACKEDBYTES +#define DILITHIUM_POLYZ_PACKEDBYTES DILITHIUM65_POLYZ_PACKEDBYTES +#define DILITHIUM_POLYW1_PACKEDBYTES DILITHIUM65_POLYW1_PACKEDBYTES +#define DILITHIUM_POLYETA_PACKEDBYTES DILITHIUM65_POLYETA_PACKEDBYTES + +#define DILITHIUM_PUBLICKEYBYTES DILITHIUM65_PUBLICKEYBYTES +#define DILITHIUM_SECRETKEYBYTES DILITHIUM65_SECRETKEYBYTES +#define DILITHIUM_CRYPTO_BYTES DILITHIUM65_CRYPTO_BYTES + +#include "dilithium_ntt.c" +#include "dilithium_poly.c" +#include "dilithium_rounding.c" +#include "dilithium_signature_c.c" diff --git a/crypto/ml_dsa/dilithium_65.h b/crypto/ml_dsa/dilithium_65.h new file mode 100644 index 000000000000..faaa11a2b2e6 --- /dev/null +++ b/crypto/ml_dsa/dilithium_65.h @@ -0,0 +1,282 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_65_H +#define DILITHIUM_65_H + +/* + * Dilithium Security Levels + * 2 -> 192 bits of security strength + * 3 -> 225 bits of security strength + * 5 -> 257 bits of security strength + */ + +/* DILITHIUM_MODE 3 */ +#define DILITHIUM65_NIST_CATEGORY 3 +#define DILITHIUM65_LAMBDA 192 +#define DILITHIUM65_K 6 +#define DILITHIUM65_L 5 +#define DILITHIUM65_ETA 4 +#define DILITHIUM65_TAU 49 +#define DILITHIUM65_BETA 196 +#define DILITHIUM65_GAMMA1 (1 << 19) +#define DILITHIUM65_GAMMA2 ((DILITHIUM_Q - 1) / 32) +#define DILITHIUM65_OMEGA 55 + +#define DILITHIUM65_CTILDE_BYTES (DILITHIUM65_LAMBDA * 2 / 8) +#define DILITHIUM65_POLYT1_PACKEDBYTES 320 +#define DILITHIUM65_POLYT0_PACKEDBYTES 416 +#define DILITHIUM65_POLYVECH_PACKEDBYTES (DILITHIUM65_OMEGA + DILITHIUM65_= K) + +#if DILITHIUM65_GAMMA1 =3D=3D (1 << 17) +#define DILITHIUM65_POLYZ_PACKEDBYTES 576 +#elif DILITHIUM65_GAMMA1 =3D=3D (1 << 19) +#define DILITHIUM65_POLYZ_PACKEDBYTES 640 +#endif + +#if DILITHIUM65_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 88 +#define DILITHIUM65_POLYW1_PACKEDBYTES 192 +#elif DILITHIUM65_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 32 +#define DILITHIUM65_POLYW1_PACKEDBYTES 128 +#endif + +#if DILITHIUM65_ETA =3D=3D 2 +#define DILITHIUM65_POLYETA_PACKEDBYTES 96 +#elif DILITHIUM65_ETA =3D=3D 4 +#define DILITHIUM65_POLYETA_PACKEDBYTES 128 +#endif + +/* + * Sizes of the different Dilithium buffer types. + * + * WARNING: Do not use these defines in your code. If you need the sizes of + * the different variable sizes, use sizeof of the different variable stru= cts or + * use the different *_size functions documented below to retrieve the dat= a size + * of a particular Dilithium component. + */ +#define DILITHIUM65_PUBLICKEYBYTES \ + (DILITHIUM_SEEDBYTES + \ + DILITHIUM65_K * DILITHIUM65_POLYT1_PACKEDBYTES) +#define DILITHIUM65_SECRETKEYBYTES \ + (2 * DILITHIUM_SEEDBYTES + DILITHIUM_TRBYTES + \ + DILITHIUM65_L * DILITHIUM65_POLYETA_PACKEDBYTES + \ + DILITHIUM65_K * DILITHIUM65_POLYETA_PACKEDBYTES + \ + DILITHIUM65_K * DILITHIUM65_POLYT0_PACKEDBYTES) + +#define DILITHIUM65_CRYPTO_BYTES \ + (DILITHIUM65_CTILDE_BYTES + \ + DILITHIUM65_L * DILITHIUM65_POLYZ_PACKEDBYTES + \ + DILITHIUM65_POLYVECH_PACKEDBYTES) + +#ifndef __ASSEMBLER__ +/* + * @brief Dilithium secret key + */ +struct dilithium_65_sk { + uint8_t sk[DILITHIUM65_SECRETKEYBYTES]; +}; + +/* + * @brief Dilithium public key + */ +struct dilithium_65_pk { + uint8_t pk[DILITHIUM65_PUBLICKEYBYTES]; +}; + +/* + * @brief Dilithium signature + */ +struct dilithium_65_sig { + uint8_t sig[DILITHIUM65_CRYPTO_BYTES]; +}; + +/* + * The alignment is based on largest alignment of a polyvecl typedef - thi= s is + * the AVX2 definition. + */ +#define DILITHIUM_AHAT_ALIGNMENT (32) + +/* Size of the AHat matrix for ML-DSA 87 */ +#define DILITHIUM_65_AHAT_SIZE \ + (256 * sizeof(int32_t) * DILITHIUM65_K * DILITHIUM65_L) + +/* + * @brief Zeroize Dilithium context allocated with + * DILITHIUM_CTX_ON_STACK dilithium_ed25519_alloc + * + * @param [in] ctx Dilithium context to be zeroized + */ +static inline void dilithium_65_ctx_zero(struct dilithium_ctx *ctx) +{ + if (!ctx) + return; + dilithium_hash_clear(ctx); + if (ctx->ahat) { + memzero_explicit(ctx->ahat, ctx->ahat_size); + ctx->ahat_expanded =3D 0; + } +} + +/* + * @brief Allocate Dilithium stream context on heap + * + * @param [out] ctx Allocated Dilithium stream context + * + * @return: 0 on success, < 0 on error + */ +struct dilithium_ctx *dilithium_65_ctx_alloc(void); + +/* + * @brief Allocate Dilithium stream context on heap including additional + * parameter relevant for the signature operation. + * + * \note See \p DILITHIUM_65_CTX_ON_STACK_AHAT for details. + * + * @param [out] ctx Allocated Dilithium stream context + * + * @return: 0 on success, < 0 on error + */ +struct dilithium_ctx *dilithium_65_ctx_alloc_ahat(void); + +/* + * @brief Zeroize and free Dilithium stream context + * + * @param [in] ctx Dilithium stream context to be zeroized and freed + */ +void dilithium_65_ctx_zero_free(struct dilithium_ctx *ctx); + +/* + * @brief Return the size of the Dilithium secret key. + */ +static inline unsigned int dilithium_65_sk_size(void) +{ + return sizeof_field(struct dilithium_65_sk, sk); +} + +/* + * @brief Return the size of the Dilithium public key. + */ +static inline unsigned int dilithium_65_pk_size(void) +{ + return sizeof_field(struct dilithium_65_pk, pk); +} + +/* + * @brief Return the size of the Dilithium signature. + */ +static inline unsigned int dilithium_65_sig_size(void) +{ + return sizeof_field(struct dilithium_65_sig, sig); +} + +/* + * @brief Verifies ML-DSA signature in one shot + * + * @param [in] sig pointer to input signature + * @param [in] m pointer to message + * @param [in] mlen length of message + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_65_verify(const struct dilithium_65_sig *sig, const uint8_t = *m, + size_t mlen, const struct dilithium_65_pk *pk); + +/* + * @brief Verifies signature with Dilithium context in one shot + * + * This API allows the caller to provide an arbitrary context buffer which + * is hashed together with the message to form the message digest to be si= gned. + * + * @param [in] sig pointer to input signature + * @param [in] ctx reference to the allocated Dilithium context handle + * @param [in] m pointer to message + * @param [in] mlen length of message + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_65_verify_ctx(const struct dilithium_65_sig *sig, + struct dilithium_ctx *ctx, + const uint8_t *m, size_t mlen, + const struct dilithium_65_pk *pk); + +/* + * @brief Initializes a signature verification operation + * + * This call is intended to support messages that are located in non-conti= guous + * places and even becomes available at different times. This call is to be + * used together with the dilithium_verify_update and + * dilithium_verify_final. + * + * @param [in,out] ctx pointer to an allocated Dilithium context + * @param [in] pk pointer to bit-packed public key + * + * @return 0 (success) or < 0 on error; -EOPNOTSUPP is returned if a diffe= rent + * hash than lc_shake256 is used. + */ +int dilithium_65_verify_init(struct dilithium_ctx *ctx, + const struct dilithium_65_pk *pk); + +/* + * @brief Add more data to an already initialized signature state + * + * This call is intended to support messages that are located in non-conti= guous + * places and even becomes available at different times. This call is to be + * used together with the dilithium_verify_init and + * dilithium_verify_final. + * + * @param [in,out] ctx pointer to Dilithium context that was initialized w= ith + * dilithium_sign_init + * @param [in] m pointer to message to be signed + * @param [in] mlen length of message + * + * @return 0 (success) or < 0 on error + */ +int dilithium_65_verify_update(struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen); + +/* + * @brief Verifies signature + * + * @param [in] sig pointer to output signature + * @param [in] ctx pointer to Dilithium context that was initialized with + * dilithium_sign_init and filled with + * dilithium_sign_update + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_65_verify_final(const struct dilithium_65_sig *sig, + struct dilithium_ctx *ctx, + const struct dilithium_65_pk *pk); + +#endif /* __ASSEMBLER__ */ + +#endif /* DILITHIUM_65_H */ diff --git a/crypto/ml_dsa/dilithium_87.c b/crypto/ml_dsa/dilithium_87.c new file mode 100644 index 000000000000..fcc3e0229ed9 --- /dev/null +++ b/crypto/ml_dsa/dilithium_87.c @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +#define DILITHIUM_TYPE_87 +#include "dilithium.h" + +#define DILITHIUM_TYPE "87" +#define DILITHIUM_MODE 5 +#define DILITHIUM_NIST_CATEGORY DILITHIUM87_NIST_CATEGORY +#define DILITHIUM_LAMBDA DILITHIUM87_LAMBDA +#define DILITHIUM_K DILITHIUM87_K +#define DILITHIUM_L DILITHIUM87_L +#define DILITHIUM_ETA DILITHIUM87_ETA +#define DILITHIUM_TAU DILITHIUM87_TAU +#define DILITHIUM_BETA DILITHIUM87_BETA +#define DILITHIUM_GAMMA1 DILITHIUM87_GAMMA1 +#define DILITHIUM_GAMMA2 DILITHIUM87_GAMMA2 +#define DILITHIUM_OMEGA DILITHIUM87_OMEGA + +#define DILITHIUM_CTILDE_BYTES DILITHIUM87_CTILDE_BYTES +#define DILITHIUM_POLYT1_PACKEDBYTES DILITHIUM87_POLYT1_PACKEDBYTES +#define DILITHIUM_POLYT0_PACKEDBYTES DILITHIUM87_POLYT0_PACKEDBYTES +#define DILITHIUM_POLYVECH_PACKEDBYTES DILITHIUM87_POLYVECH_PACKEDBYTES +#define DILITHIUM_POLYZ_PACKEDBYTES DILITHIUM87_POLYZ_PACKEDBYTES +#define DILITHIUM_POLYW1_PACKEDBYTES DILITHIUM87_POLYW1_PACKEDBYTES +#define DILITHIUM_POLYETA_PACKEDBYTES DILITHIUM87_POLYETA_PACKEDBYTES + +#define DILITHIUM_PUBLICKEYBYTES DILITHIUM87_PUBLICKEYBYTES +#define DILITHIUM_SECRETKEYBYTES DILITHIUM87_SECRETKEYBYTES +#define DILITHIUM_CRYPTO_BYTES DILITHIUM87_CRYPTO_BYTES + +#include "dilithium_ntt.c" +#include "dilithium_poly.c" +#include "dilithium_rounding.c" +#include "dilithium_signature_c.c" diff --git a/crypto/ml_dsa/dilithium_87.h b/crypto/ml_dsa/dilithium_87.h new file mode 100644 index 000000000000..d2de502360a4 --- /dev/null +++ b/crypto/ml_dsa/dilithium_87.h @@ -0,0 +1,282 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_87_H +#define DILITHIUM_87_H + +/* + * Dilithium Security Levels + * 2 -> 192 bits of security strength + * 3 -> 225 bits of security strength + * 5 -> 257 bits of security strength + */ + +/* DILITHIUM_MODE 5 */ +#define DILITHIUM87_NIST_CATEGORY 5 +#define DILITHIUM87_LAMBDA 256 +#define DILITHIUM87_K 8 +#define DILITHIUM87_L 7 +#define DILITHIUM87_ETA 2 +#define DILITHIUM87_TAU 60 +#define DILITHIUM87_BETA 120 +#define DILITHIUM87_GAMMA1 (1 << 19) +#define DILITHIUM87_GAMMA2 ((DILITHIUM_Q - 1) / 32) +#define DILITHIUM87_OMEGA 75 + +#define DILITHIUM87_CTILDE_BYTES (DILITHIUM87_LAMBDA * 2 / 8) +#define DILITHIUM87_POLYT1_PACKEDBYTES 320 +#define DILITHIUM87_POLYT0_PACKEDBYTES 416 +#define DILITHIUM87_POLYVECH_PACKEDBYTES (DILITHIUM87_OMEGA + DILITHIUM87_= K) + +#if DILITHIUM87_GAMMA1 =3D=3D (1 << 17) +#define DILITHIUM87_POLYZ_PACKEDBYTES 576 +#elif DILITHIUM87_GAMMA1 =3D=3D (1 << 19) +#define DILITHIUM87_POLYZ_PACKEDBYTES 640 +#endif + +#if DILITHIUM87_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 88 +#define DILITHIUM87_POLYW1_PACKEDBYTES 192 +#elif DILITHIUM87_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 32 +#define DILITHIUM87_POLYW1_PACKEDBYTES 128 +#endif + +#if DILITHIUM87_ETA =3D=3D 2 +#define DILITHIUM87_POLYETA_PACKEDBYTES 96 +#elif DILITHIUM87_ETA =3D=3D 4 +#define DILITHIUM87_POLYETA_PACKEDBYTES 128 +#endif + +/* + * Sizes of the different Dilithium buffer types. + * + * WARNING: Do not use these defines in your code. If you need the sizes of + * the different variable sizes, use sizeof of the different variable stru= cts or + * use the different *_size functions documented below to retrieve the dat= a size + * of a particular Dilithium component. + */ +#define DILITHIUM87_PUBLICKEYBYTES \ + (DILITHIUM_SEEDBYTES + \ + DILITHIUM87_K * DILITHIUM87_POLYT1_PACKEDBYTES) +#define DILITHIUM87_SECRETKEYBYTES \ + (2 * DILITHIUM_SEEDBYTES + DILITHIUM_TRBYTES + \ + DILITHIUM87_L * DILITHIUM87_POLYETA_PACKEDBYTES + \ + DILITHIUM87_K * DILITHIUM87_POLYETA_PACKEDBYTES + \ + DILITHIUM87_K * DILITHIUM87_POLYT0_PACKEDBYTES) + +#define DILITHIUM87_CRYPTO_BYTES \ + (DILITHIUM87_CTILDE_BYTES + \ + DILITHIUM87_L * DILITHIUM87_POLYZ_PACKEDBYTES + \ + DILITHIUM87_POLYVECH_PACKEDBYTES) + +#ifndef __ASSEMBLER__ +/* + * @brief Dilithium secret key + */ +struct dilithium_87_sk { + uint8_t sk[DILITHIUM87_SECRETKEYBYTES]; +}; + +/* + * @brief Dilithium public key + */ +struct dilithium_87_pk { + uint8_t pk[DILITHIUM87_PUBLICKEYBYTES]; +}; + +/* + * @brief Dilithium signature + */ +struct dilithium_87_sig { + uint8_t sig[DILITHIUM87_CRYPTO_BYTES]; +}; + +/* + * The alignment is based on largest alignment of a polyvecl typedef - thi= s is + * the AVX2 definition. + */ +#define DILITHIUM_AHAT_ALIGNMENT (32) + +/* Size of the AHat matrix for ML-DSA 87 */ +#define DILITHIUM_87_AHAT_SIZE \ + (256 * sizeof(int32_t) * DILITHIUM87_K * DILITHIUM87_L) + +/* + * @brief Zeroize Dilithium context allocated with + * DILITHIUM87_CTX_ON_STACK dilithium_ed25519_alloc + * + * @param [in] ctx Dilithium context to be zeroized + */ +static inline void dilithium_87_ctx_zero(struct dilithium_ctx *ctx) +{ + if (!ctx) + return; + dilithium_hash_clear(ctx); + if (ctx->ahat) { + memzero_explicit(ctx->ahat, ctx->ahat_size); + ctx->ahat_expanded =3D 0; + } +} + +/* + * @brief Allocate Dilithium stream context on heap + * + * @param [out] ctx Allocated Dilithium stream context + * + * @return: 0 on success, < 0 on error + */ +struct dilithium_ctx *dilithium_87_ctx_alloc(void); + +/* + * @brief Allocate Dilithium stream context on heap including additional + * parameter relevant for the signature operation. + * + * \note See \p DILITHIUM_87_CTX_ON_STACK_AHAT for details. + * + * @param [out] ctx Allocated Dilithium stream context + * + * @return: 0 on success, < 0 on error + */ +struct dilithium_ctx *dilithium_87_ctx_alloc_ahat(void); + +/* + * @brief Zeroize and free Dilithium stream context + * + * @param [in] ctx Dilithium stream context to be zeroized and freed + */ +void dilithium_87_ctx_zero_free(struct dilithium_ctx *ctx); + +/* + * @brief Return the size of the Dilithium secret key. + */ +static inline unsigned int dilithium_87_sk_size(void) +{ + return sizeof_field(struct dilithium_87_sk, sk); +} + +/* + * @brief Return the size of the Dilithium public key. + */ +static inline unsigned int dilithium_87_pk_size(void) +{ + return sizeof_field(struct dilithium_87_pk, pk); +} + +/* + * @brief Return the size of the Dilithium signature. + */ +static inline unsigned int dilithium_87_sig_size(void) +{ + return sizeof_field(struct dilithium_87_sig, sig); +} + +/* + * @brief Verifies ML-DSA signature in one shot + * + * @param [in] sig pointer to input signature + * @param [in] m pointer to message + * @param [in] mlen length of message + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_87_verify(const struct dilithium_87_sig *sig, const uint8_t = *m, + size_t mlen, const struct dilithium_87_pk *pk); + +/* + * @brief Verifies signature with Dilithium context in one shot + * + * This API allows the caller to provide an arbitrary context buffer which + * is hashed together with the message to form the message digest to be si= gned. + * + * @param [in] sig pointer to input signature + * @param [in] ctx reference to the allocated Dilithium context handle + * @param [in] m pointer to message + * @param [in] mlen length of message + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_87_verify_ctx(const struct dilithium_87_sig *sig, + struct dilithium_ctx *ctx, + const uint8_t *m, size_t mlen, + const struct dilithium_87_pk *pk); + +/* + * @brief Initializes a signature verification operation + * + * This call is intended to support messages that are located in non-conti= guous + * places and even becomes available at different times. This call is to be + * used together with the dilithium_verify_update and + * dilithium_verify_final. + * + * @param [in,out] ctx pointer to an allocated Dilithium context + * @param [in] pk pointer to bit-packed public key + * + * @return 0 (success) or < 0 on error; -EOPNOTSUPP is returned if a diffe= rent + * hash than lc_shake256 is used. + */ +int dilithium_87_verify_init(struct dilithium_ctx *ctx, + const struct dilithium_87_pk *pk); + +/* + * @brief Add more data to an already initialized signature state + * + * This call is intended to support messages that are located in non-conti= guous + * places and even becomes available at different times. This call is to be + * used together with the dilithium_verify_init and + * dilithium_verify_final. + * + * @param [in,out] ctx pointer to Dilithium context that was initialized w= ith + * dilithium_sign_init + * @param [in] m pointer to message to be signed + * @param [in] mlen length of message + * + * @return 0 (success) or < 0 on error + */ +int dilithium_87_verify_update(struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen); + +/* + * @brief Verifies signature + * + * @param [in] sig pointer to output signature + * @param [in] ctx pointer to Dilithium context that was initialized with + * dilithium_sign_init and filled with + * dilithium_sign_update + * @param [in] pk pointer to bit-packed public key + * + * @return 0 if signature could be verified correctly and -EBADMSG when + * signature cannot be verified, < 0 on other errors + */ +int dilithium_87_verify_final(const struct dilithium_87_sig *sig, + struct dilithium_ctx *ctx, + const struct dilithium_87_pk *pk); + +#endif /* __ASSEMBLER__ */ + +#endif /* DILITHIUM_87_H */ diff --git a/crypto/ml_dsa/dilithium_api.c b/crypto/ml_dsa/dilithium_api.c new file mode 100644 index 000000000000..f9ed6ddbd03f --- /dev/null +++ b/crypto/ml_dsa/dilithium_api.c @@ -0,0 +1,429 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_API_H +#define DILITHIUM_API_H + +#include "dilithium.h" + +void dilithium_ctx_zero(struct dilithium_ctx *ctx) +{ + if (!ctx) + return; + +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + dilithium_87_ctx_zero(ctx); +#elif defined(CONFIG_CRYPTO_DILITHIUM_65) + dilithium_65_ctx_zero(ctx); +#elif defined(CONFIG_CRYPTO_DILITHIUM_44) + dilithium_44_ctx_zero(ctx); +#endif +} + +void dilithium_ctx_internal(struct dilithium_ctx *ctx) +{ + if (ctx) + ctx->ml_dsa_internal =3D 1; +} + +void dilithium_ctx_userctx(struct dilithium_ctx *ctx, const uint8_t *userc= tx, + size_t userctxlen) +{ + if (ctx) { + ctx->userctx =3D userctx; + ctx->userctxlen =3D userctxlen; + } +} + +void dilithium_ctx_external_mu(struct dilithium_ctx *ctx, const uint8_t *e= xternal_mu, + size_t external_mu_len) +{ + if (ctx) { + ctx->external_mu =3D external_mu; + ctx->external_mu_len =3D external_mu_len; + } +} + +void dilithium_ctx_drop_ahat(struct dilithium_ctx *ctx) +{ + if (ctx) + ctx->ahat_expanded =3D 0; +} + +enum dilithium_type dilithium_pk_type(const struct dilithium_pk *pk) +{ + if (!pk) + return DILITHIUM_UNKNOWN; + return pk->dilithium_type; +} + +enum dilithium_type dilithium_sig_type(const struct dilithium_sig *sig) +{ + if (!sig) + return DILITHIUM_UNKNOWN; + return sig->dilithium_type; +} + +unsigned int dilithium_pk_size(enum dilithium_type dilithium_type) +{ + switch (dilithium_type) { + case DILITHIUM_87: +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + return sizeof_field(struct dilithium_pk, key.pk_87); +#else + return 0; +#endif + case DILITHIUM_65: +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + return sizeof_field(struct dilithium_pk, key.pk_65); +#else + return 0; +#endif + case DILITHIUM_44: +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + return sizeof_field(struct dilithium_pk, key.pk_44); +#else + return 0; +#endif + case DILITHIUM_UNKNOWN: + default: + return 0; + } +} + +unsigned int dilithium_sig_size(enum dilithium_type dilithium_type) +{ + switch (dilithium_type) { + case DILITHIUM_87: +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + return sizeof_field(struct dilithium_sig, sig.sig_87); +#else + return 0; +#endif + case DILITHIUM_65: +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + return sizeof_field(struct dilithium_sig, sig.sig_65); +#else + return 0; +#endif + case DILITHIUM_44: +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + return sizeof_field(struct dilithium_sig, sig.sig_44); +#else + return 0; +#endif + case DILITHIUM_UNKNOWN: + default: + return 0; + } +} + +int dilithium_pk_load(struct dilithium_pk *pk, + const uint8_t *src_key, size_t src_key_len) +{ + if (!pk || !src_key || src_key_len =3D=3D 0) { + return -EINVAL; +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + } else if (src_key_len =3D=3D dilithium_pk_size(DILITHIUM_87)) { + struct dilithium_87_pk *_pk =3D &pk->key.pk_87; + + memcpy(_pk->pk, src_key, src_key_len); + pk->dilithium_type =3D DILITHIUM_87; + return 0; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + } else if (src_key_len =3D=3D dilithium_pk_size(DILITHIUM_65)) { + struct dilithium_65_pk *_pk =3D &pk->key.pk_65; + + memcpy(_pk->pk, src_key, src_key_len); + pk->dilithium_type =3D DILITHIUM_65; + return 0; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + } else if (src_key_len =3D=3D dilithium_pk_size(DILITHIUM_44)) { + struct dilithium_44_pk *_pk =3D &pk->key.pk_44; + + memcpy(_pk->pk, src_key, src_key_len); + pk->dilithium_type =3D DILITHIUM_44; + return 0; +#endif + } else { + return -EINVAL; + } +} + +int dilithium_sig_load(struct dilithium_sig *sig, + const uint8_t *src_sig, size_t src_sig_len) +{ + if (!sig || !src_sig || src_sig_len =3D=3D 0) { + return -EINVAL; +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + } else if (src_sig_len =3D=3D dilithium_sig_size(DILITHIUM_87)) { + struct dilithium_87_sig *_sig =3D &sig->sig.sig_87; + + memcpy(_sig->sig, src_sig, src_sig_len); + sig->dilithium_type =3D DILITHIUM_87; + return 0; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + } else if (src_sig_len =3D=3D dilithium_sig_size(DILITHIUM_65)) { + struct dilithium_65_sig *_sig =3D &sig->sig.sig_65; + + memcpy(_sig->sig, src_sig, src_sig_len); + sig->dilithium_type =3D DILITHIUM_65; + return 0; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + } else if (src_sig_len =3D=3D dilithium_sig_size(DILITHIUM_44)) { + struct dilithium_44_sig *_sig =3D &sig->sig.sig_44; + + memcpy(_sig->sig, src_sig, src_sig_len); + sig->dilithium_type =3D DILITHIUM_44; + return 0; +#endif + } else { + return -EINVAL; + } +} + +int dilithium_pk_ptr(uint8_t **dilithium_key, + size_t *dilithium_key_len, struct dilithium_pk *pk) +{ + if (!pk || !dilithium_key || !dilithium_key_len) { + return -EINVAL; +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + } else if (pk->dilithium_type =3D=3D DILITHIUM_87) { + struct dilithium_87_pk *_pk =3D &pk->key.pk_87; + + *dilithium_key =3D _pk->pk; + *dilithium_key_len =3D dilithium_pk_size(pk->dilithium_type); + return 0; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + } else if (pk->dilithium_type =3D=3D DILITHIUM_65) { + struct dilithium_65_pk *_pk =3D &pk->key.pk_65; + + *dilithium_key =3D _pk->pk; + *dilithium_key_len =3D dilithium_pk_size(pk->dilithium_type); + return 0; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + } else if (pk->dilithium_type =3D=3D DILITHIUM_44) { + struct dilithium_44_pk *_pk =3D &pk->key.pk_44; + + *dilithium_key =3D _pk->pk; + *dilithium_key_len =3D dilithium_pk_size(pk->dilithium_type); + return 0; +#endif + } else { + return -EINVAL; + } +} + +int dilithium_sig_ptr(uint8_t **dilithium_sig, + size_t *dilithium_sig_len, struct dilithium_sig *sig) +{ + if (!sig || !dilithium_sig || !dilithium_sig_len) { + return -EINVAL; +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + } else if (sig->dilithium_type =3D=3D DILITHIUM_87) { + struct dilithium_87_sig *_sig =3D &sig->sig.sig_87; + + *dilithium_sig =3D _sig->sig; + *dilithium_sig_len =3D dilithium_sig_size(sig->dilithium_type); + return 0; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + } else if (sig->dilithium_type =3D=3D DILITHIUM_65) { + struct dilithium_65_sig *_sig =3D &sig->sig.sig_65; + + *dilithium_sig =3D _sig->sig; + *dilithium_sig_len =3D dilithium_sig_size(sig->dilithium_type); + return 0; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + } else if (sig->dilithium_type =3D=3D DILITHIUM_44) { + struct dilithium_44_sig *_sig =3D &sig->sig.sig_44; + + *dilithium_sig =3D _sig->sig; + *dilithium_sig_len =3D dilithium_sig_size(sig->dilithium_type); + return 0; +#endif + } else { + return -EINVAL; + } +} + +int dilithium_verify(const struct dilithium_sig *sig, const uint8_t *m, + size_t mlen, const struct dilithium_pk *pk) +{ + if (!pk || !sig || sig->dilithium_type !=3D pk->dilithium_type) + return -EINVAL; + + switch (pk->dilithium_type) { + case DILITHIUM_87: +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + return dilithium_87_verify(&sig->sig.sig_87, m, mlen, + &pk->key.pk_87); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_65: +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + return dilithium_65_verify(&sig->sig.sig_65, m, mlen, + &pk->key.pk_65); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_44: +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + return dilithium_44_verify(&sig->sig.sig_44, m, mlen, + &pk->key.pk_44); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_UNKNOWN: + default: + return -EOPNOTSUPP; + } +} + +int dilithium_verify_ctx(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen, const struct dilithium_pk *pk) +{ + if (!pk || !sig || sig->dilithium_type !=3D pk->dilithium_type) + return -EINVAL; + + switch (pk->dilithium_type) { + case DILITHIUM_87: +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + return dilithium_87_verify_ctx(&sig->sig.sig_87, ctx, m, + mlen, &pk->key.pk_87); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_65: +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + return dilithium_65_verify_ctx(&sig->sig.sig_65, ctx, m, + mlen, &pk->key.pk_65); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_44: +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + return dilithium_44_verify_ctx(&sig->sig.sig_44, ctx, m, + mlen, &pk->key.pk_44); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_UNKNOWN: + default: + return -EOPNOTSUPP; + } +} + +int dilithium_verify_init(struct dilithium_ctx *ctx, + const struct dilithium_pk *pk) +{ + if (!pk) + return -EINVAL; + + switch (pk->dilithium_type) { + case DILITHIUM_87: +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + return dilithium_87_verify_init(ctx, &pk->key.pk_87); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_65: +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + return dilithium_65_verify_init(ctx, &pk->key.pk_65); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_44: +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + return dilithium_44_verify_init(ctx, &pk->key.pk_44); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_UNKNOWN: + default: + return -EOPNOTSUPP; + } +} + +int dilithium_verify_update(struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen) +{ +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + return dilithium_87_verify_update(ctx, m, mlen); +#elif defined(CONFIG_CRYPTO_DILITHIUM_65) + return dilithium_65_verify_update(ctx, m, mlen); +#elif defined(CONFIG_CRYPTO_DILITHIUM_44) + return dilithium_44_verify_update(ctx, m, mlen); +#else + return -EOPNOTSUPP; +#endif +} + +int dilithium_verify_final(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, + const struct dilithium_pk *pk) +{ + if (!pk || !sig || sig->dilithium_type !=3D pk->dilithium_type) + return -EINVAL; + + switch (pk->dilithium_type) { + case DILITHIUM_87: +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + return dilithium_87_verify_final(&sig->sig.sig_87, ctx, + &pk->key.pk_87); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_65: +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + return dilithium_65_verify_final(&sig->sig.sig_65, ctx, + &pk->key.pk_65); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_44: +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + return dilithium_44_verify_final(&sig->sig.sig_44, ctx, + &pk->key.pk_44); +#else + return -EOPNOTSUPP; +#endif + case DILITHIUM_UNKNOWN: + default: + return -EOPNOTSUPP; + } +} + +#endif /* DILITHIUM_API_H */ diff --git a/crypto/ml_dsa/dilithium_debug.h b/crypto/ml_dsa/dilithium_debu= g.h new file mode 100644 index 000000000000..599a435633ae --- /dev/null +++ b/crypto/ml_dsa/dilithium_debug.h @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2023 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +#ifndef DILITHIUM_DEBUG_H +#define DILITHIUM_DEBUG_H + +#include "dilithium_type.h" + +static inline void dilithium_print_buffer(const uint8_t *buffer, + const size_t bufferlen, + const char *explanation) +{ +} + +static inline void dilithium_print_polyvecl_k(polyvecl mat[DILITHIUM_K], + const char *explanation) +{ +} + +static inline void dilithium_print_polyvecl(polyvecl *polyvec, + const char *explanation) +{ +} + +static inline void dilithium_print_polyveck(polyveck *polyvec, + const char *explanation) +{ +} + +static inline void dilithium_print_poly(poly *vec, const char *explanation) +{ +} + +#endif /* DILITHIUM_DEBUG_H */ diff --git a/crypto/ml_dsa/dilithium_ntt.c b/crypto/ml_dsa/dilithium_ntt.c new file mode 100644 index 000000000000..b2834a2dd501 --- /dev/null +++ b/crypto/ml_dsa/dilithium_ntt.c @@ -0,0 +1,89 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#include "dilithium_ntt.h" +#include "dilithium_reduce.h" + +/* + * @brief ntt - Forward NTT, in-place. No modular reduction is performed a= fter + * additions or subtractions. Output vector is in bitreversed + * order. + * + * @param [in,out] p input/output coefficient array + */ +void ntt(int32_t a[DILITHIUM_N]) +{ + unsigned int len, start, j, k; + int32_t zeta, t; + + k =3D 0; + + for (len =3D 128; len > 0; len >>=3D 1) { + for (start =3D 0; start < DILITHIUM_N; start =3D j + len) { + zeta =3D dilithium_zetas[++k]; + for (j =3D start; j < start + len; ++j) { + t =3D montgomery_reduce((int64_t)zeta * + a[j + len]); + a[j + len] =3D a[j] - t; + a[j] =3D a[j] + t; + } + } + } +} + +/* + * @brief invntt_tomont - Inverse NTT and multiplication by Montgomery fac= tor + * 2^32. In-place. No modular reductions after additions + * or subtractions; input coefficients need to be smaller + * than Q in absolute value. Output coefficient are + * smaller than Q in absolute value. + * + * @param [in,out] p input/output coefficient array + */ +void invntt_tomont(int32_t a[DILITHIUM_N]) +{ + unsigned int start, len, j, k; + int32_t t, zeta; + const int32_t f =3D 41978; // mont^2/256 + + k =3D 256; + + for (len =3D 1; len < DILITHIUM_N; len <<=3D 1) { + for (start =3D 0; start < DILITHIUM_N; start =3D j + len) { + zeta =3D -dilithium_zetas[--k]; + for (j =3D start; j < start + len; ++j) { + t =3D a[j]; + a[j] =3D t + a[j + len]; + a[j + len] =3D t - a[j + len]; + a[j + len] =3D montgomery_reduce((int64_t)zeta * + a[j + len]); + } + } + } + + for (j =3D 0; j < DILITHIUM_N; ++j) + a[j] =3D montgomery_reduce((int64_t)f * a[j]); +} diff --git a/crypto/ml_dsa/dilithium_ntt.h b/crypto/ml_dsa/dilithium_ntt.h new file mode 100644 index 000000000000..5dfea3a936cd --- /dev/null +++ b/crypto/ml_dsa/dilithium_ntt.h @@ -0,0 +1,35 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_NTT_H +#define DILITHIUM_NTT_H + +#include "dilithium_type.h" + +void ntt(int32_t a[DILITHIUM_N]); +void invntt_tomont(int32_t a[DILITHIUM_N]); + +#endif /* DILITHIUM_NTT_H */ diff --git a/crypto/ml_dsa/dilithium_pack.h b/crypto/ml_dsa/dilithium_pack.h new file mode 100644 index 000000000000..5db65014b405 --- /dev/null +++ b/crypto/ml_dsa/dilithium_pack.h @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_PACK_H +#define DILITHIUM_PACK_H + +/*************************************************************************= ****** + * Pack / Unpack public key + *************************************************************************= *****/ + +static inline void unpack_pk_rho(uint8_t rho[DILITHIUM_SEEDBYTES], + const struct dilithium_pk *pk) +{ + memcpy(rho, pk->pk, DILITHIUM_SEEDBYTES); +} + +static inline void unpack_pk_t1(polyveck *t1, const struct dilithium_pk *p= k) +{ + unsigned int i; + const uint8_t *pubkey =3D pk->pk + DILITHIUM_SEEDBYTES; + + for (i =3D 0; i < DILITHIUM_K; ++i) + polyt1_unpack(&t1->vec[i], + pubkey + i * DILITHIUM_POLYT1_PACKEDBYTES); +} + +/* + * @brief unpack_sig_z - Unpack z part of signature sig =3D (c, z, h). + * + * NOTE: The c value is not unpacked as it can be used right from the sign= ature. + * To access it, a caller simply needs to use the first + * DILITHIUM_CTILDE_BYTES of the signature. + * + * @param [out] z pointer to output vector z + * @param [in] sig signature + */ +static inline void unpack_sig_z(polyvecl *z, const struct dilithium_sig *s= ig) +{ + unsigned int i; + /* Skip c */ + const uint8_t *signature =3D sig->sig + DILITHIUM_CTILDE_BYTES; + + for (i =3D 0; i < DILITHIUM_L; ++i) + polyz_unpack(&z->vec[i], + signature + i * DILITHIUM_POLYZ_PACKEDBYTES); +} + +/* + * @brief unpack_sig - Unpack h value of signature sig =3D (c, z, h). + * + * NOTE: The c value is not unpacked as it can be used right from the sign= ature. + * To access it, a caller simply needs to use the first + * DILITHIUM_CTILDE_BYTES of the signature. + * + * @param [out] h pointer to output hint vector h + * @param [in] sig signature + * + * @return 1 in case of malformed signature; otherwise 0. + */ +static inline int unpack_sig_h(polyveck *h, const struct dilithium_sig *si= g) +{ + unsigned int i, j, k; + /* Skip c */ + const uint8_t *signature =3D + sig->sig + DILITHIUM_CTILDE_BYTES + + DILITHIUM_L * DILITHIUM_POLYZ_PACKEDBYTES; + + /* Decode h */ + k =3D 0; + for (i =3D 0; i < DILITHIUM_K; ++i) { + for (j =3D 0; j < DILITHIUM_N; ++j) + h->vec[i].coeffs[j] =3D 0; + + if (signature[DILITHIUM_OMEGA + i] < k || + signature[DILITHIUM_OMEGA + i] > DILITHIUM_OMEGA) + return 1; + + for (j =3D k; j < signature[DILITHIUM_OMEGA + i]; ++j) { + /* Coefficients are ordered for strong unforgeability */ + if (j > k && signature[j] <=3D signature[j - 1]) + return 1; + h->vec[i].coeffs[signature[j]] =3D 1; + } + + k =3D signature[DILITHIUM_OMEGA + i]; + } + + /* Extra indices are zero for strong unforgeability */ + for (j =3D k; j < DILITHIUM_OMEGA; ++j) + if (signature[j]) + return 1; + + return 0; +} + +#endif /* DILITHIUM_PACK_H */ diff --git a/crypto/ml_dsa/dilithium_poly.c b/crypto/ml_dsa/dilithium_poly.c new file mode 100644 index 000000000000..d39f04471d3f --- /dev/null +++ b/crypto/ml_dsa/dilithium_poly.c @@ -0,0 +1,377 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#include "dilithium_poly.h" +#include "dilithium_poly_common.h" +#include "dilithium_service_helpers.h" + +/* + * @brief poly_chknorm - Check infinity norm of polynomial against given b= ound. + * Assumes input coefficients were reduced by reduce32(). + * + * @param [in] a pointer to polynomial + * @param [in] B norm bound + * + * @return 0 if norm is strictly smaller than B <=3D (Q-1)/8 and 1 otherwi= se. + */ +int poly_chknorm(const poly *a, int32_t B) +{ + unsigned int i; + int32_t t; + + if (B > (DILITHIUM_Q - 1) / 8) + return 1; + + /* + * It is ok to leak which coefficient violates the bound since + * the probability for each coefficient *is independent of secret + * data but we must not leak the sign of the centralized representative. + */ + for (i =3D 0; i < DILITHIUM_N; ++i) { + /* Absolute value */ + t =3D a->coeffs[i] >> 31; + t =3D a->coeffs[i] - (t & 2 * a->coeffs[i]); + + if (t >=3D B) + return 1; + } + + return 0; +} + +/* + * @brief poly_uniform - Sample polynomial with uniformly random coefficie= nts + * in [0,Q-1] by performing rejection sampling on the + * output stream of SHAKE128(seed|nonce). + * + * @param [out] a pointer to output polynomial + * @param [in] seed byte array with seed of length DILITHIUM_SEEDBYTES + * @param [in] nonce 2-byte nonce + */ +void poly_uniform(poly *a, const uint8_t seed[DILITHIUM_SEEDBYTES], + uint16_t nonce, void *ws_buf) +{ + struct shake_ctx hash_ctx; + unsigned int i, ctr, off; + unsigned int buflen =3D POLY_UNIFORM_NBLOCKS * SHAKE128_BLOCK_SIZE; + uint8_t *buf =3D ws_buf; + + shake128_init(&hash_ctx); + shake_update(&hash_ctx, seed, DILITHIUM_SEEDBYTES); + shake_update(&hash_ctx, (uint8_t *)&nonce, sizeof(nonce)); + shake_squeeze(&hash_ctx, buf, buflen); + + ctr =3D rej_uniform(a->coeffs, DILITHIUM_N, buf, buflen); + + while (ctr < DILITHIUM_N) { + off =3D buflen % 3; + for (i =3D 0; i < off; ++i) + buf[i] =3D buf[buflen - off + i]; + + shake_squeeze(&hash_ctx, buf + off, SHAKE128_BLOCK_SIZE); + buflen =3D DILITHIUM_SEEDBYTES + off; + ctr +=3D rej_uniform(a->coeffs + ctr, DILITHIUM_N - ctr, buf, + buflen); + } + + shake_zeroize_ctx(&hash_ctx); +} + +/* + * @brief poly_uniform_gamma1 - Sample polynomial with uniformly random + * coefficients in [-(GAMMA1 - 1), GAMMA1] by + * unpacking output stream of + * SHAKE256(seed|nonce). + * + * @param [out] a pointer to output polynomial + * @param [in] seed: byte array with seed of length DILITHIUM_CRHBYTES + * @param nonce 16-bit nonce + */ +void poly_uniform_gamma1(poly *a, const uint8_t seed[DILITHIUM_CRHBYTES], + uint16_t nonce, void *ws_buf) +{ + struct shake_ctx hash_ctx; + + shake256_init(&hash_ctx); + shake_update(&hash_ctx, seed, DILITHIUM_CRHBYTES); + shake_update(&hash_ctx, (uint8_t *)&nonce, sizeof(nonce)); + shake_squeeze(&hash_ctx, ws_buf, POLY_UNIFORM_GAMMA1_BYTES); + shake_zeroize_ctx(&hash_ctx); + + polyz_unpack(a, ws_buf); +} + +/* + * @brief poly_challenge - Implementation of H. Samples polynomial with TAU + * nonzero coefficients in {-1,1} using the output + * stream of SHAKE256(seed). + * + * @param [out] c pointer to output polynomial + * @param [in] mu byte array containing seed of length DILITHIUM_CTILDE_BY= TES + */ +void poly_challenge(poly *c, const uint8_t seed[DILITHIUM_CTILDE_BYTES], + void *ws_buf) +{ + struct shake_ctx hash_ctx; + unsigned int i, b, pos; + uint64_t signs; + uint8_t *buf =3D ws_buf; + + shake256_init(&hash_ctx); + shake_update(&hash_ctx, seed, DILITHIUM_CTILDE_BYTES); + shake_squeeze(&hash_ctx, buf, POLY_CHALLENGE_BYTES); + + signs =3D 0; + for (i =3D 0; i < 8; ++i) + signs |=3D (uint64_t)buf[i] << 8 * i; + pos =3D 8; + + for (i =3D 0; i < DILITHIUM_N; ++i) + c->coeffs[i] =3D 0; + + for (i =3D DILITHIUM_N - DILITHIUM_TAU; i < DILITHIUM_N; ++i) { + do { + if (pos >=3D SHAKE256_BLOCK_SIZE) { + shake_squeeze(&hash_ctx, buf, POLY_CHALLENGE_BYTES); + pos =3D 0; + } + + b =3D buf[pos++]; + } while (b > i); + + c->coeffs[i] =3D c->coeffs[b]; + c->coeffs[b] =3D 1 - (int32_t)(2 * (signs & 1)); + signs >>=3D 1; + } + + shake_zeroize_ctx(&hash_ctx); +} + +/* + * @brief polyeta_unpack - Unpack polynomial with coefficients in [-ETA,ET= A]. + * + * @param [out] r pointer to output polynomial + * @param [in] a byte array with bit-packed polynomial + */ +void polyeta_unpack(poly *r, const uint8_t *a) +{ + unsigned int i; + +#if DILITHIUM_ETA =3D=3D 2 + for (i =3D 0; i < DILITHIUM_N / 8; ++i) { + r->coeffs[8 * i + 0] =3D (a[3 * i + 0] >> 0) & 7; + r->coeffs[8 * i + 1] =3D (a[3 * i + 0] >> 3) & 7; + r->coeffs[8 * i + 2] =3D + ((a[3 * i + 0] >> 6) | (a[3 * i + 1] << 2)) & 7; + r->coeffs[8 * i + 3] =3D (a[3 * i + 1] >> 1) & 7; + r->coeffs[8 * i + 4] =3D (a[3 * i + 1] >> 4) & 7; + r->coeffs[8 * i + 5] =3D + ((a[3 * i + 1] >> 7) | (a[3 * i + 2] << 1)) & 7; + r->coeffs[8 * i + 6] =3D (a[3 * i + 2] >> 2) & 7; + r->coeffs[8 * i + 7] =3D (a[3 * i + 2] >> 5) & 7; + + r->coeffs[8 * i + 0] =3D DILITHIUM_ETA - r->coeffs[8 * i + 0]; + r->coeffs[8 * i + 1] =3D DILITHIUM_ETA - r->coeffs[8 * i + 1]; + r->coeffs[8 * i + 2] =3D DILITHIUM_ETA - r->coeffs[8 * i + 2]; + r->coeffs[8 * i + 3] =3D DILITHIUM_ETA - r->coeffs[8 * i + 3]; + r->coeffs[8 * i + 4] =3D DILITHIUM_ETA - r->coeffs[8 * i + 4]; + r->coeffs[8 * i + 5] =3D DILITHIUM_ETA - r->coeffs[8 * i + 5]; + r->coeffs[8 * i + 6] =3D DILITHIUM_ETA - r->coeffs[8 * i + 6]; + r->coeffs[8 * i + 7] =3D DILITHIUM_ETA - r->coeffs[8 * i + 7]; + } +#elif DILITHIUM_ETA =3D=3D 4 + for (i =3D 0; i < DILITHIUM_N / 2; ++i) { + r->coeffs[2 * i + 0] =3D a[i] & 0x0F; + r->coeffs[2 * i + 1] =3D a[i] >> 4; + r->coeffs[2 * i + 0] =3D DILITHIUM_ETA - r->coeffs[2 * i + 0]; + r->coeffs[2 * i + 1] =3D DILITHIUM_ETA - r->coeffs[2 * i + 1]; + } +#else +#error "Undefined DILITHIUM_ETA" +#endif +} + +/* + * @brief polyt0_unpack - Unpack polynomial t0 with coefficients in + * ]-2^{D-1}, 2^{D-1}]. + * + * @param [out] r pointer to output polynomial + * @param [in] a byte array with bit-packed polynomial + */ +void polyt0_unpack(poly *r, const uint8_t *a) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_N / 8; ++i) { + r->coeffs[8 * i + 0] =3D a[13 * i + 0]; + r->coeffs[8 * i + 0] |=3D (int32_t)a[13 * i + 1] << 8; + r->coeffs[8 * i + 0] &=3D 0x1FFF; + + r->coeffs[8 * i + 1] =3D a[13 * i + 1] >> 5; + r->coeffs[8 * i + 1] |=3D (int32_t)a[13 * i + 2] << 3; + r->coeffs[8 * i + 1] |=3D (int32_t)a[13 * i + 3] << 11; + r->coeffs[8 * i + 1] &=3D 0x1FFF; + + r->coeffs[8 * i + 2] =3D a[13 * i + 3] >> 2; + r->coeffs[8 * i + 2] |=3D (int32_t)a[13 * i + 4] << 6; + r->coeffs[8 * i + 2] &=3D 0x1FFF; + + r->coeffs[8 * i + 3] =3D a[13 * i + 4] >> 7; + r->coeffs[8 * i + 3] |=3D (int32_t)a[13 * i + 5] << 1; + r->coeffs[8 * i + 3] |=3D (int32_t)a[13 * i + 6] << 9; + r->coeffs[8 * i + 3] &=3D 0x1FFF; + + r->coeffs[8 * i + 4] =3D a[13 * i + 6] >> 4; + r->coeffs[8 * i + 4] |=3D (int32_t)a[13 * i + 7] << 4; + r->coeffs[8 * i + 4] |=3D (int32_t)a[13 * i + 8] << 12; + r->coeffs[8 * i + 4] &=3D 0x1FFF; + + r->coeffs[8 * i + 5] =3D a[13 * i + 8] >> 1; + r->coeffs[8 * i + 5] |=3D (int32_t)a[13 * i + 9] << 7; + r->coeffs[8 * i + 5] &=3D 0x1FFF; + + r->coeffs[8 * i + 6] =3D a[13 * i + 9] >> 6; + r->coeffs[8 * i + 6] |=3D (int32_t)a[13 * i + 10] << 2; + r->coeffs[8 * i + 6] |=3D (int32_t)a[13 * i + 11] << 10; + r->coeffs[8 * i + 6] &=3D 0x1FFF; + + r->coeffs[8 * i + 7] =3D a[13 * i + 11] >> 3; + r->coeffs[8 * i + 7] |=3D (int32_t)a[13 * i + 12] << 5; + r->coeffs[8 * i + 7] &=3D 0x1FFF; + + r->coeffs[8 * i + 0] =3D + (1 << (DILITHIUM_D - 1)) - r->coeffs[8 * i + 0]; + r->coeffs[8 * i + 1] =3D + (1 << (DILITHIUM_D - 1)) - r->coeffs[8 * i + 1]; + r->coeffs[8 * i + 2] =3D + (1 << (DILITHIUM_D - 1)) - r->coeffs[8 * i + 2]; + r->coeffs[8 * i + 3] =3D + (1 << (DILITHIUM_D - 1)) - r->coeffs[8 * i + 3]; + r->coeffs[8 * i + 4] =3D + (1 << (DILITHIUM_D - 1)) - r->coeffs[8 * i + 4]; + r->coeffs[8 * i + 5] =3D + (1 << (DILITHIUM_D - 1)) - r->coeffs[8 * i + 5]; + r->coeffs[8 * i + 6] =3D + (1 << (DILITHIUM_D - 1)) - r->coeffs[8 * i + 6]; + r->coeffs[8 * i + 7] =3D + (1 << (DILITHIUM_D - 1)) - r->coeffs[8 * i + 7]; + } +} + +/* + * @brief polyz_unpack - Unpack polynomial z with coefficients + * in [-(GAMMA1 - 1), GAMMA1]. + * + * @param [out] r pointer to output polynomial + * @param [in] a byte array with bit-packed polynomial + */ +void polyz_unpack(poly *r, const uint8_t *a) +{ + unsigned int i; + +#if DILITHIUM_GAMMA1 =3D=3D (1 << 17) + for (i =3D 0; i < DILITHIUM_N / 4; ++i) { + r->coeffs[4 * i + 0] =3D a[9 * i + 0]; + r->coeffs[4 * i + 0] |=3D (int32_t)a[9 * i + 1] << 8; + r->coeffs[4 * i + 0] |=3D (int32_t)a[9 * i + 2] << 16; + r->coeffs[4 * i + 0] &=3D 0x3FFFF; + + r->coeffs[4 * i + 1] =3D a[9 * i + 2] >> 2; + r->coeffs[4 * i + 1] |=3D (int32_t)a[9 * i + 3] << 6; + r->coeffs[4 * i + 1] |=3D (int32_t)a[9 * i + 4] << 14; + r->coeffs[4 * i + 1] &=3D 0x3FFFF; + + r->coeffs[4 * i + 2] =3D a[9 * i + 4] >> 4; + r->coeffs[4 * i + 2] |=3D (int32_t)a[9 * i + 5] << 4; + r->coeffs[4 * i + 2] |=3D (int32_t)a[9 * i + 6] << 12; + r->coeffs[4 * i + 2] &=3D 0x3FFFF; + + r->coeffs[4 * i + 3] =3D a[9 * i + 6] >> 6; + r->coeffs[4 * i + 3] |=3D (int32_t)a[9 * i + 7] << 2; + r->coeffs[4 * i + 3] |=3D (int32_t)a[9 * i + 8] << 10; + r->coeffs[4 * i + 3] &=3D 0x3FFFF; + + r->coeffs[4 * i + 0] =3D + DILITHIUM_GAMMA1 - r->coeffs[4 * i + 0]; + r->coeffs[4 * i + 1] =3D + DILITHIUM_GAMMA1 - r->coeffs[4 * i + 1]; + r->coeffs[4 * i + 2] =3D + DILITHIUM_GAMMA1 - r->coeffs[4 * i + 2]; + r->coeffs[4 * i + 3] =3D + DILITHIUM_GAMMA1 - r->coeffs[4 * i + 3]; + } +#elif DILITHIUM_GAMMA1 =3D=3D (1 << 19) + for (i =3D 0; i < DILITHIUM_N / 2; ++i) { + r->coeffs[2 * i + 0] =3D a[5 * i + 0]; + r->coeffs[2 * i + 0] |=3D (int32_t)a[5 * i + 1] << 8; + r->coeffs[2 * i + 0] |=3D (int32_t)a[5 * i + 2] << 16; + r->coeffs[2 * i + 0] &=3D 0xFFFFF; + + r->coeffs[2 * i + 1] =3D a[5 * i + 2] >> 4; + r->coeffs[2 * i + 1] |=3D (int32_t)a[5 * i + 3] << 4; + r->coeffs[2 * i + 1] |=3D (int32_t)a[5 * i + 4] << 12; + r->coeffs[2 * i + 1] &=3D 0xFFFFF; + + r->coeffs[2 * i + 0] =3D + DILITHIUM_GAMMA1 - r->coeffs[2 * i + 0]; + r->coeffs[2 * i + 1] =3D + DILITHIUM_GAMMA1 - r->coeffs[2 * i + 1]; + } +#else +#error "Undefined Gamma" +#endif +} + +/* + * @brief polyw1_pack - Bit-pack polynomial w1 with coefficients in [0,15]= or + * [0,43]. Input coefficients are assumed to be standard + * representatives. + * + * @param [out] r pointer to output byte array with at least + * DILITHIUM_POLYW1_PACKEDBYTES bytes + * @param [in] a pointer to input polynomial + */ +void polyw1_pack(uint8_t *r, const poly *a) +{ + unsigned int i; + +#if DILITHIUM_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 88 + for (i =3D 0; i < DILITHIUM_N / 4; ++i) { + r[3 * i + 0] =3D (uint8_t)(a->coeffs[4 * i + 0]); + r[3 * i + 0] |=3D (uint8_t)(a->coeffs[4 * i + 1] << 6); + r[3 * i + 1] =3D (uint8_t)(a->coeffs[4 * i + 1] >> 2); + r[3 * i + 1] |=3D (uint8_t)(a->coeffs[4 * i + 2] << 4); + r[3 * i + 2] =3D (uint8_t)(a->coeffs[4 * i + 2] >> 4); + r[3 * i + 2] |=3D (uint8_t)(a->coeffs[4 * i + 3] << 2); + } +#elif DILITHIUM_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 32 + for (i =3D 0; i < DILITHIUM_N / 2; ++i) + r[i] =3D (uint8_t)(a->coeffs[2 * i + 0] | + (a->coeffs[2 * i + 1] << 4)); +#else +#error "Undefined Gamma" +#endif +} diff --git a/crypto/ml_dsa/dilithium_poly.h b/crypto/ml_dsa/dilithium_poly.h new file mode 100644 index 000000000000..9528b9fd4519 --- /dev/null +++ b/crypto/ml_dsa/dilithium_poly.h @@ -0,0 +1,181 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_POLY_H +#define DILITHIUM_POLY_H + +#include "dilithium_type.h" +#include "dilithium_reduce.h" + +typedef struct { + int32_t coeffs[DILITHIUM_N]; +} poly; + +/* + * @brief poly_add - Add polynomials. No modular reduction is performed. + * + * @param [out] c pointer to output polynomial + * @param [in] a pointer to first summand + * @param [in] b pointer to second summand + */ +static inline void poly_add(poly *c, const poly *a, const poly *b) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_N; ++i) + c->coeffs[i] =3D a->coeffs[i] + b->coeffs[i]; +} + +/* + * @brief poly_sub - Subtract polynomials. No modular reduction is + * performed. + * + * @param [out] c pointer to output polynomial + * @param [in] a pointer to first input polynomial + * @param [in] b pointer to second input polynomial to be subtraced from f= irst + * input polynomial + */ +static inline void poly_sub(poly *c, const poly *a, const poly *b) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_N; ++i) + c->coeffs[i] =3D a->coeffs[i] - b->coeffs[i]; +} + +/* + * @brief poly_shiftl - Multiply polynomial by 2^D without modular reducti= on. + * Assumes input coefficients to be less than 2^{31-D} in + * absolute value. + * + * @param [in,out] a pointer to input/output polynomial + */ +static inline void poly_shiftl(poly *a) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_N; ++i) + a->coeffs[i] <<=3D DILITHIUM_D; +} + +/* + * @brief poly_decompose - For all coefficients c of the input polynomial, + * compute high and low bits c0, c1 such + * c mod Q =3D c1*ALPHA + c0 with + * -ALPHA/2 < c0 <=3D ALPHA/2 except c1 =3D (Q-1)/ALPHA + * where we set c1 =3D 0 and + * -ALPHA/2 <=3D c0 =3D c mod Q - Q < 0. + * Assumes coefficients to be standard representatives. + * + * @param [out] a1 pointer to output polynomial with coefficients c1 + * @param [out] a0 pointer to output polynomial with coefficients c0 + * @param [in] a pointer to input polynomial + */ +static inline void poly_decompose(poly *a1, poly *a0, const poly *a) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_N; ++i) + a1->coeffs[i] =3D decompose(&a0->coeffs[i], a->coeffs[i]); +} + +/* + * @brief poly_make_hint - Compute hint polynomial. The coefficients of wh= ich + * indicate whether the low bits of the corresponding + * coefficient of the input polynomial overflow into the + * high bits. + * + * @param [out] h pointer to output hint polynomial + * @param [in] a0 pointer to low part of input polynomial + * @param [in] a1 pointer to high part of input polynomial + * + * @return number of 1 bits. + */ +static inline unsigned int poly_make_hint(poly *h, const poly *a0, + const poly *a1) +{ + unsigned int i, s =3D 0; + + for (i =3D 0; i < DILITHIUM_N; ++i) { + h->coeffs[i] =3D make_hint(a0->coeffs[i], a1->coeffs[i]); + s +=3D (unsigned int)h->coeffs[i]; + } + + return s; +} + +/* + * @brief poly_use_hint - Use hint polynomial to correct the high bits of a + * polynomial. + * + * @param [out] b pointer to output polynomial with corrected high bits + * @param [in] a pointer to input polynomial + * @param [in] h pointer to input hint polynomial + */ +static inline void poly_use_hint(poly *b, const poly *a, const poly *h) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_N; ++i) + b->coeffs[i] =3D use_hint(a->coeffs[i], h->coeffs[i]); +} + +int poly_chknorm(const poly *a, int32_t B); + +#define POLY_UNIFORM_NBLOCKS = \ + ((768 + SHAKE128_BLOCK_SIZE - 1) / SHAKE128_BLOCK_SIZE) +void poly_uniform(poly *a, const uint8_t seed[DILITHIUM_SEEDBYTES], + uint16_t nonce, void *ws_buf); + +#if DILITHIUM_ETA =3D=3D 2 +#define POLY_UNIFORM_ETA_NBLOCKS = \ + ((136 + SHAKE256_BLOCK_SIZE - 1) / SHAKE256_BLOCK_SIZE) +#elif DILITHIUM_ETA =3D=3D 4 +#define POLY_UNIFORM_ETA_NBLOCKS = \ + ((227 + SHAKE256_BLOCK_SIZE - 1) / SHAKE256_BLOCK_SIZE) +#else +#error "Undefined DILITHIUM_ETA" +#endif +#define POLY_UNIFORM_ETA_BYTES POLY_UNIFORM_ETA_NBLOCKS *SHAKE256_BLOCK_SI= ZE +#define POLY_UNIFORM_GAMMA1_NBLOCKS = \ + ((DILITHIUM_POLYZ_PACKEDBYTES + SHAKE256_BLOCK_SIZE - 1) / \ + SHAKE256_BLOCK_SIZE) +#define POLY_UNIFORM_GAMMA1_BYTES = \ + POLY_UNIFORM_GAMMA1_NBLOCKS *SHAKE256_BLOCK_SIZE + +#define POLY_CHALLENGE_BYTES SHAKE256_BLOCK_SIZE +void poly_challenge(poly *c, const uint8_t seed[DILITHIUM_CTILDE_BYTES], + void *ws_buf); + +void polyeta_unpack(poly *r, const uint8_t *a); + +void polyt0_unpack(poly *r, const uint8_t *a); + +void polyz_unpack(poly *r, const uint8_t *a); + +void polyw1_pack(uint8_t *r, const poly *a); + +#endif /* DILITHIUM_POLY_H */ diff --git a/crypto/ml_dsa/dilithium_poly_c.h b/crypto/ml_dsa/dilithium_pol= y_c.h new file mode 100644 index 000000000000..5e9bb27a854a --- /dev/null +++ b/crypto/ml_dsa/dilithium_poly_c.h @@ -0,0 +1,141 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2023 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +#ifndef DILITHIUM_POLY_C_H +#define DILITHIUM_POLY_C_H + +#include "dilithium_ntt.h" + +/* + * @brief poly_reduce - Inplace reduction of all coefficients of polynomia= l to + * representative in [-6283009,6283007]. + * + * @param [in,out] a pointer to input/output polynomial + */ +static inline void poly_reduce(poly *a) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_N; ++i) + a->coeffs[i] =3D reduce32(a->coeffs[i]); +} + +/* + * @brief poly_caddq - For all coefficients of in/out polynomial add Q if + * coefficient is negative. + * + * @param [in,out] a pointer to input/output polynomial + */ +static inline void poly_caddq(poly *a) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_N; ++i) + a->coeffs[i] =3D caddq(a->coeffs[i]); +} + +/* + * @brief poly_pointwise_montgomery - Pointwise multiplication of polynomi= als in + * NTT domain representation and + * multiplication of resulting polynomial + * by 2^{-32}. + * + * @param [out] c pointer to output polynomial + * @param [in] a pointer to first input polynomial + * @param [in] b pointer to second input polynomial + */ +static inline void poly_pointwise_montgomery(poly *c, const poly *a, + const poly *b) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_N; ++i) + c->coeffs[i] =3D + montgomery_reduce((int64_t)a->coeffs[i] * b->coeffs[i]); +} + +/* + * @brief poly_power2round - For all coefficients c of the input polynomia= l, + * compute c0, c1 such that c mod Q =3D c1*2^D + c0 + * with -2^{D-1} < c0 <=3D 2^{D-1}. Assumes coefficients + * to be standard representatives. + * + * @param [out] a1 pointer to output polynomial with coefficients c1 + * @param [out] a0 pointer to output polynomial with coefficients c0 + * @param [in] a pointer to input polynomial + */ +static inline void poly_power2round(poly *a1, poly *a0, const poly *a) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_N; ++i) + a1->coeffs[i] =3D power2round(&a0->coeffs[i], a->coeffs[i]); +} + +/* + * @brief polyt1_unpack - Unpack polynomial t1 with 10-bit coefficients. + * Output coefficients are standard representatives. + * + * @param [out] r pointer to output polynomial + * @param [in] a byte array with bit-packed polynomial + */ +static inline void polyt1_unpack(poly *r, const uint8_t *a) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_N / 4; ++i) { + r->coeffs[4 * i + 0] =3D + ((a[5 * i + 0] >> 0) | ((uint32_t)a[5 * i + 1] << 8)) & + 0x3FF; + r->coeffs[4 * i + 1] =3D + ((a[5 * i + 1] >> 2) | ((uint32_t)a[5 * i + 2] << 6)) & + 0x3FF; + r->coeffs[4 * i + 2] =3D + ((a[5 * i + 2] >> 4) | ((uint32_t)a[5 * i + 3] << 4)) & + 0x3FF; + r->coeffs[4 * i + 3] =3D + ((a[5 * i + 3] >> 6) | ((uint32_t)a[5 * i + 4] << 2)) & + 0x3FF; + } +} + +/* + * @brief poly_ntt - Inplace forward NTT. Coefficients can grow by + * 8*Q in absolute value. + * + * @param [in,out] a pointer to input/output polynomial + */ +static inline void poly_ntt(poly *a) +{ + ntt(a->coeffs); +} + +/* + * @brief poly_invntt_tomont - Inplace inverse NTT and multiplication by 2= ^{32}. + * Input coefficients need to be less than Q in + * absolute value and output coefficients are again + * bounded by Q. + * + * @param [in,out] a pointer to input/output polynomial + */ +static inline void poly_invntt_tomont(poly *a) +{ + invntt_tomont(a->coeffs); +} + +#endif /* DILITHIUM_POLY_C_H */ diff --git a/crypto/ml_dsa/dilithium_poly_common.h b/crypto/ml_dsa/dilithiu= m_poly_common.h new file mode 100644 index 000000000000..7c7cef28b545 --- /dev/null +++ b/crypto/ml_dsa/dilithium_poly_common.h @@ -0,0 +1,35 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_POLY_COMMON_H +#define DILITHIUM_POLY_COMMON_H + +#include "dilithium_type.h" + +void poly_uniform_gamma1(poly *a, const uint8_t seed[DILITHIUM_CRHBYTES], + uint16_t nonce, void *ws_buf); + +#endif /* DILITHIUM_POLY_COMMON_H */ diff --git a/crypto/ml_dsa/dilithium_polyvec.h b/crypto/ml_dsa/dilithium_po= lyvec.h new file mode 100644 index 000000000000..47eb60758850 --- /dev/null +++ b/crypto/ml_dsa/dilithium_polyvec.h @@ -0,0 +1,343 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_POLYVEC_H +#define DILITHIUM_POLYVEC_H + +#include "dilithium_type.h" +#include "dilithium_poly.h" + +typedef struct { + poly vec[DILITHIUM_L]; +} polyvecl; + +/* Vectors of polynomials of length K */ +typedef struct { + poly vec[DILITHIUM_K]; +} polyveck; + +/**************************************************************/ +/************ Vectors of polynomials of length L **************/ +/**************************************************************/ + +static inline void polyvecl_reduce(polyvecl *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_L; ++i) + poly_reduce(&v->vec[i]); +} + +/* + * @brief polyvecl_add - Add vectors of polynomials of length L. + * No modular reduction is performed. + * + * @param [out] w pointer to output vector + * @param [in] u pointer to first summand + * @param [in] v pointer to second summand + */ +static inline void polyvecl_add(polyvecl *w, const polyvecl *u, + const polyvecl *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_L; ++i) + poly_add(&w->vec[i], &u->vec[i], &v->vec[i]); +} + +/* + * @brief polyvecl_ntt - Forward NTT of all polynomials in vector of lengt= h L. + * Output coefficients can be up to 16*Q larger than input + * coefficients. + * + * @param [in,out] v pointer to input/output vector + */ +static inline void polyvecl_ntt(polyvecl *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_L; ++i) + poly_ntt(&v->vec[i]); +} + +static inline void polyvecl_invntt_tomont(polyvecl *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_L; ++i) + poly_invntt_tomont(&v->vec[i]); +} + +static inline void polyvecl_pointwise_poly_montgomery(polyvecl *r, + const poly *a, + const polyvecl *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_L; ++i) + poly_pointwise_montgomery(&r->vec[i], a, &v->vec[i]); +} + +/* + * @brief polyvecl_chknorm - Check infinity norm of polynomials in vector = of + * length L. Assumes input polyvecl to be reduced by + * polyvecl_reduce(). + * + * @param [in] v pointer to vector + * @param [in] bound norm bound + * + * @return 0 if norm of all polynomials is strictly smaller than B <=3D (Q= -1)/8 + * and 1 otherwise. + */ +static inline int polyvecl_chknorm(const polyvecl *v, int32_t bound) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_L; ++i) + if (poly_chknorm(&v->vec[i], bound)) + return 1; + + return 0; +} + +/**************************************************************/ +/************ Vectors of polynomials of length K **************/ +/**************************************************************/ + +/* + * @brief polyveck_reduce - Reduce coefficients of polynomials in vector of + * length DILITHIUM_K to representatives in + * [-6283009,6283007]. + * + * @param [in,out] v pointer to input/output vector + */ +static inline void polyveck_reduce(polyveck *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + poly_reduce(&v->vec[i]); +} + +/* + * @brief polyveck_caddq - For all coefficients of polynomials in vector of + * length DILITHIUM_K add DILITHIUM_Q if + * coefficient is negative. + * + * @param [in,out] v pointer to input/output vector + */ +static inline void polyveck_caddq(polyveck *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + poly_caddq(&v->vec[i]); +} + +/* + * @brief polyveck_add - Add vectors of polynomials of length DILITHIUM_K. + * No modular reduction is performed. + * + * @param [out] w pointer to output vector + * @param [in] u pointer to first summand + * @param [in] v pointer to second summand + */ +static inline void polyveck_add(polyveck *w, const polyveck *u, + const polyveck *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + poly_add(&w->vec[i], &u->vec[i], &v->vec[i]); +} + +/* + * @brief olyveck_sub - Subtract vectors of polynomials of length + * DILITHIUM_K. No modular reduction is performed. + * + * @param [out] w pointer to output vector + * @param [in] u pointer to first input vector + * @param [in] v pointer to second input vector to be subtracted from first + * input vector + */ +static inline void polyveck_sub(polyveck *w, const polyveck *u, + const polyveck *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + poly_sub(&w->vec[i], &u->vec[i], &v->vec[i]); +} + +/* + * @brief polyveck_shiftl - Multiply vector of polynomials of Length K by + * 2^D without modular reduction. Assumes input + * coefficients to be less than 2^{31-D}. + * + * @param [in,out] v pointer to input/output vector + */ +static inline void polyveck_shiftl(polyveck *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + poly_shiftl(&v->vec[i]); +} + +/* + * @brief polyveck_ntt - Forward NTT of all polynomials in vector of lengt= h K. + * Output coefficients can be up to 16*Q larger than input + * coefficients. + * + * @param [in,out] v pointer to input/output vector + */ +static inline void polyveck_ntt(polyveck *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + poly_ntt(&v->vec[i]); +} + +/* + * @brief polyveck_invntt_tomont - Inverse NTT and multiplication by 2^{32= } of + * polynomials in vector of length K. Input + * coefficients need to be less than 2*Q. + * + * @param [in,out] v pointer to input/output vector + */ +static inline void polyveck_invntt_tomont(polyveck *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + poly_invntt_tomont(&v->vec[i]); +} + +static inline void polyveck_pointwise_poly_montgomery(polyveck *r, + const poly *a, + const polyveck *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + poly_pointwise_montgomery(&r->vec[i], a, &v->vec[i]); +} + +/* + * @brief polyveck_chknorm - Check infinity norm of polynomials in vector = of + * length K. Assumes input polyveck to be reduced by + * polyveck_reduce(). + * + * @param [in] v pointer to vector + * @param [in] bound norm bound + * + * @return 0 if norm of all polynomials are strictly smaller than B <=3D (= Q-1)/8 + * and 1 otherwise. + */ +static inline int polyveck_chknorm(const polyveck *v, int32_t bound) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + if (poly_chknorm(&v->vec[i], bound)) + return 1; + + return 0; +} + +/* + * @brief polyveck_decompose - For all coefficients a of polynomials in ve= ctor + * of length K, compute high and low bits a0, a1 + * such a mod^+ Q =3D a1*ALPHA + a0 with + * -ALPHA/2 < a0 <=3D ALPHA/2 except a1 =3D (Q-1)/ALPHA + * where we set a1 =3D 0 and + * -ALPHA/2 <=3D a0 =3D a mod Q - Q < 0. Assumes + * coefficients to be standard representatives. + * + * @param [out] v1 pointer to output vector of polynomials with coefficien= ts a1 + * @param [in] v0 pointer to output vector of polynomials with coefficient= s a0 + * @param [in] v pointer to input vector + */ +static inline void polyveck_decompose(polyveck *v1, polyveck *v0, + const polyveck *v) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + poly_decompose(&v1->vec[i], &v0->vec[i], &v->vec[i]); +} + +/* + * @brief polyveck_make_hint - Compute hint vector. + * + * @param [out] h pointer to output vector + * @param [in] v0 pointer to low part of input vector + * @param [in] v1 pointer to high part of input vector + * + * @return number of 1 bits. + */ +static inline unsigned int polyveck_make_hint(polyveck *h, const polyveck = *v0, + const polyveck *v1) +{ + unsigned int i, s =3D 0; + + for (i =3D 0; i < DILITHIUM_K; ++i) + s +=3D poly_make_hint(&h->vec[i], &v0->vec[i], &v1->vec[i]); + + return s; +} + +/* + * @brief polyveck_use_hint - Use hint vector to correct the high bits of = input + * vector. + * + * @param [out] w pointer to output vector of polynomials with corrected h= igh + * bits + * @param [in] u pointer to input vector + * @param [in] h pointer to input hint vector + */ +static inline void polyveck_use_hint(polyveck *w, const polyveck *u, + const polyveck *h) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + poly_use_hint(&w->vec[i], &u->vec[i], &h->vec[i]); +} + +static inline void +polyveck_pack_w1(uint8_t r[DILITHIUM_K * DILITHIUM_POLYW1_PACKEDBYTES], + const polyveck *w1) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + polyw1_pack(&r[i * DILITHIUM_POLYW1_PACKEDBYTES], + &w1->vec[i]); +} + +#endif /* DILITHIUM_POLYVEC_H */ diff --git a/crypto/ml_dsa/dilithium_polyvec_c.h b/crypto/ml_dsa/dilithium_= polyvec_c.h new file mode 100644 index 000000000000..29e6dc3880dc --- /dev/null +++ b/crypto/ml_dsa/dilithium_polyvec_c.h @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2023 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +#ifndef DILITHIUM_POLYVEC_C_H +#define DILITHIUM_POLYVEC_C_H + +/* + * @brief expand_mat - Implementation of ExpandA. Generates matrix A with + * uniformly random coefficients a_{i,j} by performing + * rejection sampling on the output stream of + * SHAKE128(rho|j|i). + * + * @param [out] mat output matrix + * @param [in] rho byte array containing seed rho + */ +static inline void +polyvec_matrix_expand(polyvecl mat[DILITHIUM_K], + const uint8_t rho[DILITHIUM_SEEDBYTES], void *ws_buf) +{ + unsigned int i, j; + + for (i =3D 0; i < DILITHIUM_K; ++i) + for (j =3D 0; j < DILITHIUM_L; ++j) + poly_uniform( + &mat[i].vec[j], rho, + cpu_to_le16((uint16_t)(i << 8) + (uint16_t)j), + ws_buf); +} + +/* + * @brief polyvecl_pointwise_acc_montgomery - + * Pointwise multiply vectors of polynomials of length L, multiply + * resulting vector by 2^{-32} and add (accumulate) polynomials + * in it. Input/output vectors are in NTT domain representation. + * + * @param [out] w output polynomial + * @param [in] u pointer to first input vector + * @param [in] v pointer to second input vector + */ +static inline void polyvecl_pointwise_acc_montgomery(poly *w, const polyve= cl *u, + const polyvecl *v, + void *ws_buf) +{ + unsigned int i; + poly *t =3D ws_buf; + + poly_pointwise_montgomery(w, &u->vec[0], &v->vec[0]); + for (i =3D 1; i < DILITHIUM_L; ++i) { + poly_pointwise_montgomery(t, &u->vec[i], &v->vec[i]); + poly_add(w, w, t); + } +} + +static inline void +polyvec_matrix_pointwise_montgomery(polyveck *t, + const polyvecl mat[DILITHIUM_K], + const polyvecl *v, void *ws_buf) +{ + unsigned int i; + + for (i =3D 0; i < DILITHIUM_K; ++i) + polyvecl_pointwise_acc_montgomery(&t->vec[i], &mat[i], v, + ws_buf); +} + +#endif /* DILITHIUM_POLYVEC_C_H */ diff --git a/crypto/ml_dsa/dilithium_reduce.h b/crypto/ml_dsa/dilithium_red= uce.h new file mode 100644 index 000000000000..96f637c5d6cb --- /dev/null +++ b/crypto/ml_dsa/dilithium_reduce.h @@ -0,0 +1,85 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_REDUCE_H +#define DILITHIUM_REDUCE_H + +#include "dilithium_type.h" + +#define MONT -4186625 // 2^32 % Q +#define QINV 58728449 // q^(-1) mod 2^32 + +/* + * @brief montgomery_reduce - For finite field element a with + * -2^{31}Q <=3D a <=3D Q*2^31, + * compute r \equiv a*2^{-32} (mod Q) such that + * -Q < r < Q. + * + * @param [in] a finite field element + * + * @return r + */ +static inline int32_t montgomery_reduce(int64_t a) +{ + int32_t t; + + t =3D (int32_t)a * QINV; + t =3D (int32_t)((a - (int64_t)t * DILITHIUM_Q) >> 32); + return t; +} + +/* + * @brief reduce32 - For finite field element a with a <=3D 2^{31} - 2^{22= } - 1, + * compute r \equiv a (mod Q) such that + * -6283009 <=3D r <=3D 6283007. + * + * @param [in] a finite field element + * + * @return r + */ +static inline int32_t reduce32(int32_t a) +{ + int32_t t; + + t =3D (a + (1 << 22)) >> 23; + t =3D a - t * DILITHIUM_Q; + return t; +} + +/* + * @brief caddq - Add Q if input coefficient is negative. + * + * @param [in] a finite field element + * + * @return r + */ +static inline int32_t caddq(int32_t a) +{ + a +=3D (a >> 31) & DILITHIUM_Q; + return a; +} + +#endif /* DILITHIUM_REDUCE_H */ diff --git a/crypto/ml_dsa/dilithium_rounding.c b/crypto/ml_dsa/dilithium_r= ounding.c new file mode 100644 index 000000000000..bead365e4ea8 --- /dev/null +++ b/crypto/ml_dsa/dilithium_rounding.c @@ -0,0 +1,128 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#include "dilithium.h" + +/* + * @brief power2round - For finite field element a, compute a0, a1 such th= at + * a mod^+ Q =3D a1*2^D + a0 with -2^{D-1} < a0 <=3D 2^{D-1}. + * Assumes a to be standard representative. + * + * @param [in] a input element + * @param [out] a0 pointer to output element a0 + * + * @return a1. + */ +int32_t power2round(int32_t *a0, int32_t a) +{ + int32_t a1; + + a1 =3D (a + (1 << (DILITHIUM_D - 1)) - 1) >> DILITHIUM_D; + *a0 =3D a - (a1 << DILITHIUM_D); + return a1; +} + +/* + * @brief decompose - For finite field element a, compute high and low bit= s a0, + * a1 such that a mod^+ Q =3D a1*ALPHA + a0 with + * -ALPHA/2 < a0 <=3D ALPHA/2 except if a1 =3D (Q-1)/ALPHA where + * we set a1 =3D 0 and -ALPHA/2 <=3D a0 =3D a mod^+ Q - Q < 0. + * Assumes a to be standard representative. + * + * @param [in] a input element + * @param [out] a0 pointer to output element a0 + * + * @return a1. + */ +int32_t decompose(int32_t *a0, int32_t a) +{ + int32_t a1; + + a1 =3D (a + 127) >> 7; +#if DILITHIUM_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 32 + a1 =3D (a1 * 1025 + (1 << 21)) >> 22; + a1 &=3D 15; +#elif DILITHIUM_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 88 + a1 =3D (a1 * 11275 + (1 << 23)) >> 24; + a1 ^=3D ((43 - a1) >> 31) & a1; +#else +#error "Uknown GAMMA2" +#endif + + *a0 =3D a - a1 * 2 * DILITHIUM_GAMMA2; + *a0 -=3D (((DILITHIUM_Q - 1) / 2 - *a0) >> 31) & DILITHIUM_Q; + + return a1; +} + +/* + * @brief make_hint - Compute hint bit indicating whether the low bits of = the + * input element overflow into the high bits. + * + * @param a0 [in] low bits of input element + * @param a1 [in] high bits of input element + * + * @return 1 if overflow. + */ +int32_t make_hint(int32_t a0, int32_t a1) +{ + if (a0 > DILITHIUM_GAMMA2 || a0 < -DILITHIUM_GAMMA2 || + (a0 =3D=3D -DILITHIUM_GAMMA2 && a1 !=3D 0)) + return 1; + + return 0; +} + +/* + * @brief use_hint - Correct high bits according to hint. + * + * @param [in] a input element + * @param [in] hint hint bit + * + * @return corrected high bits. + */ +int32_t use_hint(int32_t a, int32_t hint) +{ + int32_t a0, a1; + + a1 =3D decompose(&a0, a); + if (hint =3D=3D 0) + return a1; + +#if DILITHIUM_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 32 + if (a0 > 0) + return (a1 + 1) & 15; + else + return (a1 - 1) & 15; +#elif DILITHIUM_GAMMA2 =3D=3D (DILITHIUM_Q - 1) / 88 + if (a0 > 0) + return (a1 =3D=3D 43) ? 0 : a1 + 1; + else + return (a1 =3D=3D 0) ? 43 : a1 - 1; +#else +#error "Uknown GAMMA2" +#endif +} diff --git a/crypto/ml_dsa/dilithium_service_helpers.h b/crypto/ml_dsa/dili= thium_service_helpers.h new file mode 100644 index 000000000000..1bc33498c59d --- /dev/null +++ b/crypto/ml_dsa/dilithium_service_helpers.h @@ -0,0 +1,99 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +#ifndef DILITHIUM_SERVICE_HELPERS_H +#define DILITHIUM_SERVICE_HELPERS_H + +/* + * @brief rej_uniform - Sample uniformly random coefficients in [0, Q-1] by + * performing rejection sampling on array of random bytes. + * + * @param [out] a pointer to output array (allocated) + * @param [in] len number of coefficients to be sampled + * @param [in] buf array of random bytes + * @param [in] buflen length of array of random bytes + * + * @return number of sampled coefficients. Can be smaller than len if not = enough + * random bytes were given. + */ +static inline unsigned int rej_uniform(int32_t *a, unsigned int len, + const uint8_t *buf, unsigned int buflen) +{ + unsigned int ctr, pos; + uint32_t t; + + ctr =3D pos =3D 0; + while (ctr < len && pos + 3 <=3D buflen) { + t =3D buf[pos++]; + t |=3D (uint32_t)buf[pos++] << 8; + t |=3D (uint32_t)buf[pos++] << 16; + t &=3D 0x7FFFFF; + + if (t < DILITHIUM_Q) + a[ctr++] =3D (int32_t)t; + } + + return ctr; +} + +/* + * @brief rej_eta - Sample uniformly random coefficients in [-ETA, ETA] by + * performing rejection sampling on array of random bytes. + * + * @param [out] a pointer to output array (allocated) + * @param [in] len number of coefficients to be sampled + * @param [in] buf array of random bytes + * @param [in] buflen length of array of random bytes + * + * @return number of sampled coefficients. Can be smaller than len if not = enough + * random bytes were given. + */ +static inline unsigned int rej_eta(int32_t *a, unsigned int len, + const uint8_t *buf, unsigned int buflen) +{ + unsigned int ctr, pos; + int32_t t0, t1; + + ctr =3D pos =3D 0; + while (ctr < len && pos < buflen) { + t0 =3D buf[pos] & 0x0F; + t1 =3D buf[pos++] >> 4; + +#if DILITHIUM_ETA =3D=3D 2 + if (t0 < 15) { + t0 =3D t0 - (205 * t0 >> 10) * 5; + a[ctr++] =3D 2 - t0; + } + if (t1 < 15 && ctr < len) { + t1 =3D t1 - (205 * t1 >> 10) * 5; + a[ctr++] =3D 2 - t1; + } +#elif DILITHIUM_ETA =3D=3D 4 + if (t0 < 9) + a[ctr++] =3D 4 - t0; + if (t1 < 9 && ctr < len) + a[ctr++] =3D 4 - t1; +#else +#error "Undefined DILITHIUM_ETA" +#endif + } + + return ctr; +} + +#endif /* DILITHIUM_SERVICE_HELPERS_H */ diff --git a/crypto/ml_dsa/dilithium_sig.c b/crypto/ml_dsa/dilithium_sig.c new file mode 100644 index 000000000000..fe3708e1041b --- /dev/null +++ b/crypto/ml_dsa/dilithium_sig.c @@ -0,0 +1,334 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause +/* + * Copyright (C) 2024 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +#include +#include +#include +#include "dilithium.h" + +enum dilithium_kernel_key_type { + dilithium_kernel_key_unset =3D 0, + /* dilithium_kernel_key_sk =3D 1, */ + dilithium_kernel_key_pk =3D 2, +}; + +struct dilithium_kernel_ctx { + union { + struct dilithium_pk pk; + }; + enum dilithium_kernel_key_type key_type; +}; + +/* src -> message */ +/* dst -> signature */ +static int dilithium_kernel_sign(struct crypto_sig *tfm, const void *src, + unsigned int slen, void *dst, + unsigned int dlen) +{ + return -EOPNOTSUPP; +} + +/* src -> signature */ +/* msg -> message */ +static int dilithium_kernel_verify(struct crypto_sig *tfm, const void *src, + unsigned int slen, const void *msg, + unsigned int msg_len) +{ + struct dilithium_kernel_ctx *ctx =3D crypto_sig_ctx(tfm); + struct dilithium_sig *sig; + size_t sig_len; + enum dilithium_type type; + int ret; + + if (unlikely(ctx->key_type !=3D dilithium_kernel_key_pk)) + return -EINVAL; + + type =3D dilithium_pk_type(&ctx->pk); + sig_len =3D dilithium_sig_size(type); + if (slen < sig_len) + return -EINVAL; + + sig =3D kmalloc(sizeof(struct dilithium_sig), GFP_KERNEL); + if (!sig) + return -ENOMEM; + + ret =3D dilithium_sig_load(sig, src, sig_len); + if (ret) + goto out; + + ret =3D dilithium_verify(sig, msg, msg_len, &ctx->pk); + +out: + kfree_sensitive(sig); + return ret; +} + +#ifdef CONFIG_CRYPTO_DILITHIUM_87 +static unsigned int dilithium_kernel_87_key_size(struct crypto_sig *tfm) +{ + struct dilithium_kernel_ctx *ctx =3D crypto_sig_ctx(tfm); + + switch (ctx->key_type) { + case dilithium_kernel_key_unset: + case dilithium_kernel_key_pk: + default: + return sizeof(struct dilithium_87_pk); + } +} +#endif + +#ifdef CONFIG_CRYPTO_DILITHIUM_65 +static unsigned int dilithium_kernel_65_key_size(struct crypto_sig *tfm) +{ + struct dilithium_kernel_ctx *ctx =3D crypto_sig_ctx(tfm); + + switch (ctx->key_type) { + case dilithium_kernel_key_unset: + case dilithium_kernel_key_pk: + default: + return sizeof(struct dilithium_65_pk); + } +} +#endif + +#ifdef CONFIG_CRYPTO_DILITHIUM_44 +static unsigned int dilithium_kernel_44_key_size(struct crypto_sig *tfm) +{ + struct dilithium_kernel_ctx *ctx =3D crypto_sig_ctx(tfm); + + switch (ctx->key_type) { + case dilithium_kernel_key_unset: + case dilithium_kernel_key_pk: + default: + return sizeof(struct dilithium_44_pk); + } +} +#endif + +static int dilithium_kernel_set_pub_key_int(struct crypto_sig *tfm, + const void *key, + unsigned int keylen, + enum dilithium_type type) +{ + struct dilithium_kernel_ctx *ctx =3D crypto_sig_ctx(tfm); + int ret; + + ctx->key_type =3D dilithium_kernel_key_unset; + + ret =3D dilithium_pk_load(&ctx->pk, key, keylen); + if (!ret) { + if (dilithium_pk_type(&ctx->pk) !=3D type) + ret =3D -EOPNOTSUPP; + else + ctx->key_type =3D dilithium_kernel_key_pk; + } + + return ret; +} + +#ifdef CONFIG_CRYPTO_DILITHIUM_44 +static int dilithium_kernel_44_set_pub_key(struct crypto_sig *tfm, + const void *key, + unsigned int keylen) +{ + return dilithium_kernel_set_pub_key_int(tfm, key, keylen, DILITHIUM_44); +} +#endif + +#ifdef CONFIG_CRYPTO_DILITHIUM_65 +static int dilithium_kernel_65_set_pub_key(struct crypto_sig *tfm, + const void *key, + unsigned int keylen) +{ + return dilithium_kernel_set_pub_key_int(tfm, key, keylen, DILITHIUM_65); +} +#endif + +#ifdef CONFIG_CRYPTO_DILITHIUM_87 +static int dilithium_kernel_87_set_pub_key(struct crypto_sig *tfm, + const void *key, + unsigned int keylen) +{ + return dilithium_kernel_set_pub_key_int(tfm, key, keylen, DILITHIUM_87); +} +#endif + +#ifdef CONFIG_CRYPTO_DILITHIUM_44 +static int dilithium_kernel_44_set_priv_key(struct crypto_sig *tfm, + const void *key, + unsigned int keylen) +{ + return -EOPNOTSUPP; +} +#endif + +#ifdef CONFIG_CRYPTO_DILITHIUM_65 +static int dilithium_kernel_65_set_priv_key(struct crypto_sig *tfm, + const void *key, + unsigned int keylen) +{ + return -EOPNOTSUPP; +} +#endif + +#ifdef CONFIG_CRYPTO_DILITHIUM_87 +static int dilithium_kernel_87_set_priv_key(struct crypto_sig *tfm, + const void *key, + unsigned int keylen) +{ + return -EOPNOTSUPP; +} +#endif + +static unsigned int dilithium_kernel_max_size(struct crypto_sig *tfm) +{ + struct dilithium_kernel_ctx *ctx =3D crypto_sig_ctx(tfm); + enum dilithium_type type; + + switch (ctx->key_type) { + case dilithium_kernel_key_pk: + type =3D dilithium_pk_type(&ctx->pk); + /* When PK is set, this is a safety valve, result is boolean */ + return dilithium_sig_size(type); + default: + return 0; + } +} + +static int dilithium_kernel_alg_init(struct crypto_sig *tfm) +{ + return 0; +} + +static void dilithium_kernel_alg_exit(struct crypto_sig *tfm) +{ + struct dilithium_kernel_ctx *ctx =3D crypto_sig_ctx(tfm); + + ctx->key_type =3D dilithium_kernel_key_unset; +} + +#ifdef CONFIG_CRYPTO_DILITHIUM_87 +static struct sig_alg dilithium_kernel_87 =3D { + .sign =3D dilithium_kernel_sign, + .verify =3D dilithium_kernel_verify, + .set_pub_key =3D dilithium_kernel_87_set_pub_key, + .set_priv_key =3D dilithium_kernel_87_set_priv_key, + .key_size =3D dilithium_kernel_87_key_size, + .max_size =3D dilithium_kernel_max_size, + .init =3D dilithium_kernel_alg_init, + .exit =3D dilithium_kernel_alg_exit, + .base.cra_name =3D "ml-dsa87", + .base.cra_driver_name =3D "ml-dsa87-leancrypto", + .base.cra_ctxsize =3D sizeof(struct dilithium_kernel_ctx), + .base.cra_module =3D THIS_MODULE, + .base.cra_priority =3D 5000, +}; +#endif + +#ifdef CONFIG_CRYPTO_DILITHIUM_65 +static struct sig_alg dilithium_kernel_65 =3D { + .sign =3D dilithium_kernel_sign, + .verify =3D dilithium_kernel_verify, + .set_pub_key =3D dilithium_kernel_65_set_pub_key, + .set_priv_key =3D dilithium_kernel_65_set_priv_key, + .key_size =3D dilithium_kernel_65_key_size, + .max_size =3D dilithium_kernel_max_size, + .init =3D dilithium_kernel_alg_init, + .exit =3D dilithium_kernel_alg_exit, + .base.cra_name =3D "ml-dsa65", + .base.cra_driver_name =3D "ml-dsa65-leancrypto", + .base.cra_ctxsize =3D sizeof(struct dilithium_kernel_ctx), + .base.cra_module =3D THIS_MODULE, + .base.cra_priority =3D 5000, +}; +#endif + +#ifdef CONFIG_CRYPTO_DILITHIUM_44 +static struct sig_alg dilithium_kernel_44 =3D { + .sign =3D dilithium_kernel_sign, + .verify =3D dilithium_kernel_verify, + .set_pub_key =3D dilithium_kernel_44_set_pub_key, + .set_priv_key =3D dilithium_kernel_44_set_priv_key, + .key_size =3D dilithium_kernel_44_key_size, + .max_size =3D dilithium_kernel_max_size, + .init =3D dilithium_kernel_alg_init, + .exit =3D dilithium_kernel_alg_exit, + .base.cra_name =3D "ml-dsa44", + .base.cra_driver_name =3D "ml-dsa44-leancrypto", + .base.cra_ctxsize =3D sizeof(struct dilithium_kernel_ctx), + .base.cra_module =3D THIS_MODULE, + .base.cra_priority =3D 5000, +}; +#endif + +static int __init dilithium_init(void) +{ + int ret; + +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + ret =3D crypto_register_sig(&dilithium_kernel_44); + if (ret < 0) + goto error_44; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + ret =3D crypto_register_sig(&dilithium_kernel_65); + if (ret < 0) + goto error_65; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + ret =3D crypto_register_sig(&dilithium_kernel_87); + if (ret < 0) + goto error_87; +#endif + return 0; +#ifdef CONFIG_CRYPTO_DILITHIUM_87 +error_87: +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + crypto_unregister_sig(&dilithium_kernel_65); +error_65: +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + crypto_unregister_sig(&dilithium_kernel_44); +error_44: +#endif + pr_err("Failed to register (%d)\n", ret); + return ret; +} +module_init(dilithium_init); + +static void dilithium_exit(void) +{ +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + crypto_unregister_sig(&dilithium_kernel_87); +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + crypto_unregister_sig(&dilithium_kernel_65); +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + crypto_unregister_sig(&dilithium_kernel_44); +#endif +} +module_exit(dilithium_exit); + +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("Leancrypto ML-DSA/Dilithium"); +MODULE_AUTHOR("Stephan Mueller "); +MODULE_ALIAS_CRYPTO("ml-dsa44"); +MODULE_ALIAS_CRYPTO("ml-dsa65"); +MODULE_ALIAS_CRYPTO("ml-dsa87"); diff --git a/crypto/ml_dsa/dilithium_signature_c.c b/crypto/ml_dsa/dilithiu= m_signature_c.c new file mode 100644 index 000000000000..b18c0469dd14 --- /dev/null +++ b/crypto/ml_dsa/dilithium_signature_c.c @@ -0,0 +1,102 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#include "dilithium_signature_c.h" + +/* We need once the buffer size to handle the hashing */ +#define LC_POLY_UNIFOR_BUF_SIZE_MULTIPLIER 1 + +#include "dilithium_poly.h" +#include "dilithium_poly_common.h" +#include "dilithium_poly_c.h" +#include "dilithium_polyvec.h" +#include "dilithium_polyvec_c.h" +#include "dilithium_pack.h" +#include "dilithium_signature_impl.h" + +int dilithium_verify_c(const struct dilithium_sig *sig, const uint8_t *m, + size_t mlen, const struct dilithium_pk *pk) +{ + return dilithium_verify_impl(sig, m, mlen, pk); +} + +int dilithium_verify_ctx_c(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen, const struct dilithium_pk *pk) +{ + return dilithium_verify_ctx_impl(sig, ctx, m, mlen, pk); +} + +int dilithium_verify_init_c(struct dilithium_ctx *ctx, + const struct dilithium_pk *pk) +{ + return dilithium_verify_init_impl(ctx, pk); +} + +int dilithium_verify_update_c(struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen) +{ + return dilithium_verify_update_impl(ctx, m, mlen); +} + +int dilithium_verify_final_c(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, + const struct dilithium_pk *pk) +{ + return dilithium_verify_final_impl(sig, ctx, pk); +} + +int dilithium_verify(const struct dilithium_sig *sig, const uint8_t *m, + size_t mlen, const struct dilithium_pk *pk) +{ + return dilithium_verify_c(sig, m, mlen, pk); +} + +int dilithium_verify_ctx(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen, const struct dilithium_pk *pk) +{ + return dilithium_verify_ctx_c(sig, ctx, m, mlen, pk); +} + +int dilithium_verify_init(struct dilithium_ctx *ctx, + const struct dilithium_pk *pk) +{ + return dilithium_verify_init_c(ctx, pk); +} + +int dilithium_verify_update(struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen) +{ + return dilithium_verify_update_c(ctx, m, mlen); +} + +int dilithium_verify_final(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, + const struct dilithium_pk *pk) +{ + return dilithium_verify_final_c(sig, ctx, pk); +} diff --git a/crypto/ml_dsa/dilithium_signature_c.h b/crypto/ml_dsa/dilithiu= m_signature_c.h new file mode 100644 index 000000000000..d1e694e4c8d3 --- /dev/null +++ b/crypto/ml_dsa/dilithium_signature_c.h @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +#ifndef DILITHIUM_SIGNATURE_C_H +#define DILITHIUM_SIGNATURE_C_H + +#include "dilithium_type.h" + +int dilithium_verify_c(const struct dilithium_sig *sig, const uint8_t *m, + size_t mlen, const struct dilithium_pk *pk); +int dilithium_verify_ctx_c(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen, const struct dilithium_pk *pk); +int dilithium_verify_init_c(struct dilithium_ctx *ctx, + const struct dilithium_pk *pk); +int dilithium_verify_update_c(struct dilithium_ctx *ctx, const uint8_t *m, + size_t mlen); +int dilithium_verify_final_c(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, + const struct dilithium_pk *pk); + +#endif /* DILITHIUM_SIGNATURE_C_H */ diff --git a/crypto/ml_dsa/dilithium_signature_helper.c b/crypto/ml_dsa/dil= ithium_signature_helper.c new file mode 100644 index 000000000000..147fe94fd0d2 --- /dev/null +++ b/crypto/ml_dsa/dilithium_signature_helper.c @@ -0,0 +1,97 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* + * Copyright (C) 2024 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +#include "dilithium_type.h" + +#define cround(x) round_up((x), umax(DILITHIUM_AHAT_ALIGNMENT, CRYPTO_MINA= LIGN)) + +struct dilithium_ctx *dilithium_ctx_alloc(void) +{ + struct dilithium_ctx *ctx; + struct crypto_shash *shash; + + shash =3D crypto_alloc_shash("shake256", 0, 0); + if (IS_ERR(shash)) { + pr_warn("no shake256: %ld\n", PTR_ERR(shash)); + return ERR_CAST(shash); + } + + ctx =3D kzalloc(cround(sizeof(struct dilithium_ctx)) + + cround(crypto_shash_descsize(shash)), + GFP_KERNEL); + if (!ctx) { + crypto_free_shash(shash); + return ERR_PTR(-ENOMEM); + } + + return ctx; +} + +struct dilithium_ctx *dilithium_ctx_alloc_ahat(enum dilithium_type type) +{ + struct dilithium_ctx *ctx; + struct crypto_shash *shash; + size_t ahat_size; + void *p; + + shash =3D crypto_alloc_shash("shake256", 0, 0); + if (IS_ERR(shash)) + return ERR_CAST(shash); + + switch (type) { +#ifdef CONFIG_CRYPTO_DILITHIUM_44 + case DILITHIUM_44: + ahat_size =3D DILITHIUM_44_AHAT_SIZE; + break; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_65 + case DILITHIUM_65: + ahat_size =3D DILITHIUM_65_AHAT_SIZE; + break; +#endif +#ifdef CONFIG_CRYPTO_DILITHIUM_87 + case DILITHIUM_87: + ahat_size =3D DILITHIUM_87_AHAT_SIZE; + break; +#endif + default: + WARN_ON(1); + return ERR_PTR(-EINVAL); + } + + p =3D kzalloc(cround(sizeof(struct dilithium_ctx)) + + cround(ahat_size) + + cround(crypto_shash_descsize(shash)), + GFP_KERNEL); + if (!p) { + crypto_free_shash(shash); + return ERR_PTR(-ENOMEM); + } + + ctx =3D p; + p +=3D cround(sizeof(struct dilithium_ctx)); + ctx->ahat =3D p; + ctx->ahat_size =3D ahat_size; + p +=3D cround(ahat_size); + return ctx; +} + +void dilithium_ctx_zero_free(struct dilithium_ctx *ctx) +{ + kfree_sensitive(ctx); +} diff --git a/crypto/ml_dsa/dilithium_signature_impl.h b/crypto/ml_dsa/dilit= hium_signature_impl.h new file mode 100644 index 000000000000..36c8541effd2 --- /dev/null +++ b/crypto/ml_dsa/dilithium_signature_impl.h @@ -0,0 +1,370 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#ifndef DILITHIUM_SIGNATURE_IMPL_H +#define DILITHIUM_SIGNATURE_IMPL_H + +#include "dilithium.h" +#include "dilithium_type.h" +#include "dilithium_debug.h" +#include "dilithium_pack.h" +#include "signature_domain_separation.h" + +#define _WS_POLY_UNIFORM_BUF_SIZE = \ + (POLY_UNIFORM_NBLOCKS * SHAKE128_BLOCK_SIZE + 2) + +#ifndef LC_POLY_UNIFOR_BUF_SIZE_MULTIPLIER +#error "LC_POLY_UNIFOR_BUF_SIZE_MULTIPLIER is not defined" +#endif + +#define WS_POLY_UNIFORM_BUF_SIZE = \ + (_WS_POLY_UNIFORM_BUF_SIZE * LC_POLY_UNIFOR_BUF_SIZE_MULTIPLIER) + +static int dilithium_verify_internal_ahat(const struct dilithium_sig *sig, + const struct dilithium_pk *pk, + struct dilithium_ctx *ctx) +{ + struct workspace_verify { + union { + poly cp; + } matrix; + polyveck w1; + union { + polyveck t1, h; + polyvecl z; + uint8_t mu[DILITHIUM_CRHBYTES]; + union { + uint8_t coeffs[round_up(DILITHIUM_CTILDE_BYTES, 8)]; + } __aligned(8) c2; + } buf; + + union { + poly polyvecl_pointwise_acc_montgomery_buf; + uint8_t buf[DILITHIUM_K * + DILITHIUM_POLYW1_PACKEDBYTES]; + uint8_t poly_challenge_buf[POLY_CHALLENGE_BYTES]; + } tmp; + }; + struct workspace_verify *ws __free(kfree_sensitive) =3D NULL; + /* The first bytes of the signature is c~ and thus contains c1. */ + const uint8_t *c1 =3D sig->sig; + const polyvecl *mat =3D ctx->ahat; + int ret =3D 0; + + ws =3D kzalloc(sizeof(*ws), GFP_KERNEL); + if (!ws) + return -ENOMEM; + + /* AHat must be present at this time */ + if (!mat) { + ret =3D -EINVAL; + goto out; + } + + unpack_sig_z(&ws->buf.z, sig); + if (polyvecl_chknorm(&ws->buf.z, + DILITHIUM_GAMMA1 - DILITHIUM_BETA)) { + ret =3D -EINVAL; + goto out; + } + + polyvecl_ntt(&ws->buf.z); + polyvec_matrix_pointwise_montgomery( + &ws->w1, mat, &ws->buf.z, + &ws->tmp.polyvecl_pointwise_acc_montgomery_buf); + + /* Matrix-vector multiplication; compute Az - c2^dt1 */ + poly_challenge(&ws->matrix.cp, c1, ws->tmp.poly_challenge_buf); + poly_ntt(&ws->matrix.cp); + + unpack_pk_t1(&ws->buf.t1, pk); + polyveck_shiftl(&ws->buf.t1); + polyveck_ntt(&ws->buf.t1); + polyveck_pointwise_poly_montgomery(&ws->buf.t1, &ws->matrix.cp, + &ws->buf.t1); + + polyveck_sub(&ws->w1, &ws->w1, &ws->buf.t1); + polyveck_reduce(&ws->w1); + polyveck_invntt_tomont(&ws->w1); + + /* Reconstruct w1 */ + polyveck_caddq(&ws->w1); + dilithium_print_polyveck(&ws->w1, + "Sigver - W K x N matrix before hint:"); + + if (unpack_sig_h(&ws->buf.h, sig)) + return -EINVAL; + dilithium_print_polyveck(&ws->buf.h, "Siggen - H K x N matrix:"); + + polyveck_use_hint(&ws->w1, &ws->w1, &ws->buf.h); + dilithium_print_polyveck(&ws->w1, + "Sigver - W K x N matrix after hint:"); + polyveck_pack_w1(ws->tmp.buf, &ws->w1); + dilithium_print_buffer(ws->tmp.buf, + DILITHIUM_K * DILITHIUM_POLYW1_PACKEDBYTES, + "Sigver - W after w1Encode"); + + if (ctx->external_mu) { + if (ctx->external_mu_len !=3D DILITHIUM_CRHBYTES) + return -EINVAL; + + /* Call random oracle and verify challenge */ + dilithium_hash_init(ctx); + dilithium_hash_update(ctx, ctx->external_mu, DILITHIUM_CRHBYTES); + } else { + dilithium_hash_final(ctx, ws->buf.mu, DILITHIUM_CRHBYTES); + + /* Call random oracle and verify challenge */ + dilithium_hash_init(ctx); + dilithium_hash_update(ctx, ws->buf.mu, DILITHIUM_CRHBYTES); + } + + dilithium_hash_finup(ctx, + ws->tmp.buf, DILITHIUM_K * DILITHIUM_POLYW1_PACKEDBYTES, + ws->buf.c2.coeffs, DILITHIUM_CTILDE_BYTES); + + /* Signature verification operation */ + if (memcmp(c1, ws->buf.c2.coeffs, DILITHIUM_CTILDE_BYTES) !=3D 0) + ret =3D -EBADMSG; + +out: + return ret; +} + +static int +dilithium_verify_internal_noahat(const struct dilithium_sig *sig, + const struct dilithium_pk *pk, + struct dilithium_ctx *ctx) +{ + struct workspace_verify { + polyvecl mat[DILITHIUM_K]; + uint8_t poly_uniform_buf[WS_POLY_UNIFORM_BUF_SIZE]; + }; + struct workspace_verify *ws __free(kfree_sensitive) =3D NULL; + /* The first bytes of the key is rho. */ + const uint8_t *rho =3D pk->pk; + int ret =3D 0; + + ws =3D kzalloc(sizeof(*ws), GFP_KERNEL); + if (!ws) + return -ENOMEM; + + polyvec_matrix_expand(ws->mat, rho, ws->poly_uniform_buf); + + /* Temporarily set the pointer */ + ctx->ahat =3D ws->mat; + + ret =3D dilithium_verify_internal_ahat(sig, pk, ctx); + + ctx->ahat =3D NULL; + return ret; +} + +static int dilithium_pk_expand_impl(const struct dilithium_pk *pk, + struct dilithium_ctx *ctx) +{ + struct workspace_verify { + uint8_t poly_uniform_buf[WS_POLY_UNIFORM_BUF_SIZE]; + }; + struct workspace_verify *ws __free(kfree_sensitive) =3D NULL; + /* The first bytes of the key is rho. */ + const uint8_t *rho =3D pk->pk; + polyvecl *mat =3D ctx->ahat; + int ret =3D 0; + + ws =3D kzalloc(sizeof(*ws), GFP_KERNEL); + if (!ws) + return -ENOMEM; + + /* + * Runtime sanity check ensures that the allocated context has + * sufficient size (e.g. not that caller used, say, + * DILITHIUM_44_CTX_ON_STACK_AHAT with a ML-DSA 65 or 87 key) + */ +#if DILITHIUM_MODE =3D=3D 2 + if (ctx->ahat_size < DILITHIUM_44_AHAT_SIZE) { + ret =3D -EOVERFLOW; + goto out; + } +#elif DILITHIUM_MODE =3D=3D 3 + if (ctx->ahat_size < DILITHIUM_65_AHAT_SIZE) { + ret =3D -EOVERFLOW; + goto out; + } +#elif DILITHIUM_MODE =3D=3D 5 + if (ctx->ahat_size < DILITHIUM_87_AHAT_SIZE) { + ret =3D -EOVERFLOW; + goto out; + } +#else +#error "Undefined DILITHIUM_MODE" +#endif + + polyvec_matrix_expand(mat, rho, ws->poly_uniform_buf); + ctx->ahat_expanded =3D 1; + +out: + return ret; +} + +static int dilithium_verify_internal(const struct dilithium_sig *sig, + const struct dilithium_pk *pk, + struct dilithium_ctx *ctx) +{ + int ret; + + if (!ctx->ahat) + return dilithium_verify_internal_noahat(sig, pk, ctx); + + if (!ctx->ahat_expanded) { + ret =3D dilithium_pk_expand_impl(pk, ctx); + if (ret < 0) + goto out; + } + + ret =3D dilithium_verify_internal_ahat(sig, pk, ctx); + +out: + return ret; +} + +static int dilithium_verify_ctx_impl(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, + const uint8_t *m, size_t mlen, + const struct dilithium_pk *pk) +{ + uint8_t tr[DILITHIUM_TRBYTES]; + int ret =3D 0; + + if (!sig || !pk || !ctx) + return -EINVAL; + + /* Either the message or the external mu must be provided */ + if (!m && !ctx->external_mu) + return -EINVAL; + + /* Make sure that ->mu is large enough for ->tr */ + BUILD_BUG_ON(DILITHIUM_TRBYTES > DILITHIUM_CRHBYTES); + + /* Compute CRH(H(rho, t1), msg) */ + shake256(pk->pk, DILITHIUM_PUBLICKEYBYTES, tr, + DILITHIUM_TRBYTES); + + if (m) { + dilithium_hash_init(ctx); + dilithium_hash_update(ctx, tr, DILITHIUM_TRBYTES); + ret =3D signature_domain_separation( + &ctx->dilithium_hash_ctx, ctx->ml_dsa_internal, + ctx->userctx, ctx->userctxlen, + m, mlen, + DILITHIUM_NIST_CATEGORY); + if (ret < 0) + goto out; + } + + ret =3D dilithium_verify_internal(sig, pk, ctx); + +out: + memzero_explicit(tr, sizeof(tr)); + return ret; +} + +static int dilithium_verify_impl(const struct dilithium_sig *sig, + const uint8_t *m, size_t mlen, + const struct dilithium_pk *pk) +{ + struct dilithium_ctx *ctx; + int ret; + + ctx =3D dilithium_ctx_alloc(); + if (IS_ERR(ctx)) + return PTR_ERR(ctx); + + ret =3D dilithium_verify_ctx_impl(sig, ctx, m, mlen, pk); + + dilithium_ctx_zero_free(ctx); + return ret; +} + +static int dilithium_verify_init_impl(struct dilithium_ctx *ctx, + const struct dilithium_pk *pk) +{ + uint8_t mu[DILITHIUM_TRBYTES]; + + /* rng_ctx is allowed to be NULL as handled below */ + if (!ctx || !pk) + return -EINVAL; + + /* Require the use of SHAKE256 */ + if (!dilithium_hash_check_blocksize(ctx, SHAKE256_BLOCK_SIZE)) + return -EOPNOTSUPP; + + /* Compute CRH(H(rho, t1), msg) */ + shake256(pk->pk, DILITHIUM_PUBLICKEYBYTES, mu, + DILITHIUM_TRBYTES); + + dilithium_hash_init(ctx); + dilithium_hash_update(ctx, mu, DILITHIUM_TRBYTES); + memzero_explicit(mu, sizeof(mu)); + + return signature_domain_separation( + &ctx->dilithium_hash_ctx, ctx->ml_dsa_internal, + ctx->userctx, ctx->userctxlen, + NULL, 0, + DILITHIUM_NIST_CATEGORY); +} + +static int dilithium_verify_update_impl(struct dilithium_ctx *ctx, + const uint8_t *m, size_t mlen) +{ + if (!ctx || !m) + return -EINVAL; + + /* Compute CRH(H(rho, t1), msg) */ + dilithium_hash_update(ctx, m, mlen); + + return 0; +} + +static int dilithium_verify_final_impl(const struct dilithium_sig *sig, + struct dilithium_ctx *ctx, + const struct dilithium_pk *pk) +{ + int ret =3D 0; + + if (!sig || !ctx || !pk) { + ret =3D -EINVAL; + goto out; + } + + ret =3D dilithium_verify_internal(sig, pk, ctx); + +out: + dilithium_ctx_zero(ctx); + return ret; +} + +#endif /* DILITHIUM_SIGNATURE_IMPL_H */ diff --git a/crypto/ml_dsa/dilithium_type.h b/crypto/ml_dsa/dilithium_type.h new file mode 100644 index 000000000000..5238a9e6debf --- /dev/null +++ b/crypto/ml_dsa/dilithium_type.h @@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2024 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +#ifndef DILITHIUM_TYPE_H +#define DILITHIUM_TYPE_H + +#include "dilithium.h" + +/* + * This define replaces all symbol names accordingly to allow double compi= lation + * of the same code base. + * + * Due to the replacement operation, this header file must be included as = the + * first header file in the entire stack. + * + * This file can easily be replaced with dilithium.h to achieve the common + * functionality without symbol duplication. But in this case, only the + * Dilithium security strength is compiled defined in dilithium.h. Duplica= te + * compilation different sizes would not be possible. + */ +#ifdef DILITHIUM_TYPE_65 +#define DILITHIUM_F(name) dilithium_65_##name +#define dilithium_pk dilithium_65_pk +#define dilithium_sig dilithium_65_sig + +#include "dilithium_65.h" + +#elif defined DILITHIUM_TYPE_44 +#define DILITHIUM_F(name) dilithium_44_##name +#define dilithium_pk dilithium_44_pk +#define dilithium_sig dilithium_44_sig + +#include "dilithium_44.h" + +#else +#define DILITHIUM_F(name) dilithium_87_##name +#define dilithium_pk dilithium_87_pk +#define dilithium_sig dilithium_87_sig + +#include "dilithium_87.h" + +#endif + +/* + * The following defines simply allow duplicate compilation of the + * respective functions. + */ +#define dilithium_verify DILITHIUM_F(verify) +#define dilithium_verify_ctx DILITHIUM_F(verify_ctx) +#define dilithium_verify_init DILITHIUM_F(verify_init) +#define dilithium_verify_update DILITHIUM_F(verify_update) +#define dilithium_verify_final DILITHIUM_F(verify_final) + +#define dilithium_verify_c DILITHIUM_F(verify_c) +#define dilithium_verify_ctx_c DILITHIUM_F(verify_ctx_c) +#define dilithium_verify_init_c DILITHIUM_F(verify_init_c) +#define dilithium_verify_update_c DILITHIUM_F(verify_update_c) +#define dilithium_verify_final_c DILITHIUM_F(verify_final_c) + +#define ntt DILITHIUM_F(ntt) +#define invntt_tomont DILITHIUM_F(invntt_tomont) +#define poly_chknorm DILITHIUM_F(poly_chknorm) +#define poly_uniform DILITHIUM_F(poly_uniform) +#define poly_uniform_gamma1 DILITHIUM_F(poly_uniform_gamma1) +#define polyz_unpack DILITHIUM_F(polyz_unpack) +#define poly_challenge DILITHIUM_F(poly_challenge) +#define polyeta_unpack DILITHIUM_F(polyeta_unpack) +#define polyt0_unpack DILITHIUM_F(polyt0_unpack) +#define polyw1_pack DILITHIUM_F(polyw1_pack) +#define power2round DILITHIUM_F(power2round) +#define decompose DILITHIUM_F(decompose) +#define make_hint DILITHIUM_F(make_hint) +#define use_hint DILITHIUM_F(use_hint) + +#define dilithium_print_buffer DILITHIUM_F(print_buffer) +#define dilithium_print_polyvecl_k DILITHIUM_F(print_polyvecl_k) +#define dilithium_print_polyvecl DILITHIUM_F(print_polyvecl) +#define dilithium_print_polyveck DILITHIUM_F(print_polyveck) +#define dilithium_print_poly DILITHIUM_F(print_poly) + +/* Rounding */ +int32_t power2round(int32_t *a0, int32_t a); +int32_t decompose(int32_t *a0, int32_t a); +int32_t make_hint(int32_t a0, int32_t a1); +int32_t use_hint(int32_t a, int32_t hint); + +#endif /* DILITHIUM_TYPE_H */ diff --git a/crypto/ml_dsa/dilithium_zetas.c b/crypto/ml_dsa/dilithium_zeta= s.c new file mode 100644 index 000000000000..f0e9203f35dd --- /dev/null +++ b/crypto/ml_dsa/dilithium_zetas.c @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* + * Copyright (C) 2022 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ +/* + * This code is derived in parts from the code distribution provided with + * https://github.com/pq-crystals/dilithium + * + * That code is released under Public Domain + * (https://creativecommons.org/share-your-work/public-domain/cc0/); + * or Apache 2.0 License (https://www.apache.org/licenses/LICENSE-2.0.html= ). + */ + +#include "dilithium.h" + +const int32_t dilithium_zetas[DILITHIUM_N] =3D { + 0, 25847, -2608894, -518909, 237124, -777960, -876248, + 466468, 1826347, 2353451, -359251, -2091905, 3119733, -2884855, + 3111497, 2680103, 2725464, 1024112, -1079900, 3585928, -549488, + -1119584, 2619752, -2108549, -2118186, -3859737, -1399561, -3277672, + 1757237, -19422, 4010497, 280005, 2706023, 95776, 3077325, + 3530437, -1661693, -3592148, -2537516, 3915439, -3861115, -3043716, + 3574422, -2867647, 3539968, -300467, 2348700, -539299, -1699267, + -1643818, 3505694, -3821735, 3507263, -2140649, -1600420, 3699596, + 811944, 531354, 954230, 3881043, 3900724, -2556880, 2071892, + -2797779, -3930395, -1528703, -3677745, -3041255, -1452451, 3475950, + 2176455, -1585221, -1257611, 1939314, -4083598, -1000202, -3190144, + -3157330, -3632928, 126922, 3412210, -983419, 2147896, 2715295, + -2967645, -3693493, -411027, -2477047, -671102, -1228525, -22981, + -1308169, -381987, 1349076, 1852771, -1430430, -3343383, 264944, + 508951, 3097992, 44288, -1100098, 904516, 3958618, -3724342, + -8578, 1653064, -3249728, 2389356, -210977, 759969, -1316856, + 189548, -3553272, 3159746, -1851402, -2409325, -177440, 1315589, + 1341330, 1285669, -1584928, -812732, -1439742, -3019102, -3881060, + -3628969, 3839961, 2091667, 3407706, 2316500, 3817976, -3342478, + 2244091, -2446433, -3562462, 266997, 2434439, -1235728, 3513181, + -3520352, -3759364, -1197226, -3193378, 900702, 1859098, 909542, + 819034, 495491, -1613174, -43260, -522500, -655327, -3122442, + 2031748, 3207046, -3556995, -525098, -768622, -3595838, 342297, + 286988, -2437823, 4108315, 3437287, -3342277, 1735879, 203044, + 2842341, 2691481, -2590150, 1265009, 4055324, 1247620, 2486353, + 1595974, -3767016, 1250494, 2635921, -3548272, -2994039, 1869119, + 1903435, -1050970, -1333058, 1237275, -3318210, -1430225, -451100, + 1312455, 3306115, -1962642, -1279661, 1917081, -2546312, -1374803, + 1500165, 777191, 2235880, 3406031, -542412, -2831860, -1671176, + -1846953, -2584293, -3724270, 594136, -3776993, -2013608, 2432395, + 2454455, -164721, 1957272, 3369112, 185531, -1207385, -3183426, + 162844, 1616392, 3014001, 810149, 1652634, -3694233, -1799107, + -3038916, 3523897, 3866901, 269760, 2213111, -975884, 1717735, + 472078, -426683, 1723600, -1803090, 1910376, -1667432, -1104333, + -260646, -3833893, -2939036, -2235985, -420899, -2286327, 183443, + -976891, 1612842, -3545687, -554416, 3919660, -48306, -1362209, + 3937738, 1400424, -846154, 1976782 +}; diff --git a/crypto/ml_dsa/signature_domain_separation.c b/crypto/ml_dsa/si= gnature_domain_separation.c new file mode 100644 index 000000000000..3073f1d71ee8 --- /dev/null +++ b/crypto/ml_dsa/signature_domain_separation.c @@ -0,0 +1,203 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* + * Copyright (C) 2024 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +#include "signature_domain_separation.h" + +static const char *signature_prehash_type; + +/* RFC4055 2.16.840.1.101.3.4.2.1 */ +static const uint8_t sha256_oid_der[] __maybe_unused =3D { 0x06, 0x09, 0x6= 0, 0x86, + 0x48, 0x01, 0x65, 0x03, + 0x04, 0x02, 0x01 }; +/* RFC4055 2.16.840.1.101.3.4.2.2 */ +static const uint8_t sha384_oid_der[] __maybe_unused =3D { 0x06, 0x09, 0x6= 0, 0x86, + 0x48, 0x01, 0x65, 0x03, + 0x04, 0x02, 0x02 }; +/* RFC4055 2.16.840.1.101.3.4.2.3 */ +static const uint8_t sha512_oid_der[] __maybe_unused =3D { 0x06, 0x09, 0x6= 0, 0x86, + 0x48, 0x01, 0x65, 0x03, + 0x04, 0x02, 0x03 }; + +/* + * https://lamps-wg.github.io/draft-composite-sigs/draft-ietf-lamps-pq-com= posite-sigs.html + */ +static const uint8_t sha3_256_oid_der[] __maybe_unused =3D { + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x08 +}; +static const uint8_t sha3_384_oid_der[] __maybe_unused =3D { + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x09 +}; +static const uint8_t sha3_512_oid_der[] __maybe_unused =3D { + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0a +}; + +/* RFC8692 2.16.840.1.101.3.4.2.11 */ +static const uint8_t shake128_oid_der[] __maybe_unused =3D { + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0B +}; + +/* RFC8692 2.16.840.1.101.3.4.2.11 */ +static const uint8_t shake256_oid_der[] __maybe_unused =3D { + 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0C +}; + +static int signature_ph_oids(struct shake_ctx *hash_ctx, size_t mlen, + unsigned int nist_category) +{ + /* If no hash is supplied, we have no HashML-DSA */ + if (!signature_prehash_type) + return 0; + + /* + * The signature init/update/final operation will not work with the + * check of mlen, as only when _final is invoked, the message length + * is known. + * + * As defined in FIPS 204, section 5.4 requires + * "... the digest that is signed needs to be generated using an + * approved hash function or XOF (e.g., from FIPS 180 or FIPS 202) that + * provides at least =CE=BB bits of classical security strength against b= oth + * collision and second preimage attacks ... Obtaining at least =CE=BB bi= ts + * of classical security strength against collision attacks requires + * that the digest to be signed be at least 2=CE=BB bits in length." + * This requirement implies in the following definitions. + */ + switch (nist_category) { + case 1: + if (strcmp(signature_prehash_type, "sha256") =3D=3D 0) { + // if (mlen !=3D LC_SHA256_SIZE_DIGEST) + // return -EOPNOTSUPP; + shake_update(hash_ctx, sha256_oid_der, + sizeof(sha256_oid_der)); + return 0; + } + if (strcmp(signature_prehash_type, "sha3-256") =3D=3D 0) { + // if (mlen !=3D LC_SHA3_256_SIZE_DIGEST) + // return -EOPNOTSUPP; + shake_update(hash_ctx, sha3_256_oid_der, + sizeof(sha3_256_oid_der)); + return 0; + } + if (strcmp(signature_prehash_type, "shake128") =3D=3D 0) { + /* FIPS 204 section 5.4.1 */ + // if (mlen !=3D 32) + // return -EOPNOTSUPP; + shake_update(hash_ctx, shake128_oid_der, + sizeof(shake128_oid_der)); + return 0; + } + /* FALLTHROUGH - Dilithium44 allows the following, too */ + fallthrough; + case 3: + if (strcmp(signature_prehash_type, "sha3-384") =3D=3D 0) { + // if (mlen !=3D LC_SHA3_384_SIZE_DIGEST) + // return -EOPNOTSUPP; + shake_update(hash_ctx, sha3_384_oid_der, + sizeof(sha3_384_oid_der)); + return 0; + } + if (strcmp(signature_prehash_type, "sha384") =3D=3D 0) { + // if (mlen !=3D LC_SHA384_SIZE_DIGEST) + // return -EOPNOTSUPP; + shake_update(hash_ctx, sha384_oid_der, + sizeof(sha384_oid_der)); + return 0; + } + /* FALLTHROUGH - Dilithium[44|65] allows the following, too */ + fallthrough; + case 5: + if (strcmp(signature_prehash_type, "sha512") =3D=3D 0) { + // if (mlen !=3D LC_SHA512_SIZE_DIGEST) + // return -EOPNOTSUPP; + shake_update(hash_ctx, sha512_oid_der, + sizeof(sha512_oid_der)); + return 0; + } + if (strcmp(signature_prehash_type, "sha3-512") =3D=3D 0) { + // if (mlen !=3D LC_SHA3_512_SIZE_DIGEST) + // return -EOPNOTSUPP; + shake_update(hash_ctx, sha3_512_oid_der, + sizeof(sha3_512_oid_der)); + return 0; + } else if (strcmp(signature_prehash_type, "shake256") =3D=3D 0) { + /* FIPS 204 section 5.4.1 */ + /* + * TODO: mlen must be >=3D 64 to comply with the + * aforementioned requirement - unfortunately we can + * only check mlen at the end of the signature + * operation - shall this be implemented? + */ + // if (mlen !=3D 64) + // return -EOPNOTSUPP; + shake_update(hash_ctx, shake256_oid_der, + sizeof(shake256_oid_der)); + return 0; + } + break; + default: + break; + } + + return -EOPNOTSUPP; +} + +/* FIPS 204 pre-hash ML-DSA domain separation, but without original messag= e */ +static int standalone_signature_domain_separation( + struct shake_ctx *hash_ctx, const uint8_t *userctx, + size_t userctxlen, size_t mlen, unsigned int nist_category) +{ + uint8_t domainseparation[2]; + + domainseparation[0] =3D signature_prehash_type ? 1 : 0; + domainseparation[1] =3D (uint8_t)userctxlen; + + shake_update(hash_ctx, domainseparation, sizeof(domainseparation)); + shake_update(hash_ctx, userctx, userctxlen); + + return signature_ph_oids(hash_ctx, mlen, nist_category); +} + +/* + * Domain separation as required by: + * + * FIPS 204 pre-hash ML-DSA: no randomiser + * Composite ML-DSA draft 5: with randomizer + */ +int signature_domain_separation(struct shake_ctx *hash_ctx, + unsigned int ml_dsa_internal, + const uint8_t *userctx, size_t userctxlen, + const uint8_t *m, size_t mlen, + unsigned int nist_category) +{ + int ret =3D 0; + + /* The internal operation skips the domain separation code */ + if (ml_dsa_internal) + goto out; + + if (userctxlen > 255) + return -EINVAL; + + ret =3D standalone_signature_domain_separation(hash_ctx, + userctx, userctxlen, + mlen, nist_category); + +out: + shake_update(hash_ctx, m, mlen); + return ret; +} diff --git a/crypto/ml_dsa/signature_domain_separation.h b/crypto/ml_dsa/si= gnature_domain_separation.h new file mode 100644 index 000000000000..070c8b4ec371 --- /dev/null +++ b/crypto/ml_dsa/signature_domain_separation.h @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* + * Copyright (C) 2024 - 2025, Stephan Mueller + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + */ + +#ifndef SIGNATURE_DOMAIN_SEPARATION_H +#define SIGNATURE_DOMAIN_SEPARATION_H + +#include "dilithium.h" + +int signature_domain_separation(struct shake_ctx *hash_ctx, + unsigned int ml_dsa_internal, + const uint8_t *userctx, size_t userctxlen, + const uint8_t *m, size_t mlen, + unsigned int nist_category); + +#endif /* SIGNATURE_DOMAIN_SEPARATION_H */ From nobody Fri Dec 19 17:16:03 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 500A727F4E7 for ; Thu, 6 Nov 2025 17:45:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451134; cv=none; b=pH8DuRbFE1082Pe3acAQj3bGhJ/U4wzwuJuAWBOcjkV0pwjOnWlrkH/WvNbNaUqyEB6NruJS0p638RMpnSCAyB0v8K2e+2orrWsTMqjAJou6fj3saVxuHbrbMQquJ/lB0nN2+s7v4r2+EPe5LRXDAxPICJ7WeT414iNoNOsf9D8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451134; c=relaxed/simple; bh=en9lhnhBomMZ25krPFQTZpxfHDlInaKfWJbhfqL1ETA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rgjnxu8CMEekZzCtimCMQmhlwqA7qwBcvb2y55wgcv/56MLrBANopWygiyhDFgd/RJ86HkKldEpwMw2OiETQdSaZTfhToIKJ1fEGsqHMOt1txH+btS5urZbieadQoRRanKxBpNtHkgFRtu/o8r4ODK8j+7l6hiPSSujes3F/s7w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Erzm4/YW; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Erzm4/YW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762451127; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+KQcXMXdQ572MgYYtCpBF0MnnyhSRCvrKWmVaqPgtE0=; b=Erzm4/YWxXByXNZLAkHk+Fv8n3k5dBZ3FHqJh8Twyxyw8MHd3WZkkRK85JIDYoHVCzmyoR IR0/HLiq6qHV7+FGvW0djggt2o7geAZl4yNw8jkTd9QAPITLgu0QSDD0R5W5mTZQ2HXnJG 1rln8QlyCzTBobTLYlx+v4YPTjwj8cA= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-183-kn0xdlhvNbGL4iDqJsxLpg-1; Thu, 06 Nov 2025 12:45:23 -0500 X-MC-Unique: kn0xdlhvNbGL4iDqJsxLpg-1 X-Mimecast-MFC-AGG-ID: kn0xdlhvNbGL4iDqJsxLpg_1762451122 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 7183C195609E; Thu, 6 Nov 2025 17:45:21 +0000 (UTC) Received: from warthog.procyon.org.com (unknown [10.42.28.6]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id A6536180094C; Thu, 6 Nov 2025 17:45:17 +0000 (UTC) From: David Howells To: Herbert Xu Cc: David Howells , Eric Biggers , Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , "Jason A . Donenfeld" , Ard Biesheuvel , Stephan Mueller , Lukas Wunner , Ignat Korchagin , linux-crypto@vger.kernel.org, keyrings@vger.kernel.org, linux-modules@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 3/8] crypto: Add ML-DSA-44 pure rejection test vectors as a kunit test Date: Thu, 6 Nov 2025 17:44:47 +0000 Message-ID: <20251106174456.31818-4-dhowells@redhat.com> In-Reply-To: <20251106174456.31818-1-dhowells@redhat.com> References: <20251106174456.31818-1-dhowells@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Content-Type: text/plain; charset="utf-8" Add the "Pure rejection tests" from Stephan Mueller's Leancrypto implementation of ML-DSA/Dilithium 44 to the kernel as a kunit test. Signed-off-by: David Howells cc: Stephan Mueller cc: Eric Biggers cc: Jason A. Donenfeld cc: Ard Biesheuvel cc: Herbert Xu cc: linux-crypto@vger.kernel.org --- crypto/ml_dsa/Kconfig | 15 + crypto/ml_dsa/Makefile | 2 + .../dilithium_pure_rejection_vectors_44.h | 489 ++++++++++++++++++ crypto/ml_dsa/dilithium_selftest.c | 112 ++++ 4 files changed, 618 insertions(+) create mode 100644 crypto/ml_dsa/dilithium_pure_rejection_vectors_44.h create mode 100644 crypto/ml_dsa/dilithium_selftest.c diff --git a/crypto/ml_dsa/Kconfig b/crypto/ml_dsa/Kconfig index cc0567c5b990..d6e31d9ad77f 100644 --- a/crypto/ml_dsa/Kconfig +++ b/crypto/ml_dsa/Kconfig @@ -14,4 +14,19 @@ config CRYPTO_DILITHIUM_65 config CRYPTO_DILITHIUM_87 bool "Enable Dilithium-87 support" =20 +config CRYPTO_ML_DSA_TEST + tristate "ML-DSA/Dilithium KUnit tests" + depends on KUNIT + default KUNIT_ALL_TESTS + help + This options enables the KUnit tests for ML-DSA. + + KUnit tests run during boot and output the results to the debug + log in TAP format (https://testanything.org/). Only useful for + kernel devs running KUnit test harness and are not for inclusion + into a production build. + + For more information on KUnit and unit tests in general, refer + to the KUnit documentation in Documentation/dev-tools/kunit/. + endif diff --git a/crypto/ml_dsa/Makefile b/crypto/ml_dsa/Makefile index d420a8ba6033..dd05ce75f79f 100644 --- a/crypto/ml_dsa/Makefile +++ b/crypto/ml_dsa/Makefile @@ -16,3 +16,5 @@ ml_dsa-$(CONFIG_CRYPTO_DILITHIUM_65) +=3D dilithium_65.o ml_dsa-$(CONFIG_CRYPTO_DILITHIUM_44) +=3D dilithium_44.o =20 obj-$(CONFIG_CRYPTO_ML_DSA) +=3D ml_dsa.o + +obj-$(CONFIG_CRYPTO_ML_DSA_TEST) +=3D dilithium_selftest.o diff --git a/crypto/ml_dsa/dilithium_pure_rejection_vectors_44.h b/crypto/m= l_dsa/dilithium_pure_rejection_vectors_44.h new file mode 100644 index 000000000000..e452cad32194 --- /dev/null +++ b/crypto/ml_dsa/dilithium_pure_rejection_vectors_44.h @@ -0,0 +1,489 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ + { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa44", + .pk_len =3D DILITHIUM44_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM44_PUBLICKEYBYTES]){ + 0x8f, 0x61, 0x67, 0xa9, 0x7c, 0x61, 0xc2, 0xf2, + 0x87, 0xe2, 0x28, 0xf8, 0x44, 0x80, 0x6f, 0xb0, + 0x10, 0xc1, 0x14, 0xf6, 0x88, 0x42, 0x76, 0xbe, + 0x05, 0xd2, 0x56, 0xa0, 0xb7, 0x46, 0xcf, 0xc5, + 0x76, 0x0a, 0x52, 0xfe, 0xa3, 0x3c, 0x05, 0x6e, + 0xd5, 0xd3, 0xbd, 0x80, 0x03, 0x29, 0x25, 0x96, + 0xdf, 0xa9, 0x5b, 0x12, 0x42, 0x89, 0x6e, 0x03, + 0x2c, 0x42, 0x64, 0xee, 0xc7, 0xf7, 0x55, 0xfe, + 0xfd, 0x15, 0x74, 0xee, 0x2d, 0xb3, 0xbf, 0xf2, + 0x24, 0xe7, 0x35, 0x45, 0x77, 0x67, 0x44, 0xd2, + 0x0c, 0x43, 0xfc, 0x7b, 0x47, 0x56, 0xad, 0xc5, + 0xe7, 0x37, 0x49, 0x21, 0x12, 0x57, 0x7f, 0xca, + 0x7f, 0x5d, 0xac, 0x62, 0x5b, 0x8d, 0xbf, 0xdb, + 0x64, 0xac, 0x12, 0x1d, 0x7f, 0x7a, 0x2f, 0xa0, + 0x2c, 0xfe, 0x95, 0x4b, 0x78, 0xdb, 0xf0, 0x98, + 0x97, 0x70, 0x62, 0xfc, 0x64, 0x4a, 0x1b, 0xbc, + 0x30, 0x1b, 0x51, 0x13, 0x47, 0x6e, 0x83, 0xd2, + 0xa2, 0xcf, 0x39, 0xba, 0xd3, 0x00, 0x62, 0x7c, + 0x5b, 0xe6, 0x14, 0x55, 0xd5, 0xfc, 0xbf, 0x15, + 0x65, 0xd7, 0x1f, 0xbb, 0xf6, 0x2b, 0x46, 0x38, + 0x1e, 0xf3, 0x8f, 0x0d, 0x57, 0x8a, 0x41, 0xfb, + 0x47, 0x19, 0xe1, 0x79, 0xca, 0x98, 0x1a, 0x73, + 0x4d, 0x8a, 0xc0, 0xa1, 0xa7, 0x4a, 0x28, 0x4a, + 0x92, 0x6c, 0x77, 0x4f, 0x18, 0xe1, 0xce, 0x11, + 0x14, 0xd5, 0xf6, 0xc0, 0xa8, 0x1e, 0x26, 0x25, + 0xe4, 0x30, 0xb2, 0x6f, 0x89, 0x6e, 0xc6, 0x44, + 0x1a, 0xd3, 0xca, 0xe1, 0x05, 0x0d, 0x61, 0x80, + 0xd7, 0xbc, 0x56, 0x0a, 0x57, 0x9f, 0x16, 0x40, + 0x84, 0x1e, 0xc0, 0x5e, 0xcd, 0xb6, 0xc8, 0x5d, + 0x87, 0xd6, 0xee, 0xcb, 0x21, 0x2f, 0x22, 0x9a, + 0x7e, 0xea, 0x2e, 0xf5, 0x87, 0xf0, 0x44, 0x10, + 0x3d, 0x42, 0x6d, 0x3f, 0x4f, 0xa0, 0x21, 0x8e, + 0x40, 0x75, 0x3b, 0xaa, 0xd4, 0xd9, 0x37, 0x0a, + 0x35, 0x5b, 0xba, 0xbd, 0x11, 0x17, 0x7b, 0x7e, + 0xfc, 0xb1, 0x1c, 0x5c, 0x71, 0xce, 0xde, 0xa5, + 0xec, 0xd6, 0x8b, 0x50, 0x64, 0x02, 0xca, 0x84, + 0x26, 0xfe, 0x03, 0x9e, 0xaf, 0x13, 0x05, 0x1c, + 0x85, 0x32, 0x92, 0x85, 0x84, 0x83, 0xb6, 0x76, + 0x27, 0xa7, 0xd8, 0x0c, 0xa4, 0xb5, 0x65, 0x7a, + 0xbf, 0x2e, 0x64, 0xce, 0x82, 0x0d, 0x27, 0xd3, + 0x2c, 0x9d, 0xb5, 0xa5, 0x51, 0xe3, 0xab, 0xbd, + 0xe2, 0xe0, 0x64, 0x71, 0x0f, 0x99, 0x09, 0x6a, + 0x40, 0x9d, 0x8c, 0x6d, 0x63, 0x70, 0x42, 0xe2, + 0xa8, 0x5c, 0x71, 0xd2, 0x88, 0x10, 0xbc, 0x3b, + 0x9d, 0xc8, 0x3a, 0x8a, 0xf3, 0x81, 0x0a, 0x0e, + 0xd8, 0xf6, 0x13, 0x90, 0xc2, 0xda, 0x4c, 0x4f, + 0x6f, 0x1f, 0x61, 0x0d, 0x46, 0xac, 0x5c, 0x4a, + 0xcc, 0x23, 0xfb, 0xf2, 0xf8, 0x9f, 0x48, 0x1f, + 0xaf, 0x24, 0xb4, 0xc7, 0xcb, 0x6f, 0x80, 0x74, + 0xa3, 0xdb, 0xa8, 0x61, 0x12, 0x60, 0x08, 0x56, + 0x85, 0x47, 0x05, 0x32, 0x93, 0x43, 0x9b, 0xa6, + 0xf6, 0x56, 0x3b, 0xab, 0x93, 0x28, 0x19, 0xda, + 0xad, 0xb5, 0xaa, 0x2e, 0x83, 0x3d, 0x37, 0x0e, + 0x83, 0xf2, 0xfe, 0xdd, 0xe8, 0xd9, 0x53, 0x36, + 0x3b, 0x5d, 0x8e, 0x24, 0xa9, 0x3a, 0x8f, 0x85, + 0x4b, 0x50, 0xf7, 0x61, 0x0f, 0x20, 0x92, 0x09, + 0x1f, 0xe4, 0x24, 0x98, 0x9f, 0xa4, 0x52, 0x12, + 0x2a, 0xae, 0x6f, 0xd6, 0x0d, 0xb5, 0x22, 0x72, + 0x83, 0xfb, 0x4f, 0xef, 0xa6, 0x55, 0x9a, 0x14, + 0xab, 0x82, 0x89, 0x1f, 0xf2, 0x0b, 0x14, 0x76, + 0xb7, 0xf7, 0x14, 0xdd, 0xd6, 0xc1, 0xe8, 0xb2, + 0x99, 0x23, 0x28, 0xe8, 0xa4, 0x69, 0x18, 0xf6, + 0x3e, 0xb1, 0xff, 0xde, 0xf2, 0x2c, 0x7c, 0x73, + 0x93, 0x32, 0x52, 0x06, 0xeb, 0x59, 0xb2, 0x8f, + 0x2f, 0x1d, 0x6a, 0x85, 0x74, 0xd3, 0xe5, 0xa1, + 0x95, 0xe4, 0x96, 0x1e, 0x75, 0x16, 0xe4, 0x5c, + 0x40, 0xf0, 0x20, 0xb1, 0x10, 0xe7, 0x2a, 0x70, + 0x41, 0xac, 0x49, 0x40, 0x55, 0xef, 0xd1, 0x58, + 0x24, 0x6a, 0xa6, 0x20, 0xdc, 0x23, 0xdc, 0x66, + 0x45, 0x4f, 0x6a, 0x52, 0x3c, 0x61, 0xc8, 0xfb, + 0x28, 0x1e, 0x8c, 0x3f, 0xfc, 0xc7, 0x73, 0x2f, + 0xf1, 0xe2, 0x31, 0xee, 0xa0, 0x5f, 0x12, 0x3f, + 0x94, 0xe5, 0x26, 0xc0, 0x62, 0xcc, 0x67, 0x8f, + 0x5d, 0xfd, 0x3d, 0x8f, 0x16, 0xae, 0x4e, 0x04, + 0x54, 0x5b, 0x02, 0x66, 0x00, 0x70, 0xe5, 0xcc, + 0xb9, 0x51, 0x8c, 0x1a, 0x5d, 0xf0, 0xfe, 0x7d, + 0x1b, 0x2f, 0x0a, 0x48, 0x94, 0xda, 0x4b, 0xb3, + 0x05, 0x75, 0x3b, 0x25, 0xda, 0xf2, 0x12, 0x47, + 0xe2, 0xd7, 0xbb, 0xe7, 0x05, 0xa2, 0x4e, 0xaf, + 0x2f, 0x29, 0x6c, 0xbd, 0x80, 0x82, 0xdf, 0xbb, + 0x4b, 0x9d, 0x29, 0x9b, 0xef, 0xff, 0x17, 0x2a, + 0xa7, 0x2f, 0x4a, 0x2e, 0xbf, 0x29, 0x38, 0xcb, + 0x94, 0x9c, 0x10, 0x87, 0x69, 0x57, 0x7d, 0xd7, + 0xcf, 0xc1, 0x57, 0x0f, 0xc2, 0x9c, 0x3b, 0x1e, + 0xbc, 0x55, 0x08, 0xb1, 0x50, 0xb0, 0x28, 0x79, + 0x1d, 0xd9, 0x2f, 0xa5, 0x12, 0xcc, 0xa7, 0x5b, + 0xcb, 0x67, 0x57, 0x13, 0x4a, 0xb3, 0xd5, 0x34, + 0xea, 0xd9, 0x6b, 0x15, 0x17, 0x1f, 0xe7, 0x52, + 0x2a, 0x11, 0xdf, 0xab, 0x3a, 0x8d, 0x1b, 0xaa, + 0xfa, 0x54, 0xf0, 0x20, 0x94, 0x40, 0x2d, 0x3e, + 0xf2, 0xa2, 0x8b, 0xbb, 0x86, 0xce, 0x29, 0x87, + 0xb1, 0xfa, 0x27, 0xf2, 0x5a, 0x79, 0xc2, 0xf8, + 0xe9, 0xf2, 0x7c, 0x5a, 0xcd, 0x45, 0x8e, 0x8b, + 0xba, 0xad, 0x13, 0x52, 0x79, 0xd5, 0x0f, 0x59, + 0xfb, 0x07, 0x15, 0x1f, 0xb3, 0xe6, 0xc8, 0x66, + 0xf7, 0x37, 0x19, 0xd8, 0x33, 0xdd, 0xc1, 0xb3, + 0x96, 0x4b, 0x28, 0x43, 0xf8, 0x5e, 0xc7, 0xe8, + 0x81, 0x6e, 0xd0, 0xb2, 0x5a, 0x3d, 0xf1, 0x68, + 0x8f, 0xf0, 0xf5, 0x1a, 0x6d, 0xc3, 0xaa, 0x5b, + 0x72, 0x27, 0xbd, 0xd6, 0x7c, 0x9b, 0xbf, 0x89, + 0x6a, 0x09, 0xf0, 0x48, 0xf0, 0x8c, 0x27, 0x69, + 0x28, 0xf3, 0x5f, 0x53, 0xe3, 0x4d, 0x60, 0x4a, + 0xb8, 0xc5, 0xf9, 0x85, 0x07, 0x3e, 0xfb, 0xd7, + 0x21, 0x69, 0xd5, 0xec, 0x18, 0x68, 0xb6, 0x55, + 0x15, 0xac, 0x2e, 0x0f, 0x5c, 0x2e, 0x9e, 0x12, + 0x10, 0x5e, 0xc6, 0xb3, 0xcd, 0xe6, 0x3a, 0x2f, + 0x43, 0xf6, 0x75, 0x31, 0x3c, 0x90, 0x34, 0x1c, + 0x3d, 0x45, 0xaa, 0x8e, 0x08, 0xcf, 0x58, 0x67, + 0x34, 0xd4, 0x24, 0xb8, 0x20, 0x69, 0xfe, 0xf0, + 0x33, 0xe9, 0x3e, 0xbd, 0xe5, 0x18, 0x9f, 0x66, + 0xc9, 0x0d, 0x6f, 0x47, 0x99, 0xf7, 0x0c, 0xdd, + 0xad, 0x8c, 0x6b, 0x80, 0xed, 0x19, 0x61, 0x8a, + 0xba, 0x62, 0x2f, 0xcc, 0x0e, 0x47, 0xe0, 0xc6, + 0x1f, 0x2f, 0x44, 0x40, 0x17, 0xb6, 0x89, 0xc6, + 0xf5, 0xc2, 0x97, 0x89, 0x38, 0x6c, 0x8e, 0x2c, + 0x46, 0x0b, 0x6e, 0x01, 0x47, 0xd3, 0x2f, 0x58, + 0xf8, 0xc7, 0x3b, 0x49, 0xb2, 0x35, 0x9f, 0x67, + 0xc9, 0x6c, 0xde, 0x30, 0x3b, 0x50, 0x19, 0x65, + 0xbb, 0x73, 0xa1, 0x47, 0x01, 0x6a, 0x3d, 0xe3, + 0x85, 0x4d, 0xd0, 0x72, 0x0d, 0xbc, 0x81, 0x52, + 0xe8, 0x1a, 0x8b, 0x85, 0x4c, 0x6f, 0x0e, 0xfc, + 0x59, 0x84, 0x7a, 0xf2, 0x28, 0x3e, 0x02, 0xcb, + 0xe2, 0x4a, 0xbf, 0xac, 0x22, 0x34, 0x86, 0xe4, + 0x7d, 0x6b, 0xa3, 0x52, 0xac, 0xff, 0xe5, 0xbe, + 0x0c, 0x8d, 0xf5, 0xd8, 0xfd, 0x5a, 0x3d, 0xad, + 0x0d, 0xc0, 0x02, 0xd0, 0x58, 0x8e, 0x7c, 0x50, + 0x7c, 0x09, 0xc0, 0xdb, 0xd7, 0xdf, 0xe0, 0xb2, + 0x6f, 0xb2, 0x79, 0x0d, 0xc1, 0xa0, 0xb1, 0x7e, + 0xe3, 0x0d, 0xfc, 0x93, 0x43, 0x8c, 0x86, 0x68, + 0xa6, 0x51, 0x93, 0x42, 0xb7, 0xcd, 0x13, 0x56, + 0x6e, 0xdc, 0x63, 0x51, 0x23, 0xcf, 0x29, 0xc5, + 0x5a, 0x66, 0x43, 0x80, 0xfe, 0x28, 0x15, 0x71, + 0x52, 0x87, 0xe2, 0x18, 0x10, 0xad, 0x94, 0x47, + 0x2f, 0xe3, 0x5d, 0x7a, 0x02, 0x6d, 0x31, 0x58, + 0xae, 0x2f, 0x96, 0x53, 0x1b, 0x6c, 0x0e, 0x25, + 0xea, 0x41, 0xd3, 0x29, 0x27, 0x22, 0x24, 0x8d, + 0x1d, 0x8e, 0xd1, 0x33, 0x76, 0x67, 0x7d, 0x9d, + 0xd9, 0xa7, 0x3e, 0x61, 0xd0, 0xad, 0x93, 0xb9, + 0xdf, 0x87, 0x3a, 0x7b, 0x89, 0xc7, 0x1d, 0x91, + 0xec, 0x43, 0xa4, 0xdc, 0x02, 0x88, 0x2e, 0xaa, + 0xb2, 0x58, 0xa5, 0xd3, 0x68, 0x9c, 0x9f, 0x60, + 0x12, 0xc8, 0x7e, 0x7d, 0x40, 0x80, 0xfd, 0xb4, + 0xbf, 0x56, 0xf4, 0x01, 0x39, 0x3d, 0xa0, 0x34, + 0x48, 0x79, 0x75, 0xe2, 0x0f, 0x60, 0x09, 0x42, + 0x11, 0x6f, 0xa5, 0x31, 0x46, 0xb7, 0x03, 0xc8, + 0x61, 0x53, 0x39, 0x1e, 0xf4, 0x99, 0x36, 0x7d, + 0xc0, 0x87, 0xda, 0x63, 0x71, 0x9b, 0x29, 0x7b, + 0x4e, 0x6f, 0x09, 0xa2, 0x2c, 0xa5, 0xc2, 0xb9, + 0xe7, 0xe0, 0x56, 0x8b, 0x1d, 0xbb, 0xcc, 0x34, + 0x8c, 0xbc, 0xb6, 0x0a, 0xc9, 0xfa, 0x4a, 0x31, + 0x63, 0x0d, 0x30, 0xff, 0x59, 0x3d, 0x8c, 0x4d, + 0x74, 0x28, 0xf4, 0xe9, 0x97, 0x43, 0x05, 0x3a, + 0x33, 0x51, 0x51, 0xe4, 0x0e, 0x33, 0xae, 0x2c, + 0xda, 0x28, 0x83, 0x93, 0x4e, 0xfe, 0x37, 0x1d, + 0x6c, 0x25, 0x1e, 0x24, 0xbc, 0x3a, 0x5c, 0x68, + 0xac, 0x54, 0x3a, 0x47, 0x74, 0x35, 0xff, 0x37, + 0x80, 0x12, 0x30, 0xd7, 0x31, 0x2a, 0x49, 0x51, + 0x2d, 0x4f, 0xd2, 0x9c, 0xca, 0x55, 0x87, 0xd0, + 0x41, 0x86, 0xc7, 0xf2, 0xda, 0xf8, 0x4b, 0x08, + 0x23, 0xb3, 0x00, 0xb7, 0xb6, 0x4f, 0x2e, 0xaf, + 0xb8, 0x8e, 0xb1, 0x44, 0xe1, 0xed, 0x67, 0xf8, + 0x80, 0xa7, 0x04, 0xa0, 0x66, 0xe6, 0xb5, 0x69, + 0xca, 0x95, 0x71, 0xc8, 0x0d, 0x3d, 0xf6, 0x77, + 0xfd, 0x2c, 0x95, 0xed, 0xe5, 0x22, 0x43, 0xd9, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x6d, 0xb3, 0x8e, 0x80, 0xaf, 0x5f, 0x19, 0xd9, + 0xb0, 0xcf, 0xad, 0x58, 0xc7, 0x27, 0xae, 0x12, + 0x4e, 0x7d, 0xa3, 0x1a, 0xe3, 0x85, 0xc6, 0xaa, + 0xf6, 0xa1, 0x9a, 0xb1, 0xe9, 0xe0, 0xfe, 0x89, + 0x1e, 0xc5, 0x6f, 0x10, 0x18, 0x24, 0xab, 0xa8, + 0x6d, 0x03, 0xd0, 0x3d, 0xc3, 0xff, 0x67, 0xe7, + 0x3a, 0x95, 0x94, 0xc8, 0x49, 0x51, 0x8f, 0xa0, + 0x65, 0xcb, 0x20, 0x29, 0x2a, 0x6d, 0xf7, 0xf2, + }, + .sig_len =3D DILITHIUM44_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM44_CRYPTO_BYTES]){ + 0x5e, 0x05, 0x37, 0xe2, 0xc1, 0x20, 0xce, 0x7b, + 0x8a, 0xdf, 0xf2, 0x22, 0x61, 0x17, 0x58, 0xaa, + 0x3c, 0xe4, 0x82, 0x9c, 0x0e, 0xb6, 0x1f, 0xb4, + 0x98, 0x0f, 0xba, 0x8e, 0x51, 0x15, 0x67, 0x76, + 0x0b, 0x98, 0x63, 0xda, 0x17, 0xd3, 0xbb, 0xbe, + 0x16, 0x29, 0x71, 0xab, 0xba, 0x99, 0xed, 0x3f, + 0xd4, 0xc2, 0x16, 0x71, 0xb6, 0x21, 0x87, 0x48, + 0xaa, 0xb5, 0x39, 0x5e, 0xfb, 0x5d, 0x68, 0x3b, + 0xd3, 0x60, 0xf4, 0x5b, 0x85, 0x2a, 0x5b, 0xb5, + 0xce, 0x6e, 0xf3, 0x39, 0xc3, 0xbe, 0x96, 0xa7, + 0x61, 0xc9, 0xbf, 0xdf, 0x33, 0x1d, 0xec, 0xb9, + 0x2b, 0x7a, 0x05, 0xce, 0x1e, 0xd9, 0x46, 0x70, + 0xca, 0x54, 0xbf, 0xdc, 0x46, 0x9e, 0x2f, 0x29, + 0x18, 0x57, 0x96, 0x84, 0xac, 0xe9, 0xd7, 0x74, + 0xeb, 0x8e, 0x6b, 0xec, 0x46, 0x9a, 0x2a, 0xfa, + 0xde, 0x80, 0x09, 0x53, 0xd9, 0xeb, 0x9d, 0xf7, + 0xaa, 0xe2, 0xe5, 0xdc, 0xc3, 0xd9, 0x70, 0xe5, + 0x8b, 0xa8, 0xba, 0x2b, 0x41, 0x72, 0x92, 0x25, + 0xaf, 0xd9, 0xb4, 0x5a, 0x53, 0xb7, 0xcc, 0x1d, + 0x69, 0xf1, 0x53, 0x5b, 0x52, 0x38, 0xbc, 0x47, + 0x24, 0x8c, 0x1d, 0x28, 0x5d, 0x5c, 0x1c, 0xc9, + 0x9d, 0xea, 0x1c, 0xb1, 0xb3, 0x49, 0x68, 0xd5, + 0xad, 0xdc, 0x47, 0x58, 0x6d, 0x38, 0x33, 0xe7, + 0x9b, 0xaa, 0x89, 0xb1, 0x96, 0x0b, 0xcb, 0xc4, + 0x24, 0x73, 0xf2, 0xe7, 0xb6, 0xca, 0x74, 0x55, + 0x1b, 0xb5, 0xb7, 0x9e, 0x2e, 0xe3, 0x3a, 0x32, + 0x5d, 0x1d, 0x6e, 0x15, 0xe6, 0xb8, 0xfb, 0xce, + 0x57, 0x81, 0x15, 0xb5, 0xcf, 0x67, 0x2b, 0x55, + 0x4c, 0x85, 0x6f, 0x28, 0xa6, 0xbb, 0xb4, 0x28, + 0x76, 0x91, 0xa4, 0x29, 0xa1, 0x50, 0x7c, 0xed, + 0x9a, 0xfc, 0xe4, 0xbc, 0xd7, 0x28, 0x62, 0x28, + 0x61, 0x4d, 0x8d, 0x8c, 0x5a, 0x5e, 0x4d, 0x1d, + 0x5e, 0x73, 0xcc, 0x0b, 0x9d, 0x56, 0x73, 0xc7, + 0xf2, 0x26, 0xf7, 0x7e, 0x61, 0xa4, 0x86, 0xf5, + 0x1c, 0xd1, 0x00, 0xd0, 0x31, 0xc5, 0x03, 0x17, + 0x1c, 0xec, 0x04, 0xe5, 0xc7, 0x13, 0xb6, 0x81, + 0x78, 0x3d, 0x27, 0x87, 0x36, 0xf3, 0x2a, 0x59, + 0x96, 0xeb, 0x44, 0xfd, 0xb9, 0x95, 0xb7, 0x76, + 0xb1, 0x08, 0xc4, 0x98, 0xb1, 0x08, 0x36, 0x2a, + 0x63, 0x72, 0x4f, 0xef, 0x47, 0xfc, 0x84, 0x09, + 0x18, 0x60, 0xb7, 0x8a, 0xff, 0xae, 0x32, 0x3c, + 0x79, 0xdf, 0xd6, 0x24, 0xbe, 0x9c, 0x38, 0x68, + 0x92, 0xde, 0x81, 0x80, 0x22, 0x06, 0xf2, 0xe4, + 0xde, 0x75, 0x4e, 0xd6, 0x36, 0x93, 0x44, 0xd1, + 0xa4, 0x2e, 0x2e, 0x05, 0x87, 0xbd, 0xf7, 0xc5, + 0xc8, 0x1c, 0x7b, 0x00, 0xe8, 0x11, 0x7f, 0xc2, + 0x39, 0x4b, 0x7b, 0x97, 0x11, 0x92, 0x6c, 0xff, + 0x89, 0x7f, 0x26, 0x89, 0x4f, 0x38, 0xfd, 0xdd, + 0x08, 0xa7, 0xce, 0x6f, 0xe8, 0x57, 0x9b, 0x46, + 0xe5, 0xdb, 0x72, 0x03, 0x1e, 0x7d, 0xb0, 0x77, + 0xb9, 0xcc, 0xdb, 0x6c, 0xa7, 0xd8, 0x30, 0x34, + 0xad, 0xa7, 0xe4, 0x63, 0xf0, 0x19, 0x0e, 0x5d, + 0x3b, 0xe0, 0xff, 0x40, 0x1c, 0xa5, 0xb3, 0xb9, + 0x87, 0x6e, 0x2c, 0xf3, 0x5f, 0xcd, 0x54, 0x2a, + 0xc0, 0x6e, 0x2b, 0xd9, 0x2d, 0xcc, 0xd5, 0x68, + 0x95, 0x4a, 0x4a, 0x84, 0x60, 0x54, 0xee, 0xa0, + 0x21, 0x9e, 0x8d, 0x20, 0xcb, 0xe8, 0xc5, 0x5a, + 0xba, 0xe2, 0xaa, 0x6e, 0x1c, 0xb1, 0xdf, 0x18, + 0x9f, 0x94, 0xc7, 0x77, 0x5a, 0x2c, 0x0e, 0x05, + 0xaa, 0x2a, 0x54, 0x58, 0x6c, 0xb3, 0x2e, 0x2f, + 0xa4, 0x6e, 0x98, 0xbb, 0x6f, 0x41, 0x6d, 0xbd, + 0x71, 0x95, 0xe4, 0xbc, 0x13, 0x37, 0x99, 0x0d, + 0xac, 0x27, 0x69, 0xb9, 0x0b, 0x14, 0x5f, 0x6e, + 0xd2, 0x2b, 0xe2, 0x0c, 0xc6, 0xbc, 0x10, 0x11, + 0x47, 0xb7, 0x37, 0x2c, 0x0e, 0x88, 0xcd, 0xbb, + 0xf7, 0x28, 0xd6, 0x4a, 0x9d, 0xff, 0x3c, 0x2f, + 0x7d, 0x2b, 0xe8, 0xe8, 0x9e, 0xae, 0x7b, 0xe6, + 0x2a, 0xb3, 0x4e, 0x20, 0xcc, 0xf1, 0x81, 0x8e, + 0xed, 0x6d, 0xe2, 0x99, 0xf5, 0xb5, 0x1a, 0x30, + 0x95, 0x52, 0x34, 0xf5, 0x3f, 0xc3, 0x31, 0xd6, + 0xbe, 0xa2, 0xc8, 0xdc, 0xe4, 0x1c, 0xf6, 0x0f, + 0x4d, 0x0b, 0x89, 0x8e, 0x66, 0x93, 0x88, 0xb8, + 0xad, 0xbc, 0xdc, 0x96, 0x01, 0x9f, 0x16, 0x70, + 0xf5, 0x4f, 0xa4, 0x0e, 0x0f, 0xc3, 0xf6, 0x9c, + 0xe1, 0xa1, 0xe3, 0xec, 0x9d, 0x09, 0xcd, 0x90, + 0x52, 0x26, 0x09, 0xd9, 0x9c, 0xde, 0xbd, 0xdf, + 0xbb, 0xf4, 0x50, 0xd1, 0x89, 0x68, 0xf6, 0x86, + 0x53, 0x33, 0x5a, 0xf6, 0x54, 0xb5, 0x7c, 0xe1, + 0xd7, 0x8d, 0xb8, 0x58, 0xf5, 0xda, 0x14, 0xc8, + 0x35, 0x1c, 0xcf, 0x44, 0x62, 0xbc, 0xd7, 0xe3, + 0xd8, 0x32, 0xcf, 0x16, 0xf5, 0x2f, 0x55, 0x23, + 0xc0, 0x1b, 0xc4, 0xe3, 0x28, 0xc8, 0xc8, 0x97, + 0x70, 0x8b, 0x06, 0x98, 0xfb, 0xf6, 0x33, 0x6b, + 0x86, 0x1c, 0xdb, 0x2a, 0x3c, 0x08, 0x08, 0x57, + 0xd3, 0x4a, 0xf8, 0x22, 0x26, 0x78, 0x65, 0x5f, + 0xa6, 0xf8, 0x9f, 0x22, 0x76, 0x62, 0xb0, 0x08, + 0x68, 0x70, 0xea, 0x72, 0x57, 0x6b, 0xe7, 0xf7, + 0xc6, 0x12, 0x9a, 0x49, 0x50, 0xa9, 0xa5, 0x6c, + 0xe7, 0xda, 0xb4, 0xbf, 0xb6, 0xbf, 0x4f, 0xdf, + 0x9e, 0x9b, 0xb4, 0xb3, 0x8d, 0x1a, 0x12, 0x16, + 0x68, 0xd2, 0x63, 0xae, 0x92, 0x77, 0x1f, 0x03, + 0xa5, 0xed, 0x58, 0x3b, 0xe9, 0x0b, 0xfe, 0xfc, + 0xae, 0x53, 0x0b, 0x5f, 0x13, 0xf2, 0xd2, 0xe2, + 0x0b, 0xec, 0x75, 0x85, 0x68, 0x0c, 0x57, 0xde, + 0x1b, 0x6d, 0x78, 0x0b, 0x19, 0x66, 0xa8, 0xf5, + 0x45, 0x72, 0x2b, 0x01, 0x06, 0xf6, 0xd1, 0x47, + 0x21, 0x24, 0x07, 0xf7, 0x71, 0x03, 0xbc, 0xb0, + 0x7c, 0x5b, 0x5c, 0x24, 0xff, 0x74, 0x47, 0x62, + 0x81, 0xc3, 0x0b, 0x31, 0x76, 0x90, 0x5b, 0xef, + 0x95, 0xa8, 0xa7, 0x02, 0xa1, 0xbf, 0xe1, 0xf4, + 0x16, 0x06, 0x8a, 0x97, 0x39, 0x35, 0xcf, 0xf3, + 0xa7, 0x4a, 0x43, 0xba, 0x05, 0x95, 0x7d, 0x73, + 0x76, 0x7a, 0x53, 0xef, 0xf8, 0x4e, 0xcb, 0x04, + 0x70, 0x4c, 0xee, 0xff, 0x82, 0xbd, 0xcd, 0xc1, + 0xbe, 0x3d, 0x83, 0x71, 0x03, 0xf0, 0xc0, 0x2b, + 0x98, 0xf9, 0x60, 0x54, 0x02, 0x7d, 0xa6, 0x41, + 0xcc, 0xa3, 0xd7, 0x8d, 0xfd, 0xce, 0x28, 0xae, + 0x0f, 0x48, 0x17, 0x2a, 0xaf, 0xe9, 0xb9, 0x4a, + 0x8a, 0x22, 0xd2, 0x4d, 0xd3, 0x1b, 0xa3, 0x39, + 0x88, 0x8a, 0x8f, 0x5b, 0x44, 0x97, 0xb9, 0x04, + 0x1b, 0x58, 0x67, 0x74, 0x2f, 0x07, 0x7a, 0x52, + 0xa9, 0x9d, 0xa4, 0x41, 0x28, 0xf2, 0x35, 0xca, + 0x68, 0x4e, 0x4a, 0x3a, 0x66, 0xb9, 0x88, 0x2e, + 0x65, 0x1d, 0x47, 0x04, 0xed, 0xdb, 0xe1, 0x40, + 0x12, 0x06, 0x13, 0x62, 0x28, 0x3d, 0x0b, 0x35, + 0x06, 0xc6, 0x2b, 0xb3, 0x71, 0x3c, 0xfa, 0x77, + 0xec, 0x47, 0x93, 0x78, 0x36, 0x25, 0x19, 0xd7, + 0x70, 0x30, 0x8a, 0x4c, 0x94, 0xdc, 0x3e, 0xeb, + 0x61, 0x25, 0xbc, 0xa0, 0x27, 0xd9, 0x17, 0xa5, + 0x19, 0x4f, 0xf4, 0x93, 0x32, 0x56, 0x9a, 0x0b, + 0x77, 0xb4, 0x55, 0x1b, 0x8f, 0x9e, 0x69, 0x5b, + 0xe2, 0x6d, 0x70, 0x15, 0x79, 0x5c, 0xf6, 0xb6, + 0x04, 0xa2, 0x01, 0x37, 0x74, 0x20, 0xb8, 0x62, + 0xf6, 0x37, 0x3c, 0xab, 0xca, 0x71, 0xa5, 0x8a, + 0x56, 0x5d, 0x6a, 0x4a, 0x61, 0x2e, 0xb8, 0x62, + 0x7d, 0x47, 0x34, 0x7d, 0xcd, 0x4d, 0x70, 0x23, + 0xf5, 0xaa, 0xd1, 0xa5, 0xf0, 0x4c, 0x38, 0xc3, + 0x98, 0x79, 0x4c, 0x0b, 0x6b, 0xcc, 0xe7, 0xd7, + 0x09, 0xae, 0x23, 0x9b, 0x2f, 0xde, 0x70, 0xc6, + 0xad, 0x0f, 0x66, 0xb5, 0x78, 0x6b, 0x0b, 0xb0, + 0x2e, 0x94, 0xf2, 0xa8, 0x8b, 0x74, 0xf0, 0x03, + 0x47, 0xd8, 0xec, 0xe8, 0x1f, 0xa3, 0x7b, 0x38, + 0x9e, 0x0e, 0xc0, 0x47, 0xd2, 0x0f, 0x8e, 0x7f, + 0xb1, 0x83, 0xd3, 0x86, 0x79, 0x3c, 0xa1, 0xae, + 0xc4, 0xaf, 0xae, 0x9d, 0x83, 0xc0, 0xd1, 0x2b, + 0x2b, 0xda, 0x50, 0x8c, 0xea, 0x41, 0x97, 0x9b, + 0x0f, 0x15, 0xc2, 0xe2, 0x8f, 0x39, 0x0b, 0x92, + 0xdd, 0xde, 0x52, 0x62, 0x74, 0xdc, 0xda, 0x11, + 0x87, 0x4d, 0xa9, 0x4a, 0xc5, 0x2f, 0xae, 0xaf, + 0xc1, 0xc3, 0x05, 0xfa, 0x38, 0xcc, 0x5c, 0xb1, + 0x9f, 0xe0, 0x82, 0x90, 0xb3, 0xd5, 0xdc, 0xf4, + 0x55, 0xdb, 0xea, 0x94, 0x06, 0x7c, 0x2c, 0x82, + 0x78, 0xeb, 0xa5, 0x01, 0xf0, 0x3d, 0x4b, 0x87, + 0xdd, 0xd5, 0x91, 0x4f, 0xf3, 0xa7, 0xdf, 0xa1, + 0xd8, 0x31, 0xde, 0x05, 0x99, 0x67, 0x3d, 0xa4, + 0x6b, 0x19, 0xa3, 0xe8, 0x55, 0xb7, 0xf5, 0xc3, + 0x63, 0x5e, 0xd4, 0x38, 0xf9, 0x24, 0x64, 0x7d, + 0x17, 0xc1, 0x07, 0xbe, 0x39, 0x54, 0x1b, 0x44, + 0xe5, 0xc6, 0x3c, 0x02, 0xb1, 0x6f, 0xff, 0x8c, + 0xcb, 0x79, 0xe2, 0xec, 0x4d, 0x01, 0xfa, 0x7f, + 0x88, 0x1d, 0xc3, 0x4c, 0x6a, 0xfb, 0x0b, 0xc6, + 0x57, 0xc3, 0xd8, 0x24, 0x47, 0x41, 0xbd, 0x27, + 0xc4, 0xd4, 0x49, 0xfb, 0x52, 0xe6, 0x77, 0x5f, + 0x0a, 0xdf, 0xea, 0xd5, 0xd3, 0x22, 0xc3, 0x53, + 0x16, 0xf3, 0x1b, 0x7b, 0x09, 0xd7, 0x10, 0x0e, + 0x23, 0xae, 0x16, 0x8a, 0x93, 0xcb, 0xc9, 0xb7, + 0xb8, 0xff, 0xd2, 0x50, 0x1f, 0x25, 0xa7, 0x71, + 0x8f, 0x3f, 0xc0, 0xe1, 0x37, 0x10, 0x0b, 0x43, + 0x6e, 0x2b, 0x16, 0x59, 0x8f, 0x77, 0x77, 0x6b, + 0x77, 0xce, 0x76, 0x6b, 0x37, 0x81, 0xaf, 0x83, + 0x42, 0x92, 0x93, 0xe5, 0x39, 0xca, 0xd2, 0x20, + 0x2e, 0xcf, 0x24, 0x26, 0x4c, 0x51, 0x1c, 0x58, + 0xc5, 0x8d, 0x05, 0x11, 0xdf, 0xae, 0x51, 0x38, + 0xde, 0xab, 0x4e, 0x04, 0xc8, 0x24, 0x24, 0x0d, + 0xd5, 0x9c, 0x5b, 0x2b, 0xe6, 0x0d, 0x83, 0x95, + 0xcd, 0x1c, 0x89, 0xa1, 0xaf, 0x67, 0x47, 0xfb, + 0x08, 0x02, 0xf8, 0x8b, 0x63, 0x05, 0x73, 0x20, + 0x64, 0xd7, 0x52, 0x15, 0xa4, 0x5d, 0x63, 0x73, + 0x73, 0x12, 0x0b, 0xdd, 0xfe, 0x9f, 0xb7, 0xe8, + 0xa8, 0x94, 0x3a, 0x86, 0xff, 0xcf, 0x7d, 0x24, + 0xbd, 0xb9, 0xea, 0x68, 0x23, 0xf4, 0x07, 0xc3, + 0xfe, 0x63, 0xd0, 0xab, 0x65, 0x8a, 0xf0, 0x6d, + 0x81, 0x8c, 0xc8, 0x0e, 0xc6, 0x6b, 0xdd, 0x2e, + 0x65, 0x9b, 0x17, 0xcf, 0x82, 0x69, 0x46, 0xba, + 0x62, 0x5d, 0x31, 0x33, 0x60, 0x18, 0x94, 0xa5, + 0x77, 0x24, 0xc6, 0x45, 0xe5, 0xb3, 0xd5, 0x12, + 0x10, 0xc9, 0x22, 0x98, 0xf9, 0xca, 0x20, 0x89, + 0x79, 0x04, 0x08, 0xf5, 0x1c, 0xf8, 0x50, 0x8c, + 0x25, 0xaa, 0x90, 0x90, 0x44, 0xbc, 0xfb, 0x5d, + 0x3f, 0xf8, 0x38, 0x64, 0xca, 0x8d, 0xff, 0x17, + 0xce, 0x70, 0x51, 0x90, 0x75, 0x6b, 0x7d, 0x64, + 0x43, 0x56, 0xcd, 0xf8, 0x85, 0x93, 0x65, 0x09, + 0x81, 0x30, 0x76, 0x79, 0xcc, 0xdf, 0x9c, 0x6d, + 0xff, 0x89, 0x38, 0x60, 0xbf, 0x07, 0xcb, 0x2f, + 0xc9, 0x87, 0xd7, 0xac, 0x74, 0x19, 0x57, 0x90, + 0x5e, 0x69, 0x61, 0xf6, 0xca, 0xea, 0x45, 0x6b, + 0xe2, 0xfe, 0x2c, 0xff, 0x1b, 0x23, 0x15, 0x52, + 0xdd, 0x57, 0xfe, 0x1d, 0x10, 0xea, 0x0f, 0xce, + 0x98, 0xe7, 0x47, 0x27, 0xec, 0x36, 0xe5, 0x68, + 0x17, 0xcf, 0xdc, 0xb9, 0xef, 0x6a, 0xbc, 0xec, + 0x78, 0x08, 0x64, 0x06, 0xe1, 0x1c, 0xc6, 0x87, + 0xd6, 0x0a, 0xb1, 0x81, 0xc6, 0xb6, 0xf8, 0x8b, + 0xe3, 0x19, 0x8c, 0xce, 0x46, 0x40, 0xc5, 0xc2, + 0xae, 0x50, 0x26, 0x4a, 0x90, 0x91, 0x8d, 0xfe, + 0x6b, 0x7d, 0x0a, 0x54, 0x4a, 0x4b, 0x48, 0x74, + 0x4a, 0x37, 0x21, 0x7f, 0xdd, 0x87, 0xa3, 0x1e, + 0xac, 0xcd, 0xf5, 0x9e, 0x75, 0xa2, 0x52, 0x63, + 0x76, 0xca, 0x9e, 0x02, 0xeb, 0xe6, 0xa6, 0x73, + 0xad, 0xea, 0xe8, 0x3e, 0x6f, 0x44, 0xed, 0xe8, + 0x01, 0x29, 0x19, 0x6a, 0x20, 0x35, 0xa7, 0xf0, + 0xf1, 0xaf, 0xc0, 0x3b, 0xb1, 0xd5, 0xe4, 0xfb, + 0xf7, 0xd7, 0x2f, 0x33, 0x6c, 0x73, 0xfd, 0xe5, + 0x5c, 0x63, 0xf6, 0x1c, 0x06, 0x13, 0xaf, 0xc1, + 0x80, 0x55, 0x07, 0xae, 0x8c, 0x13, 0x74, 0xf6, + 0xe0, 0x54, 0x15, 0xd8, 0xe0, 0xa5, 0x03, 0xcf, + 0x22, 0xbe, 0x18, 0xef, 0x26, 0xad, 0x9c, 0x9d, + 0x51, 0xb1, 0x3b, 0x37, 0x03, 0xbf, 0xf0, 0xc5, + 0xcb, 0x6c, 0x5d, 0x30, 0xa9, 0x5a, 0x10, 0x90, + 0xfa, 0xb4, 0xd4, 0x0e, 0x6b, 0x4a, 0x0a, 0x6c, + 0x9d, 0x2e, 0x69, 0xe8, 0xec, 0x69, 0xe2, 0x50, + 0xab, 0x2f, 0xdc, 0xff, 0xaf, 0xac, 0x65, 0xe7, + 0xf0, 0xc1, 0x6f, 0x7c, 0x2d, 0xa1, 0xeb, 0x97, + 0x90, 0x7c, 0x1e, 0xa8, 0x53, 0x1b, 0x87, 0xc5, + 0xa9, 0xa1, 0xcf, 0x86, 0x7e, 0x11, 0xf8, 0xd6, + 0x14, 0xda, 0x19, 0x81, 0x19, 0xb4, 0x45, 0x1c, + 0x7c, 0xb9, 0x96, 0xa2, 0xac, 0x79, 0x24, 0x94, + 0x7c, 0xb2, 0x1e, 0x83, 0xea, 0xc4, 0xb9, 0xd2, + 0x0d, 0x4c, 0x55, 0x3d, 0x15, 0x7b, 0x65, 0xd8, + 0xff, 0x03, 0x5d, 0xed, 0x3c, 0x94, 0x76, 0x19, + 0x40, 0x3b, 0xcc, 0x45, 0xbe, 0x91, 0x19, 0x8c, + 0x75, 0xe5, 0xd2, 0xbe, 0x67, 0x40, 0xb1, 0x67, + 0x8e, 0x2a, 0x34, 0xd5, 0x99, 0xee, 0xd9, 0x4f, + 0x89, 0x7c, 0xf0, 0xd6, 0x93, 0x59, 0x4b, 0x3a, + 0x8d, 0xe6, 0xbd, 0xde, 0xce, 0xef, 0x8b, 0x3c, + 0xe3, 0xf7, 0x06, 0x33, 0x27, 0x8d, 0xd9, 0x22, + 0x1a, 0x65, 0x40, 0xfc, 0x69, 0x1b, 0x7d, 0xf0, + 0xed, 0xe4, 0xe0, 0x7f, 0x6d, 0x23, 0xed, 0x11, + 0xd1, 0x07, 0xb0, 0x2f, 0x8a, 0xbf, 0x51, 0x37, + 0x22, 0x04, 0xed, 0x93, 0xea, 0x1d, 0x0b, 0x30, + 0x15, 0x89, 0x22, 0x7a, 0x45, 0x56, 0x99, 0xc6, + 0xac, 0xd6, 0xce, 0x61, 0xea, 0xb2, 0x59, 0xe8, + 0xb5, 0xfc, 0x87, 0xa7, 0xfe, 0x09, 0xa2, 0x0d, + 0x5e, 0xbe, 0xb9, 0xd4, 0x9a, 0x1b, 0x60, 0xda, + 0xb9, 0x32, 0xf1, 0x30, 0x3e, 0xb2, 0x45, 0x6d, + 0x55, 0x0c, 0x2c, 0x4b, 0x9a, 0xc0, 0xbb, 0x8e, + 0xac, 0x9c, 0x95, 0x5f, 0x08, 0x88, 0xa0, 0x53, + 0x05, 0x75, 0x8d, 0x9e, 0x9d, 0x3f, 0x0f, 0xdd, + 0x50, 0x0d, 0xf8, 0x11, 0xbd, 0xf9, 0xfb, 0x22, + 0x5c, 0x7b, 0x9e, 0x7c, 0x8e, 0x2f, 0x0e, 0xdb, + 0xb8, 0x1d, 0x0c, 0x5e, 0x82, 0xf3, 0x8e, 0xec, + 0x32, 0x1c, 0x59, 0x73, 0xa5, 0xf3, 0x5b, 0x47, + 0x00, 0x64, 0x89, 0x68, 0x3b, 0xaf, 0xe8, 0xe2, + 0x9b, 0xa6, 0xac, 0x2c, 0xf9, 0x2b, 0x92, 0xf3, + 0xf0, 0x5b, 0xcc, 0x75, 0x22, 0xd5, 0xf4, 0x2b, + 0x06, 0x96, 0xc8, 0x50, 0xee, 0xac, 0x62, 0x16, + 0x45, 0x9e, 0xbc, 0xcc, 0x8f, 0x5a, 0x66, 0xc6, + 0x30, 0x7c, 0xe0, 0x22, 0xcc, 0xb9, 0xda, 0x0b, + 0x0a, 0xbd, 0x2a, 0x2e, 0x46, 0x7d, 0xb6, 0x86, + 0x70, 0xa3, 0x16, 0x49, 0x85, 0x28, 0x7b, 0xe9, + 0x00, 0x6b, 0xfa, 0x06, 0xb0, 0xeb, 0xbd, 0x67, + 0x28, 0x6f, 0x27, 0xd7, 0x9c, 0x7f, 0xda, 0xec, + 0xf4, 0x7e, 0x55, 0xe1, 0x0c, 0x29, 0x61, 0x7a, + 0xf5, 0xb6, 0xb8, 0xa5, 0xef, 0x36, 0x6a, 0xad, + 0x59, 0x22, 0xbd, 0x3d, 0xad, 0x86, 0xe7, 0x4c, + 0x69, 0x26, 0x0f, 0xbf, 0x67, 0xad, 0x65, 0x32, + 0xbd, 0x21, 0xd6, 0x59, 0x6b, 0xe3, 0xda, 0xc1, + 0x6f, 0x82, 0x41, 0x2c, 0xaa, 0xe4, 0x8c, 0xfc, + 0x7c, 0x61, 0x28, 0x51, 0x52, 0x3d, 0xf1, 0x84, + 0xb5, 0x0b, 0xfd, 0x1f, 0x2a, 0x06, 0x2e, 0x30, + 0xed, 0x63, 0x43, 0xc9, 0x83, 0x97, 0xb1, 0xd4, + 0x80, 0x6f, 0x2c, 0x50, 0xec, 0x20, 0x95, 0x42, + 0xa0, 0x34, 0x94, 0x1a, 0xa9, 0x5e, 0x5b, 0x59, + 0xe3, 0x39, 0xac, 0xbd, 0x2f, 0x77, 0x36, 0x59, + 0x9c, 0xc3, 0x3c, 0x66, 0x87, 0xf5, 0x81, 0x4b, + 0xb0, 0x10, 0x4a, 0xe6, 0x46, 0xe7, 0xce, 0x93, + 0x7b, 0x24, 0x6b, 0x2e, 0xc1, 0xe5, 0xaf, 0x4b, + 0x71, 0x22, 0xad, 0x88, 0xda, 0x55, 0xcb, 0xe0, + 0x73, 0xd1, 0x65, 0x7d, 0xa5, 0x7f, 0x36, 0xbc, + 0x42, 0xc2, 0x78, 0x9f, 0x88, 0xe8, 0xdb, 0xff, + 0x8a, 0x5a, 0x80, 0x34, 0x3a, 0x23, 0x4c, 0x8a, + 0x81, 0xff, 0xbd, 0xb7, 0x88, 0xd0, 0x73, 0x07, + 0x8a, 0x4e, 0xa7, 0x4a, 0x61, 0x0f, 0x1f, 0x1c, + 0xe7, 0x34, 0x37, 0x1c, 0x53, 0x90, 0x3b, 0xa4, + 0x32, 0x6c, 0x6d, 0xe8, 0x00, 0xde, 0xe0, 0x0c, + 0x5e, 0x06, 0xef, 0xb8, 0x48, 0x2e, 0xb3, 0xda, + 0xac, 0x92, 0x4d, 0x0d, 0x95, 0x75, 0x44, 0x01, + 0x6f, 0x97, 0xc3, 0x29, 0x76, 0x33, 0x36, 0x9a, + 0xae, 0xfb, 0x1b, 0x43, 0xe5, 0xb1, 0x54, 0x3a, + 0x9c, 0x76, 0x7f, 0x76, 0x83, 0xc9, 0x9c, 0xd6, + 0x56, 0x59, 0x83, 0xa9, 0xde, 0xd7, 0xb0, 0xf3, + 0x34, 0x11, 0x31, 0x06, 0x8e, 0xe9, 0xd4, 0x79, + 0xd5, 0x3d, 0x31, 0x6b, 0x59, 0xe9, 0x54, 0x69, + 0x12, 0xfd, 0x44, 0x59, 0x4e, 0x1b, 0x3b, 0xb4, + 0x12, 0xe9, 0xfb, 0xb0, 0xb4, 0x84, 0xb9, 0x7d, + 0xea, 0x4f, 0xd1, 0x5f, 0xd0, 0x3e, 0xce, 0xef, + 0x5c, 0xf7, 0xea, 0x55, 0xa0, 0x8f, 0xa8, 0xa7, + 0x98, 0xe7, 0xa1, 0x6b, 0x3f, 0xba, 0x5a, 0x32, + 0x4b, 0xfa, 0x31, 0xb6, 0x63, 0x86, 0x19, 0x00, + 0xa2, 0x6d, 0x7d, 0x15, 0x56, 0x05, 0x68, 0xa3, + 0xe0, 0xf3, 0xd4, 0x82, 0xcf, 0xeb, 0xd4, 0x1c, + 0xd0, 0xb6, 0x14, 0x5e, 0x9e, 0x6b, 0xed, 0x7a, + 0x02, 0x1a, 0xcd, 0x09, 0xdc, 0x26, 0x98, 0x50, + 0x11, 0x34, 0x39, 0x50, 0x5a, 0x70, 0x79, 0x85, + 0xca, 0xd2, 0xf2, 0x0c, 0x0d, 0x12, 0x1f, 0x2e, + 0x41, 0x46, 0x51, 0x72, 0x75, 0x78, 0x8c, 0xa4, + 0xaf, 0xba, 0xca, 0xd3, 0xdf, 0xea, 0xf8, 0x09, + 0x0b, 0x36, 0x45, 0x4f, 0x77, 0x83, 0xae, 0xbc, + 0xc5, 0xce, 0xe1, 0xf6, 0x1d, 0x1e, 0x38, 0x56, + 0x9c, 0x9f, 0xb1, 0xbd, 0xda, 0xe7, 0xf0, 0xf4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0b, 0x1f, 0x2c, 0x38, + }, + }, diff --git a/crypto/ml_dsa/dilithium_selftest.c b/crypto/ml_dsa/dilithium_s= elftest.c new file mode 100644 index 000000000000..60955f4021dd --- /dev/null +++ b/crypto/ml_dsa/dilithium_selftest.c @@ -0,0 +1,112 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* + * Copyright (C) 2025 Red Hat, Inc. All Rights Reserved. + * Written by David Howells (dhowells@redhat.com) + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include "dilithium.h" + +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("Leancrypto ML-DSA/Dilithium tests"); +MODULE_AUTHOR("David Howells "); + +struct dilithium_testvector { + u16 pk_len; + u16 msg_len; + u16 sig_len; + const char *what; + const char *algo; + const u8 *pk; + const u8 *sig; + const u8 *msg; +}; + +/* + * Use rejection test vector which will cover all rejection code paths + * as generated with the dilithium_edge_case_tester. + * + * For FIPS 140: The test vectors cover the requirements of IG 10.3.A. + */ +static const struct dilithium_testvector dilithium44_testvectors[] =3D { +#include "dilithium_pure_rejection_vectors_44.h" +}; + +/* + * Allow kunit to free a crypto signature processing object. + */ +static void __kunit_crypto_free_sig(void *sig) +{ + crypto_free_sig(sig); +} + +/* + * Allow kunit to allocate a crypto signature processing object. + */ +static struct crypto_sig *kunit_crypto_alloc_sig(struct kunit *test, + const char *alg_name, + u32 type, u32 mask) +{ + struct crypto_sig *sig; + + sig =3D crypto_alloc_sig(alg_name, 0, 0); + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, sig); + + kunit_add_action_or_reset(test, __kunit_crypto_free_sig, sig); + return sig; +} + +/* + * Force the freeing of a signature. + */ +static void kunit_crypto_free_sig(struct kunit *test, void *sig) +{ + kunit_release_action(test, __kunit_crypto_free_sig, sig); +} + +static void dilithium_sigver_test_one(struct kunit *test, int index, + const struct dilithium_testvector *tc) +{ + struct crypto_sig *sig; + int ret; + + sig =3D kunit_crypto_alloc_sig(test, tc->algo, 0, 0); + if (IS_ERR(sig)) + return; + + ret =3D crypto_sig_set_pubkey(sig, tc->pk, tc->pk_len); + KUNIT_ASSERT_EQ_MSG(test, ret, 0, "Can't set public key"); + + ret =3D crypto_sig_verify(sig, tc->sig, tc->sig_len, tc->msg, tc->msg_len= ); + KUNIT_ASSERT_EQ_MSG(test, ret, 0, "Verify failed"); + + kunit_crypto_free_sig(test, sig); +} + +static void dilithium44_kunit_test(struct kunit *test) +{ + const struct dilithium_testvector *tc =3D dilithium44_testvectors; + int count =3D ARRAY_SIZE(dilithium44_testvectors); + + for (int index =3D 0; index < count; index++) { + dilithium_sigver_test_one(test, index, &tc[index]); + } + + KUNIT_SUCCEED(test); +} + +static struct kunit_case __refdata dilithium_kunit_cases[] =3D { + KUNIT_CASE(dilithium44_kunit_test), + {} +}; + +static struct kunit_suite dilithium_kunit_suite =3D { + .name =3D "ml-dsa", + .test_cases =3D dilithium_kunit_cases, +}; + +kunit_test_suites(&dilithium_kunit_suite); From nobody Fri Dec 19 17:16:03 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C693B34FF76 for ; Thu, 6 Nov 2025 17:45:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451153; cv=none; b=WDw4hT5czXuBCNhRmtXT+9gSIniL9jWj1gzKqbcO9zIRoHuENZybhU67QOmaUPxVWEIW95CdDc29nZa6lFlMKVIwM2B7Pg1v3E3srHorfRjdkTZr9e/SEHGsCSFFu0uQsaDR06QPnzz331bJA64fZdrX7Z3UF7cLVVsXYE5iKfE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451153; c=relaxed/simple; bh=3DIh6SEIL6g3x5tFqXH5St+ala9cdu83p5+1vLXm2iA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Bcrw3E9pZEvR2NNQ73jQlL5rel5ByawIBd3dxIH8Z+wMGOfgaXnZFS1ujM1Cnged+l/XFpKoE0aw6uPkDUAUcaWoq9nmOzCA4hoJwBn/gz+bNhxJNdu/R6DAXt3nCnbFbB/iGcI1+QbvPL9qopANxr0aLYWrD9LuXwdGkB7u+so= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=NhN08HJa; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="NhN08HJa" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762451132; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5C11EefuEAALDWrA6sWv69kdvFkCkaOOcr1q5D5wpqM=; b=NhN08HJaaKXqL+EF/c//3hzD1Qif7Z8sTv0DRxX1uInLiGK2MKvXP8KU0kYdVZByvUwV0j k+cYfe1AUqK06xLTYs27D3Urit7a/YvPicmHM6HSB8j8+IyS7uOI7iEdKL/UDfH8kYcCiz xbnali67u0cyff4SBgHkgN2ZFy6xxuI= Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-209-1RHqpJgSP46LmtyvRsuWsA-1; Thu, 06 Nov 2025 12:45:29 -0500 X-MC-Unique: 1RHqpJgSP46LmtyvRsuWsA-1 X-Mimecast-MFC-AGG-ID: 1RHqpJgSP46LmtyvRsuWsA_1762451127 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D66B61956094; Thu, 6 Nov 2025 17:45:26 +0000 (UTC) Received: from warthog.procyon.org.com (unknown [10.42.28.6]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id BD12A1800451; Thu, 6 Nov 2025 17:45:22 +0000 (UTC) From: David Howells To: Herbert Xu Cc: David Howells , Eric Biggers , Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , "Jason A . Donenfeld" , Ard Biesheuvel , Stephan Mueller , Lukas Wunner , Ignat Korchagin , linux-crypto@vger.kernel.org, keyrings@vger.kernel.org, linux-modules@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 4/8] crypto: Add ML-DSA-65 pure rejection test vectors as a kunit test Date: Thu, 6 Nov 2025 17:44:48 +0000 Message-ID: <20251106174456.31818-5-dhowells@redhat.com> In-Reply-To: <20251106174456.31818-1-dhowells@redhat.com> References: <20251106174456.31818-1-dhowells@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 Content-Type: text/plain; charset="utf-8" Add the "Pure rejection tests" from Stephan Mueller's Leancrypto implementation of ML-DSA/Dilithium 65 to the kernel as a kunit test. Signed-off-by: David Howells cc: Stephan Mueller cc: Eric Biggers cc: Jason A. Donenfeld cc: Ard Biesheuvel cc: Herbert Xu cc: linux-crypto@vger.kernel.org --- .../dilithium_pure_rejection_vectors_65.h | 4741 +++++++++++++++++ crypto/ml_dsa/dilithium_selftest.c | 15 + 2 files changed, 4756 insertions(+) create mode 100644 crypto/ml_dsa/dilithium_pure_rejection_vectors_65.h diff --git a/crypto/ml_dsa/dilithium_pure_rejection_vectors_65.h b/crypto/m= l_dsa/dilithium_pure_rejection_vectors_65.h new file mode 100644 index 000000000000..ed552ed6868f --- /dev/null +++ b/crypto/ml_dsa/dilithium_pure_rejection_vectors_65.h @@ -0,0 +1,4741 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ + { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa65", + .pk_len =3D DILITHIUM65_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM65_PUBLICKEYBYTES]){ + 0x9f, 0x55, 0x1e, 0x7f, 0x9c, 0x08, 0xb2, 0x83, + 0xfd, 0x5b, 0xa2, 0xac, 0x4f, 0x26, 0xc2, 0xf5, + 0x06, 0x05, 0x96, 0x08, 0x24, 0xad, 0xec, 0xe4, + 0x99, 0xcc, 0x6c, 0xbd, 0x55, 0x37, 0x15, 0x94, + 0xab, 0x31, 0x9e, 0x56, 0xe5, 0xe4, 0x55, 0xec, + 0x4d, 0x49, 0x5b, 0x5a, 0x7a, 0xe8, 0xc3, 0x4a, + 0x08, 0x44, 0x4a, 0xc2, 0x2d, 0xe4, 0x61, 0x33, + 0x90, 0x20, 0x71, 0x45, 0xa5, 0x45, 0xd0, 0x83, + 0x2b, 0x32, 0x6c, 0xa7, 0x9e, 0x76, 0xcd, 0xfb, + 0x58, 0x15, 0x9e, 0x74, 0x0d, 0x67, 0x57, 0xb1, + 0x06, 0x5b, 0x5d, 0xd5, 0x1c, 0xbb, 0x95, 0x40, + 0x1c, 0x71, 0x31, 0x03, 0xef, 0xff, 0x04, 0x6b, + 0xdd, 0xa2, 0xf0, 0x32, 0x00, 0x72, 0xbc, 0x87, + 0xb6, 0x2c, 0x1f, 0x90, 0x7f, 0x92, 0xa0, 0xb2, + 0x04, 0xdd, 0xa9, 0xaf, 0x7f, 0x01, 0x28, 0x4c, + 0xb2, 0x57, 0x2d, 0x56, 0x93, 0xd0, 0xc7, 0x54, + 0x02, 0x90, 0x57, 0x70, 0x23, 0x57, 0xe8, 0xe7, + 0x33, 0x32, 0x98, 0xfc, 0x9b, 0x8e, 0x6e, 0x7b, + 0xaa, 0x5d, 0xb5, 0x4e, 0xe0, 0x5d, 0x97, 0xa3, + 0xea, 0x43, 0x7e, 0xb3, 0xa4, 0x8c, 0xcf, 0xdc, + 0xc0, 0x51, 0xa7, 0x99, 0x45, 0x3d, 0x3c, 0xa0, + 0xba, 0xc5, 0xff, 0xe1, 0x89, 0xb3, 0x7d, 0xc3, + 0xdc, 0xe2, 0x23, 0x81, 0xff, 0xa9, 0xc7, 0x93, + 0xc6, 0x67, 0xad, 0x94, 0xcf, 0xeb, 0x91, 0x78, + 0x15, 0x25, 0xf7, 0xf5, 0x06, 0x08, 0x2f, 0x0c, + 0xee, 0x0b, 0x6a, 0x06, 0x59, 0xe0, 0x1f, 0x2e, + 0x5a, 0x12, 0x06, 0xf5, 0xf4, 0x8e, 0x75, 0x57, + 0xa9, 0x33, 0x23, 0x0f, 0xc2, 0x6f, 0x02, 0xf8, + 0x68, 0x0f, 0x62, 0x02, 0x81, 0xfe, 0x03, 0x7c, + 0xaf, 0xd7, 0x42, 0x5b, 0xcc, 0xe7, 0x2b, 0xea, + 0x49, 0xab, 0x03, 0x6d, 0x0a, 0x02, 0xae, 0x47, + 0x79, 0xce, 0xfd, 0x18, 0x76, 0x07, 0x9e, 0xa6, + 0xbf, 0x7e, 0x8d, 0x73, 0xf9, 0x44, 0xeb, 0x8c, + 0xc5, 0x59, 0xb7, 0x19, 0xf6, 0x73, 0x53, 0x42, + 0x2a, 0x55, 0x7b, 0xb4, 0x56, 0x49, 0x08, 0x9e, + 0x9a, 0x65, 0x60, 0x70, 0x1d, 0xbd, 0xc6, 0x85, + 0x29, 0xde, 0xfe, 0x44, 0xae, 0xdf, 0x25, 0xfd, + 0x5b, 0x74, 0x6c, 0x96, 0xe6, 0x81, 0x37, 0x80, + 0xe0, 0x9e, 0xf3, 0x75, 0x63, 0xb4, 0xc9, 0x2f, + 0x71, 0xe6, 0xeb, 0xdf, 0xaf, 0x7e, 0xff, 0x9e, + 0xe0, 0xbf, 0xca, 0xca, 0x11, 0xed, 0xc6, 0x04, + 0xd8, 0x49, 0x13, 0x2c, 0x63, 0xf1, 0xb3, 0x17, + 0x74, 0xd9, 0x50, 0x3f, 0xb9, 0x29, 0x0e, 0x48, + 0xa7, 0xf0, 0xdc, 0x78, 0x18, 0x0e, 0x9f, 0xb7, + 0xde, 0x36, 0x79, 0x67, 0xa4, 0x23, 0x08, 0xe7, + 0x62, 0xe8, 0xa4, 0xe5, 0xcf, 0xff, 0x35, 0x55, + 0x36, 0x2e, 0x3a, 0xe4, 0x45, 0x6a, 0x80, 0xf2, + 0xca, 0xe7, 0x40, 0x79, 0x14, 0xc4, 0x62, 0x38, + 0xbb, 0xd0, 0x4e, 0x6c, 0xb5, 0x85, 0x42, 0x3f, + 0x35, 0xf7, 0xd7, 0x54, 0xb8, 0x2b, 0x8b, 0xd5, + 0x6f, 0x16, 0x61, 0x27, 0x23, 0xac, 0xdb, 0xea, + 0x9b, 0x3b, 0x99, 0xcd, 0x79, 0xe6, 0x12, 0x09, + 0x99, 0x09, 0xa4, 0xe1, 0x88, 0x25, 0x00, 0x9e, + 0x60, 0x16, 0x63, 0xd7, 0x42, 0x9b, 0xcc, 0x36, + 0x9a, 0x8d, 0xa3, 0x75, 0x36, 0xa1, 0xa8, 0xfc, + 0xa2, 0xfe, 0x29, 0x26, 0x4c, 0x93, 0x21, 0x44, + 0x6b, 0x1c, 0xba, 0xbd, 0xef, 0xff, 0x6d, 0x1f, + 0x2b, 0x6c, 0x66, 0x81, 0x9a, 0x3a, 0x1d, 0x0b, + 0xd7, 0x24, 0xd4, 0xb8, 0x93, 0xb5, 0x22, 0xf9, + 0xd2, 0xf4, 0xa5, 0x05, 0x78, 0x38, 0xae, 0x58, + 0xf6, 0x50, 0x8f, 0x47, 0x1d, 0xf3, 0xfb, 0x0d, + 0x04, 0x14, 0xd1, 0xd6, 0xd8, 0x2e, 0xf2, 0xbd, + 0xf5, 0x71, 0x86, 0x4c, 0xdd, 0x61, 0x24, 0x18, + 0x5b, 0x54, 0xf5, 0xcd, 0x99, 0x89, 0x01, 0x8e, + 0xd1, 0x19, 0x52, 0xbc, 0x45, 0xed, 0x0e, 0xec, + 0x72, 0x2f, 0x5a, 0xe7, 0xdf, 0x36, 0x1c, 0x57, + 0x9f, 0xb2, 0x8b, 0xf2, 0x78, 0x1b, 0x3e, 0xc5, + 0x48, 0x1f, 0x27, 0x04, 0x76, 0x10, 0x44, 0xee, + 0x5c, 0x68, 0x8f, 0xca, 0xd7, 0x31, 0xfc, 0x5c, + 0x40, 0x03, 0x2e, 0xbd, 0x1d, 0x59, 0x13, 0x57, + 0xbc, 0x33, 0xc6, 0xa1, 0xa3, 0xe5, 0x55, 0x79, + 0x9b, 0x7e, 0x49, 0xbb, 0x23, 0x96, 0xc3, 0x1c, + 0xfe, 0x66, 0xeb, 0x5b, 0x5f, 0xe5, 0x03, 0xc9, + 0xa4, 0xac, 0x4d, 0xc4, 0x50, 0xbb, 0xd3, 0xc1, + 0x91, 0x48, 0xe0, 0x93, 0x92, 0x2a, 0xdb, 0x41, + 0x37, 0x98, 0xbc, 0xa2, 0x7a, 0x09, 0x92, 0x0b, + 0x1c, 0xe6, 0x4b, 0x1e, 0x8e, 0x78, 0x81, 0x74, + 0x7d, 0x6b, 0x71, 0xd5, 0xe7, 0x0e, 0x7b, 0xc2, + 0x74, 0x5d, 0x89, 0xf1, 0xfa, 0x59, 0xaa, 0xf7, + 0x86, 0x66, 0x7e, 0xc2, 0x9c, 0xf4, 0xd5, 0x8d, + 0xc0, 0xb7, 0xb7, 0xa2, 0xd5, 0xcd, 0x51, 0xc3, + 0x7d, 0xa9, 0x5e, 0x46, 0xba, 0x06, 0xa3, 0x4d, + 0x60, 0xd6, 0x68, 0xc6, 0xf9, 0x63, 0x88, 0x17, + 0x5c, 0x20, 0xe1, 0xc4, 0x0f, 0x3f, 0xc1, 0xa9, + 0xa7, 0x3e, 0x39, 0xef, 0x2f, 0xaf, 0xc4, 0x69, + 0x29, 0xe3, 0xd4, 0x8d, 0xe0, 0x0e, 0x88, 0xc2, + 0x93, 0x43, 0xfb, 0x28, 0xcf, 0x5d, 0x85, 0x50, + 0xf7, 0xeb, 0x42, 0xf5, 0x87, 0xde, 0xa5, 0x65, + 0xef, 0x43, 0x0c, 0x57, 0x76, 0x09, 0xf4, 0x5f, + 0xde, 0x81, 0x0a, 0xd9, 0x59, 0x41, 0xa4, 0x6a, + 0xb7, 0x05, 0xc7, 0xa5, 0xfe, 0x49, 0xd5, 0x9b, + 0x57, 0x13, 0x14, 0x66, 0xe2, 0xb9, 0xcc, 0x09, + 0x35, 0xd4, 0xb0, 0xe0, 0xd1, 0x0d, 0x7e, 0x50, + 0x48, 0x45, 0x21, 0x00, 0x67, 0xb2, 0xad, 0xa7, + 0x46, 0xe2, 0x6f, 0x70, 0xe5, 0x3c, 0x88, 0x04, + 0xaa, 0x21, 0xde, 0x03, 0xb6, 0x6f, 0xfe, 0x43, + 0x51, 0xdc, 0x2e, 0x5c, 0x6c, 0x77, 0x8f, 0x8e, + 0x9d, 0x1a, 0x5b, 0x35, 0xc5, 0xe4, 0x48, 0x82, + 0x17, 0x4b, 0xf0, 0xea, 0xc9, 0x0e, 0xd2, 0x8f, + 0xcd, 0xd5, 0x01, 0xbd, 0x7f, 0x0f, 0xf5, 0xae, + 0x92, 0x28, 0x1e, 0x2c, 0xf4, 0xe9, 0x03, 0xf7, + 0x0a, 0xeb, 0x84, 0x18, 0xa1, 0x37, 0x38, 0x8a, + 0x11, 0xa2, 0x5d, 0x8c, 0xf6, 0xe4, 0x3f, 0x5b, + 0x87, 0x07, 0x6b, 0xb4, 0x07, 0xe0, 0x8f, 0x30, + 0xc4, 0xfa, 0x27, 0xae, 0xfc, 0x02, 0xd1, 0x21, + 0x5c, 0xbc, 0x0b, 0x93, 0x6e, 0x7e, 0xf9, 0x6b, + 0x80, 0x7a, 0x25, 0x84, 0x20, 0xf1, 0x6a, 0xfa, + 0x75, 0xed, 0x57, 0x61, 0x62, 0xa7, 0xf6, 0x5b, + 0xe1, 0xb0, 0x38, 0xc8, 0xe9, 0x6d, 0x3f, 0xef, + 0x1e, 0x99, 0x0b, 0xb7, 0xc8, 0x9f, 0x76, 0x5c, + 0x04, 0x1f, 0x02, 0x92, 0x00, 0xa7, 0x38, 0x3d, + 0x00, 0x3b, 0xa7, 0xbc, 0x39, 0x6e, 0xab, 0xf5, + 0x10, 0xa8, 0xba, 0xd6, 0x28, 0x6b, 0x0e, 0x00, + 0x48, 0xf9, 0x3b, 0x5c, 0xde, 0x59, 0x93, 0x46, + 0xd6, 0x61, 0x52, 0x81, 0x71, 0x0f, 0x0e, 0x61, + 0xac, 0xc6, 0x7f, 0x15, 0x93, 0xa7, 0xc1, 0x16, + 0xb5, 0xef, 0x85, 0xd1, 0xa7, 0x61, 0xc2, 0x85, + 0x1d, 0x61, 0xc6, 0xae, 0xb3, 0x9e, 0x8d, 0x23, + 0xa3, 0xc8, 0xd5, 0xf2, 0xc7, 0x1b, 0x7e, 0xef, + 0xd2, 0xdf, 0x25, 0xaf, 0x4e, 0x81, 0x15, 0x59, + 0xe5, 0x36, 0xb1, 0xf1, 0xd5, 0xda, 0x58, 0xd8, + 0xd9, 0x0d, 0x6d, 0xc9, 0x25, 0xb5, 0xe8, 0x1d, + 0x3b, 0xca, 0x2d, 0xab, 0xf2, 0xe2, 0xe9, 0x55, + 0xd7, 0xf4, 0xc7, 0xd0, 0x57, 0x7a, 0x86, 0x15, + 0x0a, 0x5a, 0x8b, 0xd7, 0x3f, 0x66, 0x0f, 0x80, + 0xb4, 0xe0, 0x5c, 0x33, 0xed, 0xaf, 0x1b, 0x3b, + 0x6d, 0x1c, 0xd9, 0x8c, 0xb5, 0x96, 0xa3, 0xfb, + 0xcf, 0xcc, 0x97, 0x1c, 0xae, 0x06, 0x19, 0x41, + 0x61, 0xf8, 0x97, 0x6b, 0x82, 0x5e, 0x1c, 0xbf, + 0x6f, 0x43, 0x3d, 0xe5, 0x00, 0xf5, 0xfe, 0x66, + 0x48, 0x26, 0x31, 0xa1, 0x72, 0x67, 0x6e, 0xd4, + 0x5b, 0x6f, 0x66, 0xde, 0x70, 0x8b, 0x2b, 0xc3, + 0xa2, 0x30, 0xe9, 0x55, 0xc8, 0xff, 0xf8, 0xd0, + 0xdd, 0xa9, 0x21, 0x85, 0x6e, 0x6c, 0x82, 0x66, + 0xcc, 0x52, 0xf0, 0x9e, 0x1e, 0xb5, 0x3a, 0xff, + 0x4c, 0xf3, 0xae, 0x02, 0xc3, 0x4b, 0x76, 0x25, + 0xbd, 0xb0, 0x21, 0x54, 0x61, 0xda, 0x16, 0xd3, + 0x23, 0x86, 0x41, 0xa1, 0x4c, 0x59, 0x15, 0x95, + 0x65, 0x85, 0xb6, 0x8e, 0xa6, 0x37, 0xc0, 0xa2, + 0x71, 0x1d, 0x67, 0x44, 0x7b, 0xe5, 0x4c, 0x4f, + 0xb6, 0x2c, 0x46, 0xf7, 0x29, 0xa5, 0xf2, 0xd3, + 0x51, 0x19, 0x91, 0x4d, 0xa7, 0xb5, 0x05, 0xb9, + 0x6e, 0x61, 0x6e, 0xf8, 0xc0, 0x01, 0xe5, 0x41, + 0x0a, 0x89, 0x64, 0x77, 0xf2, 0xc8, 0x63, 0x2d, + 0x9d, 0x27, 0x7f, 0x47, 0x30, 0x39, 0xdf, 0xb6, + 0x6e, 0x4f, 0x00, 0x3f, 0x15, 0xc6, 0xaf, 0x62, + 0xdf, 0x3f, 0x47, 0xe8, 0x42, 0x90, 0x77, 0x23, + 0x7a, 0xaa, 0x99, 0x53, 0x03, 0x63, 0x60, 0x59, + 0x07, 0x52, 0x3c, 0xb5, 0x67, 0x59, 0xfe, 0x08, + 0xe6, 0x43, 0x0f, 0x3b, 0x08, 0x7c, 0xc7, 0x07, + 0x3c, 0xfa, 0x65, 0xea, 0x69, 0x51, 0x41, 0x31, + 0xb3, 0x05, 0x69, 0xba, 0x2c, 0xbf, 0x89, 0x25, + 0x9e, 0xfe, 0x07, 0x13, 0x78, 0x0e, 0x16, 0x54, + 0xdf, 0x23, 0xdf, 0x10, 0x69, 0x79, 0xd0, 0x33, + 0xd7, 0x21, 0x8b, 0xc8, 0x2a, 0xd0, 0x74, 0x0a, + 0xfa, 0xb1, 0x6f, 0xa3, 0xcb, 0x1d, 0xca, 0x4f, + 0x00, 0x46, 0x6c, 0x42, 0x09, 0xe0, 0x30, 0x89, + 0x08, 0x33, 0x9b, 0x7b, 0x7b, 0x0f, 0x69, 0x5c, + 0x0d, 0x34, 0x91, 0xfc, 0xfe, 0x22, 0x82, 0x02, + 0xcd, 0xfa, 0x97, 0xe8, 0x28, 0x1d, 0xbc, 0x13, + 0x0b, 0xfd, 0x47, 0xa1, 0x7e, 0xa2, 0x86, 0x4d, + 0x6f, 0x12, 0x51, 0x35, 0x7d, 0x76, 0x8a, 0x58, + 0x05, 0xb6, 0x39, 0xa1, 0x2f, 0xd7, 0xda, 0xaf, + 0x00, 0xa0, 0x1a, 0x94, 0xd8, 0x23, 0x34, 0x99, + 0x5c, 0xaf, 0xcc, 0x15, 0x4b, 0x56, 0xb2, 0xd2, + 0x81, 0x07, 0xd3, 0xf3, 0x47, 0xa2, 0x45, 0x93, + 0xcb, 0xae, 0xa7, 0x6b, 0x3f, 0xf9, 0xea, 0xfc, + 0x0e, 0x64, 0xf2, 0x93, 0x7f, 0x24, 0x22, 0x73, + 0x86, 0xc7, 0x2d, 0x75, 0x9b, 0x41, 0x8b, 0xfb, + 0x3b, 0x26, 0x2a, 0xe5, 0x0b, 0xd4, 0x00, 0xe3, + 0x2c, 0x69, 0x49, 0x62, 0x6c, 0x13, 0x58, 0x6e, + 0xac, 0x43, 0xe5, 0x2b, 0x3b, 0x88, 0xdc, 0xd4, + 0x41, 0xe8, 0xee, 0x4e, 0xc3, 0x28, 0x91, 0x17, + 0x9a, 0x5a, 0xdb, 0x80, 0x8b, 0x4d, 0x64, 0xcc, + 0xbe, 0x66, 0xa4, 0x62, 0xfb, 0x13, 0x44, 0x10, + 0xd9, 0xe4, 0xd5, 0xa5, 0xae, 0x9e, 0x42, 0x50, + 0xfc, 0x78, 0xad, 0xfa, 0xc4, 0xd0, 0x5a, 0x60, + 0x9b, 0x45, 0x2b, 0x61, 0x5c, 0x57, 0xb5, 0x92, + 0x28, 0xe9, 0xf5, 0x35, 0x67, 0xc1, 0x5e, 0xa8, + 0x1c, 0x99, 0x36, 0x38, 0xb8, 0x5c, 0xff, 0x3d, + 0xa0, 0xfc, 0xb0, 0xbc, 0x3d, 0x2c, 0xb4, 0x36, + 0x17, 0xb4, 0x6d, 0xb5, 0x39, 0x45, 0xa9, 0x2a, + 0x6b, 0xa2, 0x24, 0x44, 0x30, 0xab, 0x2c, 0x82, + 0x36, 0xdc, 0xd6, 0x36, 0x5d, 0x0a, 0xdc, 0xee, + 0x0f, 0x2b, 0x28, 0x99, 0xdc, 0x67, 0x0d, 0xea, + 0x6e, 0x42, 0xb9, 0x45, 0x7f, 0xd2, 0x96, 0x1e, + 0x60, 0x42, 0xeb, 0x1e, 0x5f, 0x8e, 0xa9, 0xdc, + 0xd3, 0x8a, 0xd6, 0xbd, 0x4e, 0x1f, 0x42, 0x75, + 0x1d, 0xe2, 0xc6, 0x11, 0xc9, 0x80, 0x1f, 0xfe, + 0x99, 0x52, 0x4d, 0x7b, 0x35, 0xf7, 0xb7, 0xc3, + 0xee, 0xd6, 0x94, 0xf5, 0x74, 0xa0, 0x69, 0xcd, + 0x1f, 0x2b, 0xd0, 0x87, 0xf7, 0x8c, 0x69, 0xc5, + 0x96, 0x70, 0x91, 0xe8, 0x3d, 0xd2, 0xcc, 0xf1, + 0x4c, 0xcd, 0xe2, 0x14, 0x00, 0x10, 0x4a, 0xd9, + 0x6a, 0x5d, 0x65, 0x2c, 0x4b, 0x79, 0x0c, 0xc4, + 0x78, 0x5e, 0xc8, 0xc5, 0x37, 0x74, 0x6d, 0x50, + 0x5c, 0x34, 0x1f, 0xe0, 0xf4, 0xe3, 0xe1, 0x86, + 0x68, 0xb1, 0xea, 0x70, 0xf0, 0xae, 0xe4, 0x59, + 0xa1, 0x08, 0x7e, 0x35, 0xa3, 0x16, 0xd2, 0xb0, + 0xa3, 0xd4, 0xb0, 0x74, 0x8c, 0x05, 0x79, 0x73, + 0xfb, 0xe6, 0x65, 0x96, 0x15, 0x07, 0xd5, 0xaf, + 0x88, 0x9e, 0x6b, 0xf0, 0xbb, 0x3f, 0xe6, 0xd1, + 0x6a, 0xe7, 0xc9, 0xae, 0xd9, 0xb0, 0x16, 0x1c, + 0x40, 0xeb, 0xdb, 0xc1, 0xbf, 0x83, 0xdb, 0x8a, + 0x4f, 0x96, 0xca, 0xd7, 0x22, 0x06, 0x87, 0x08, + 0x9d, 0x65, 0x2f, 0xd9, 0x8e, 0x95, 0x6c, 0xcc, + 0xbf, 0x76, 0x2a, 0xea, 0x5c, 0x8e, 0x5b, 0x17, + 0x0f, 0x75, 0x7b, 0xfa, 0xf9, 0xfb, 0xaa, 0x92, + 0xc7, 0x7e, 0x63, 0x63, 0x54, 0xa4, 0xff, 0xf6, + 0xc0, 0xc0, 0xf5, 0x70, 0xd8, 0xe3, 0xa4, 0x79, + 0x16, 0xf0, 0x6f, 0x90, 0x5e, 0xb7, 0xab, 0x6f, + 0xab, 0x75, 0x3b, 0xe1, 0x4c, 0xa8, 0x0b, 0x72, + 0x5f, 0x5f, 0x11, 0x22, 0x36, 0x71, 0x20, 0xd3, + 0x5b, 0x5e, 0x07, 0x06, 0x76, 0x1a, 0xcc, 0x5e, + 0x7c, 0x97, 0x7d, 0xb2, 0x6b, 0xf8, 0x39, 0x89, + 0x37, 0xb6, 0x6d, 0xea, 0x74, 0x57, 0x28, 0xd7, + 0x0e, 0x9b, 0xeb, 0x28, 0x88, 0x90, 0xfd, 0x2d, + 0x16, 0x21, 0x74, 0x26, 0xc5, 0xb8, 0x44, 0xad, + 0x9f, 0x97, 0xf9, 0x65, 0x36, 0xd8, 0x00, 0x59, + 0x17, 0x49, 0xf9, 0xc7, 0xb3, 0x84, 0xb9, 0xe2, + 0x95, 0xe0, 0xd1, 0x7f, 0x5f, 0xaa, 0xd7, 0xfd, + 0x6a, 0x6a, 0x83, 0x14, 0x46, 0x1d, 0x12, 0x8d, + 0x09, 0xc3, 0xa5, 0xca, 0x72, 0xa3, 0x25, 0x65, + 0xb6, 0x40, 0x25, 0x04, 0x51, 0xab, 0x22, 0xeb, + 0xd7, 0x69, 0xc9, 0x22, 0x9c, 0xa0, 0x19, 0x5c, + 0x1a, 0xfd, 0x41, 0x8f, 0x98, 0xc5, 0x71, 0xb8, + 0x6f, 0x76, 0xae, 0xfa, 0x9b, 0x03, 0xab, 0x43, + 0x81, 0x3b, 0x66, 0xae, 0xf0, 0xd2, 0xb7, 0xee, + 0x9a, 0xe3, 0xae, 0x45, 0xc1, 0x86, 0xb0, 0xce, + 0x9e, 0x2b, 0xec, 0xb8, 0xcf, 0xca, 0x0e, 0x8c, + 0x33, 0xfa, 0xa7, 0xef, 0xf7, 0xfc, 0xa1, 0x41, + 0x49, 0xd3, 0x6d, 0xb5, 0x58, 0xe4, 0x0e, 0x24, + 0xd2, 0x8a, 0x74, 0xc9, 0x56, 0x2e, 0x53, 0xc7, + 0x7a, 0x38, 0x0f, 0x4b, 0xd9, 0xf9, 0x2f, 0xfa, + 0x7d, 0xee, 0x14, 0x18, 0xce, 0x75, 0x42, 0x6c, + 0x03, 0x34, 0xce, 0x80, 0xec, 0xf2, 0x05, 0xf0, + 0xdf, 0xcd, 0xf8, 0xdb, 0x26, 0x7d, 0xb6, 0x3d, + 0x28, 0x24, 0x7e, 0x7e, 0x39, 0x9f, 0xa6, 0xc6, + 0xeb, 0x2a, 0xc8, 0x17, 0x94, 0xa9, 0x89, 0xf5, + 0xdf, 0xcb, 0x77, 0xfd, 0xc9, 0x9e, 0x68, 0x98, + 0x7d, 0x04, 0x50, 0x3c, 0x64, 0x1d, 0x66, 0xb0, + 0x97, 0x06, 0xb6, 0x08, 0x5b, 0xe4, 0x17, 0x44, + 0xd6, 0x94, 0x39, 0x6b, 0x03, 0x2c, 0xcb, 0x5a, + 0x8d, 0x86, 0x08, 0x23, 0x4f, 0x95, 0xa8, 0x1a, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x1a, 0x84, 0x21, 0x0d, 0x35, 0x7a, 0x88, 0xc8, + 0x6a, 0x11, 0xe3, 0x15, 0x24, 0xec, 0x0d, 0x2e, + 0x76, 0xb9, 0xcf, 0x2b, 0x04, 0x25, 0x16, 0xae, + 0x62, 0x42, 0xa0, 0x20, 0x68, 0x25, 0x3e, 0xb4, + 0x75, 0xa7, 0x1d, 0x64, 0xc3, 0xd1, 0x08, 0x07, + 0x67, 0xb6, 0xf7, 0x76, 0x76, 0xf6, 0xd6, 0x62, + 0x66, 0x04, 0x89, 0x0c, 0x8f, 0x07, 0xac, 0xc8, + 0x51, 0x77, 0xd9, 0x47, 0x5e, 0xb5, 0x22, 0x20, + }, + .sig_len =3D DILITHIUM65_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM65_CRYPTO_BYTES]){ + 0xda, 0xcf, 0x8d, 0x67, 0x59, 0x60, 0x6c, 0x39, + 0x2d, 0x89, 0xb6, 0xa1, 0xf3, 0x8c, 0x70, 0xcf, + 0x25, 0x86, 0x21, 0xa1, 0x9f, 0x20, 0x9e, 0xf5, + 0xd2, 0xdd, 0xbd, 0x99, 0xfa, 0xe4, 0xab, 0x77, + 0x31, 0x65, 0x18, 0xa1, 0xd1, 0x3f, 0x21, 0x70, + 0x36, 0xe1, 0xf9, 0x5c, 0x28, 0xb6, 0x7d, 0x34, + 0xae, 0x66, 0xc9, 0x1c, 0x8e, 0xc6, 0xf9, 0x45, + 0x8c, 0xa9, 0xb2, 0xfb, 0x0f, 0x5b, 0xb8, 0xf9, + 0xf5, 0xe2, 0x37, 0x79, 0x12, 0xda, 0xa7, 0x72, + 0x9e, 0x0d, 0xf8, 0x88, 0x5b, 0x34, 0x49, 0x6c, + 0xed, 0xa3, 0x7f, 0x86, 0xd3, 0xd9, 0x2f, 0x44, + 0x08, 0x0d, 0xb7, 0xdb, 0x4a, 0xce, 0x02, 0x14, + 0x02, 0xd6, 0x40, 0x75, 0xe3, 0xc0, 0x97, 0xfc, + 0x6c, 0x6a, 0x88, 0x29, 0x0c, 0xe2, 0x3a, 0x2b, + 0x28, 0x82, 0x8f, 0x27, 0x09, 0x69, 0x91, 0xc6, + 0xc3, 0xb7, 0x07, 0x61, 0x86, 0x8d, 0x89, 0x8a, + 0xd5, 0x00, 0x3b, 0x4b, 0xfc, 0x6f, 0xb3, 0x3f, + 0x4c, 0x93, 0x31, 0xfc, 0x88, 0x53, 0x26, 0xea, + 0xe5, 0x3a, 0xfc, 0xc1, 0x59, 0x16, 0xf0, 0xb7, + 0xac, 0xde, 0x1e, 0xd8, 0x74, 0x85, 0x72, 0xd9, + 0xbb, 0xbe, 0x76, 0x32, 0x25, 0x9d, 0x21, 0xbc, + 0xfd, 0x8d, 0x32, 0xfe, 0xae, 0x24, 0xe5, 0x4a, + 0xcc, 0x5d, 0x15, 0x23, 0xd3, 0x57, 0xe7, 0xa9, + 0x2c, 0x31, 0xd7, 0xc5, 0x6b, 0x70, 0x6c, 0x22, + 0x5a, 0x13, 0x1f, 0x76, 0x13, 0x78, 0x6f, 0xac, + 0x42, 0x4c, 0x46, 0x81, 0xa2, 0x20, 0x91, 0x30, + 0xed, 0xcb, 0x90, 0xfe, 0x3c, 0xa3, 0xc7, 0xb4, + 0x1f, 0x21, 0x1d, 0x98, 0x74, 0x6a, 0x3e, 0xc8, + 0xcc, 0xd2, 0x68, 0x87, 0x69, 0xa9, 0xdf, 0x50, + 0xd5, 0x0a, 0x8e, 0x10, 0x54, 0xab, 0xea, 0x65, + 0x2a, 0x52, 0xd7, 0x22, 0xae, 0x2f, 0x1e, 0xc3, + 0x16, 0x58, 0x20, 0x18, 0x6d, 0x35, 0x46, 0x31, + 0x43, 0x5d, 0x62, 0xfb, 0xb1, 0x47, 0x32, 0xfa, + 0x14, 0xcc, 0x51, 0xa3, 0xcd, 0x99, 0x4f, 0x97, + 0x0f, 0xca, 0x24, 0x93, 0x17, 0xea, 0xa3, 0xf3, + 0x1f, 0xbe, 0xb5, 0xa3, 0xac, 0x80, 0xcc, 0x20, + 0x3b, 0xa6, 0xd3, 0x32, 0x72, 0x4e, 0xd9, 0x25, + 0xf9, 0xc2, 0x24, 0x15, 0xbd, 0x1e, 0x1e, 0x41, + 0x8c, 0x18, 0x8c, 0x58, 0xe8, 0x75, 0x20, 0xff, + 0xa3, 0xf4, 0xd4, 0xab, 0x75, 0x78, 0x4e, 0xbb, + 0x7c, 0x94, 0x93, 0x28, 0x5b, 0x07, 0x3a, 0x3c, + 0xc9, 0xf1, 0x55, 0x3e, 0x33, 0xed, 0xf8, 0x72, + 0x55, 0xab, 0x5a, 0xea, 0xbe, 0x65, 0xfa, 0x81, + 0x50, 0xc0, 0x9d, 0x2d, 0xfb, 0x04, 0x25, 0x7c, + 0xb9, 0xee, 0xe2, 0xa3, 0x00, 0x44, 0xd3, 0x9d, + 0xee, 0x4f, 0x80, 0x77, 0xfb, 0x26, 0x6b, 0x07, + 0xd0, 0xff, 0x82, 0x39, 0x0e, 0x2b, 0x47, 0xa3, + 0xe7, 0x3e, 0xc5, 0x4e, 0x15, 0x8a, 0x48, 0x28, + 0xfb, 0xf7, 0xa4, 0x86, 0xfb, 0x77, 0x60, 0xcd, + 0xc5, 0x68, 0x96, 0xd7, 0x4c, 0x3c, 0xf2, 0x51, + 0x71, 0x79, 0x2e, 0x2e, 0x57, 0x10, 0xa7, 0xfc, + 0xd1, 0xd4, 0x61, 0x71, 0x81, 0x85, 0x74, 0x09, + 0x7d, 0x80, 0xd0, 0xc2, 0xe9, 0xff, 0xb7, 0x88, + 0x53, 0x74, 0x1e, 0xb0, 0xca, 0x65, 0x48, 0x8e, + 0xdb, 0x59, 0x3a, 0xcb, 0x80, 0xeb, 0xfd, 0xd2, + 0xc9, 0x38, 0x43, 0xae, 0x76, 0xf2, 0xbb, 0x51, + 0xb2, 0xcb, 0xe6, 0x85, 0x31, 0xb5, 0x62, 0xd4, + 0x5e, 0x48, 0x08, 0xf1, 0x40, 0x5b, 0x16, 0x83, + 0x5e, 0xa5, 0x9c, 0x6b, 0x91, 0x49, 0x44, 0xff, + 0x3b, 0xa9, 0x2b, 0xf3, 0x06, 0x33, 0x9e, 0x6e, + 0x3c, 0x66, 0x7e, 0x27, 0xa2, 0x59, 0x7b, 0xe3, + 0xb6, 0xb4, 0x28, 0xeb, 0x93, 0x35, 0x87, 0xac, + 0x0e, 0x0b, 0x7e, 0xbc, 0x35, 0x28, 0x72, 0x1f, + 0x26, 0x59, 0xd0, 0x1f, 0x63, 0xe4, 0x86, 0x5d, + 0x70, 0xf3, 0xa8, 0xa4, 0xb8, 0xcd, 0xb3, 0xf8, + 0x8d, 0xaa, 0x41, 0xd2, 0xcc, 0x0b, 0x15, 0x66, + 0x22, 0x83, 0x92, 0xe3, 0x0b, 0xf9, 0xea, 0xa0, + 0x33, 0xa1, 0x4e, 0x92, 0xae, 0x81, 0x95, 0xa4, + 0x58, 0x3f, 0xa9, 0x15, 0x52, 0xf9, 0xda, 0xb7, + 0x10, 0x8d, 0xc6, 0xab, 0x77, 0xe9, 0xbe, 0xad, + 0xc9, 0x3a, 0x6a, 0x8d, 0x92, 0x6c, 0x69, 0xff, + 0x31, 0x49, 0x25, 0x04, 0xc8, 0x93, 0x6f, 0xc8, + 0xe7, 0x60, 0x7a, 0x76, 0xb5, 0xc1, 0x07, 0xef, + 0xa3, 0x39, 0xa6, 0xf2, 0x36, 0x04, 0xde, 0x3c, + 0x4a, 0x4e, 0x96, 0xbd, 0x64, 0x26, 0x80, 0x01, + 0x88, 0x47, 0xd2, 0xa4, 0x46, 0xcd, 0xe1, 0x30, + 0x7f, 0xa3, 0x00, 0x11, 0x38, 0x55, 0xfa, 0xeb, + 0x10, 0xeb, 0xa0, 0x65, 0x04, 0x09, 0xc8, 0xde, + 0x9c, 0x73, 0xba, 0x0c, 0xbd, 0xd3, 0xa5, 0x84, + 0x5e, 0xb9, 0x3b, 0xd4, 0x94, 0xbd, 0xa6, 0x53, + 0xbe, 0x93, 0x69, 0x3e, 0xaa, 0x32, 0x31, 0x06, + 0xc8, 0x1b, 0x4a, 0x48, 0xb5, 0x17, 0x85, 0xbf, + 0x72, 0xec, 0xf5, 0x29, 0x8a, 0xd8, 0xeb, 0x99, + 0x8b, 0x74, 0x84, 0x57, 0x8c, 0xe1, 0x85, 0x94, + 0xa0, 0xbc, 0x7a, 0x14, 0xf0, 0xf4, 0x8b, 0x25, + 0x37, 0x43, 0xa1, 0x34, 0x09, 0x71, 0xca, 0x5c, + 0x9f, 0x08, 0x38, 0xd9, 0x9c, 0x0c, 0x0e, 0xcb, + 0xe4, 0xad, 0x4b, 0x2a, 0x89, 0x67, 0xf8, 0x29, + 0x6c, 0x69, 0x0e, 0x5d, 0xca, 0xfa, 0xa6, 0x6b, + 0x0e, 0xb5, 0x94, 0x17, 0x71, 0xf0, 0xc9, 0xcd, + 0x02, 0x1d, 0xa5, 0xd5, 0xc6, 0xa7, 0xbc, 0x5f, + 0x6e, 0x67, 0x43, 0x68, 0xce, 0xac, 0x54, 0x81, + 0x2a, 0x25, 0x22, 0x52, 0x35, 0xad, 0x7b, 0xd5, + 0x06, 0x8c, 0x00, 0xfb, 0xca, 0xc4, 0x0a, 0x49, + 0x1e, 0xc8, 0xeb, 0x77, 0xc1, 0x63, 0x23, 0x96, + 0xbd, 0x35, 0xfa, 0x13, 0xae, 0xbf, 0x1d, 0x1e, + 0x69, 0x8d, 0xb3, 0xe3, 0x07, 0xde, 0x4e, 0xd0, + 0x12, 0xa9, 0xc3, 0x36, 0x30, 0x46, 0xef, 0x92, + 0x76, 0x17, 0x8f, 0x10, 0xe7, 0xba, 0x99, 0x4b, + 0xdf, 0xad, 0xb8, 0x11, 0x80, 0xdf, 0xe7, 0xfd, + 0x80, 0x64, 0xf7, 0x2a, 0xac, 0x60, 0x2a, 0x54, + 0x8f, 0x4f, 0xaf, 0xaf, 0x60, 0xf9, 0x67, 0x20, + 0x80, 0x53, 0x5c, 0xb6, 0x81, 0xa6, 0x2a, 0x74, + 0x2d, 0xc5, 0x74, 0x2a, 0x95, 0x26, 0x13, 0x17, + 0x01, 0xdd, 0x31, 0xac, 0x5a, 0x05, 0xda, 0xde, + 0xba, 0xf6, 0x37, 0x13, 0x8d, 0xe4, 0xa8, 0x93, + 0x46, 0x9e, 0xa9, 0x82, 0x24, 0x7e, 0xc8, 0xda, + 0x63, 0x89, 0xcd, 0x33, 0xc9, 0xf7, 0xf9, 0x71, + 0x35, 0xe6, 0xa5, 0x5f, 0x6b, 0x3b, 0xbb, 0x0c, + 0xe0, 0xa4, 0x0b, 0xe3, 0x29, 0xc0, 0xae, 0x8e, + 0xce, 0x03, 0x09, 0x73, 0x0e, 0x1e, 0x9c, 0xe9, + 0x59, 0xb6, 0x8b, 0x78, 0x67, 0x32, 0x8b, 0xf1, + 0x93, 0xcc, 0x72, 0x1b, 0x6f, 0xa2, 0xf1, 0x04, + 0x9c, 0xfa, 0x98, 0x02, 0xca, 0xdf, 0x35, 0x3c, + 0x38, 0xac, 0xa8, 0xdb, 0x90, 0xae, 0xaa, 0xf9, + 0x70, 0xfb, 0xed, 0xbd, 0xa6, 0x25, 0x14, 0x58, + 0x09, 0x8a, 0x36, 0xaf, 0x41, 0x09, 0x19, 0xcb, + 0xd3, 0x25, 0x5d, 0x0e, 0xe6, 0x20, 0x14, 0x71, + 0x24, 0x79, 0x19, 0x55, 0xaf, 0x51, 0x5b, 0xa4, + 0xc0, 0x93, 0x9e, 0xdd, 0x88, 0x31, 0x13, 0x96, + 0xbf, 0xca, 0x0a, 0xd7, 0xbc, 0xc4, 0x00, 0xa1, + 0x10, 0x2d, 0x92, 0x79, 0xf9, 0x14, 0xdb, 0xd2, + 0xba, 0x74, 0xfa, 0xa8, 0xe5, 0x40, 0x14, 0xc2, + 0x56, 0x3c, 0x7f, 0x50, 0x07, 0x60, 0x86, 0x93, + 0x51, 0x2e, 0xf9, 0x70, 0x61, 0x70, 0x0e, 0xa4, + 0x87, 0x75, 0xcc, 0x6c, 0x72, 0xb7, 0x68, 0x23, + 0xb7, 0x3d, 0x76, 0xaf, 0x96, 0x9b, 0x4a, 0xe5, + 0x12, 0x28, 0x4a, 0x8f, 0x79, 0x34, 0xff, 0xec, + 0x92, 0xeb, 0x6b, 0xaf, 0xc9, 0xbd, 0xc1, 0x77, + 0x07, 0xd0, 0xfa, 0x55, 0x57, 0x10, 0x0c, 0xad, + 0x29, 0x2a, 0x79, 0xd6, 0x09, 0x9e, 0x7d, 0x18, + 0xd4, 0xd6, 0xdd, 0x72, 0x1a, 0x8f, 0x24, 0x11, + 0x70, 0xd2, 0x52, 0x36, 0x0f, 0x38, 0x79, 0x38, + 0x4a, 0x02, 0x4f, 0x73, 0x2a, 0xaa, 0x6a, 0xb5, + 0x0c, 0x72, 0x32, 0x85, 0x21, 0x76, 0x1a, 0x8a, + 0x7d, 0x51, 0x0e, 0xf1, 0xf9, 0x19, 0xfa, 0x6b, + 0x9b, 0x22, 0x71, 0x8c, 0x13, 0xcc, 0xba, 0x7d, + 0xee, 0xd8, 0x34, 0xf6, 0x85, 0x60, 0xe1, 0xe4, + 0x59, 0x6e, 0x32, 0x60, 0xd9, 0xfa, 0xb7, 0x56, + 0x54, 0x25, 0xd1, 0x73, 0x6a, 0xf2, 0xa0, 0xc7, + 0xa0, 0x67, 0x10, 0x89, 0x9c, 0x27, 0x5f, 0x7f, + 0x2e, 0x5a, 0x29, 0x70, 0x7a, 0x7b, 0xaf, 0x21, + 0xd0, 0xf4, 0x06, 0xb9, 0x2d, 0xf1, 0xb8, 0x32, + 0xed, 0xc5, 0xc9, 0xac, 0x2f, 0x54, 0x0a, 0xf9, + 0x08, 0x39, 0x39, 0x7d, 0x1d, 0xaf, 0xb4, 0x5f, + 0x4d, 0x75, 0xc3, 0xe8, 0x52, 0x3a, 0x47, 0x72, + 0x2c, 0xa9, 0x2d, 0xcb, 0x74, 0x06, 0xfe, 0x69, + 0xd3, 0xf3, 0x1a, 0xb2, 0xd3, 0x01, 0xed, 0x6c, + 0xc1, 0xca, 0x4f, 0xaf, 0x11, 0x9b, 0xa2, 0x27, + 0x2a, 0x59, 0x56, 0x58, 0xdf, 0x79, 0x8b, 0xc9, + 0x87, 0xe9, 0x58, 0x81, 0x48, 0xc6, 0xb6, 0x7d, + 0x60, 0x54, 0x87, 0x9c, 0x61, 0xbb, 0x4b, 0xbb, + 0x61, 0xac, 0x0a, 0x5a, 0x66, 0x7e, 0x70, 0x8b, + 0xfd, 0x92, 0x76, 0x4a, 0xa9, 0xa5, 0xc3, 0xf4, + 0xf2, 0x93, 0x48, 0xc4, 0xf3, 0x91, 0x2b, 0x60, + 0x04, 0x0e, 0xb0, 0x6b, 0x60, 0x5e, 0xf0, 0xf1, + 0x54, 0x41, 0x56, 0xdc, 0x25, 0x57, 0xc3, 0xb6, + 0x0b, 0x5e, 0x15, 0xb5, 0x2a, 0x36, 0x4f, 0xe7, + 0x1d, 0x70, 0xa8, 0xa7, 0xec, 0xd6, 0x74, 0xba, + 0xa4, 0x79, 0x83, 0x7c, 0x9e, 0x1a, 0x5d, 0x32, + 0xc8, 0xcb, 0x41, 0xca, 0x04, 0xec, 0x0b, 0x18, + 0x54, 0xe1, 0x67, 0xbf, 0xa8, 0x7a, 0xc3, 0x0f, + 0x27, 0x2a, 0xaf, 0x2a, 0x41, 0x19, 0x1f, 0xe8, + 0xa2, 0xe8, 0xfa, 0xfc, 0x88, 0x41, 0x46, 0xc3, + 0x1c, 0x44, 0xe5, 0xee, 0x47, 0xec, 0xfe, 0xbf, + 0xb8, 0x29, 0x2e, 0xae, 0x47, 0x0a, 0x42, 0x69, + 0x8a, 0x9a, 0x94, 0x97, 0x9e, 0xf5, 0xb6, 0x37, + 0x1c, 0x10, 0xc2, 0x99, 0xa8, 0xe9, 0x9e, 0x0e, + 0x6e, 0xb5, 0xbe, 0xba, 0x1f, 0x77, 0xa6, 0x35, + 0x02, 0x1e, 0x8c, 0xe6, 0x02, 0x53, 0xe2, 0x9a, + 0xdd, 0x09, 0x6e, 0x9b, 0x7a, 0x36, 0x4f, 0x38, + 0x8d, 0x4c, 0xa4, 0xb4, 0xff, 0x90, 0x76, 0x0d, + 0x11, 0x7d, 0xe1, 0xe9, 0x7f, 0x2a, 0x4a, 0x80, + 0xe0, 0xd8, 0x3c, 0x23, 0xd2, 0xa5, 0xe5, 0x39, + 0x77, 0xbf, 0x3d, 0x71, 0x0d, 0x45, 0xbb, 0x39, + 0x66, 0x1a, 0x4d, 0x59, 0xb7, 0xd0, 0x0a, 0xee, + 0x87, 0xee, 0x1f, 0xcf, 0x6f, 0xc2, 0x50, 0xb1, + 0xa5, 0x4c, 0xee, 0x40, 0x69, 0xd7, 0x36, 0x38, + 0x14, 0xcd, 0x6a, 0x9a, 0x90, 0x40, 0xad, 0x76, + 0xf1, 0xa6, 0xd4, 0x3c, 0x75, 0x10, 0xba, 0xcb, + 0xab, 0x22, 0x28, 0x5f, 0x0c, 0xe0, 0xee, 0xf4, + 0xfd, 0x61, 0x52, 0x0a, 0x59, 0xfe, 0x61, 0xc5, + 0x40, 0xf9, 0x91, 0x8e, 0x36, 0x29, 0x63, 0x6c, + 0x6e, 0x45, 0xa5, 0x42, 0xe3, 0x36, 0x90, 0xe7, + 0x90, 0x9f, 0x58, 0xbb, 0xf9, 0x1b, 0xee, 0x2c, + 0xbb, 0x3a, 0xfd, 0x3d, 0xbe, 0x3d, 0x45, 0xf0, + 0xc2, 0x18, 0xaa, 0x46, 0x10, 0x23, 0xe9, 0x63, + 0xba, 0x7f, 0xc2, 0xe1, 0xf4, 0x05, 0xdd, 0x4a, + 0x7c, 0xa8, 0xab, 0xa9, 0xbd, 0x6f, 0xdf, 0x48, + 0x59, 0x11, 0xd4, 0xba, 0x75, 0xb6, 0x22, 0xd4, + 0xd7, 0x35, 0x6f, 0x27, 0x70, 0xc7, 0x3d, 0x90, + 0x06, 0x39, 0x2a, 0x16, 0xd0, 0x8b, 0xd7, 0xfb, + 0x5e, 0x85, 0x2e, 0xb0, 0xd8, 0xc7, 0xdb, 0xe5, + 0x24, 0x3a, 0x6e, 0xc4, 0x5e, 0xd4, 0x22, 0x25, + 0x14, 0xee, 0xa5, 0x30, 0x8b, 0xd6, 0x27, 0x61, + 0x33, 0x13, 0x46, 0x0b, 0x26, 0x45, 0xa6, 0xb4, + 0xfa, 0x8d, 0xa3, 0xf2, 0x27, 0xd2, 0xc5, 0x04, + 0xaa, 0x96, 0xa4, 0x55, 0xfa, 0x40, 0xf1, 0xfc, + 0x66, 0x33, 0x9e, 0x4b, 0x39, 0x75, 0xae, 0x7f, + 0x52, 0x87, 0x7b, 0x8a, 0xf9, 0x7d, 0x5f, 0x8a, + 0x7e, 0xf7, 0xfe, 0xc4, 0x7f, 0xf4, 0xf6, 0x9a, + 0x86, 0x78, 0x21, 0x02, 0x94, 0x9e, 0x50, 0x2d, + 0xdc, 0xd6, 0xa5, 0x53, 0xf1, 0xef, 0x06, 0xe8, + 0xb5, 0x46, 0x81, 0xcc, 0x91, 0x4f, 0x37, 0xee, + 0x27, 0xcb, 0x91, 0xad, 0xff, 0x1d, 0xd1, 0x00, + 0xa8, 0x96, 0x22, 0xaa, 0x63, 0x23, 0x2a, 0x7a, + 0x75, 0x6f, 0xe9, 0x2d, 0x26, 0xde, 0x11, 0x97, + 0x4b, 0x17, 0x3f, 0xde, 0x51, 0x1a, 0x22, 0xed, + 0x38, 0x6f, 0x3e, 0x7a, 0xd0, 0xd6, 0x60, 0x06, + 0x7e, 0x3f, 0xa4, 0x29, 0xfa, 0x18, 0x91, 0xda, + 0x73, 0x38, 0xe3, 0xe3, 0xb5, 0xc0, 0x5b, 0x4e, + 0xe8, 0x94, 0xea, 0x45, 0x6e, 0x5b, 0x50, 0xaa, + 0x38, 0xb6, 0x6f, 0xdb, 0x90, 0x1b, 0x3b, 0x82, + 0xbb, 0x0d, 0x38, 0xe3, 0xca, 0xd9, 0xf1, 0x2e, + 0x27, 0x4c, 0x2c, 0x5a, 0x42, 0xdf, 0x44, 0xc8, + 0x07, 0xe4, 0x95, 0xb5, 0xec, 0x91, 0x34, 0x1c, + 0x9a, 0x0c, 0x50, 0x1a, 0xce, 0x67, 0xe4, 0x4b, + 0x87, 0x61, 0x43, 0x95, 0x95, 0xb8, 0x8a, 0xf4, + 0xc9, 0x92, 0x33, 0x33, 0xe3, 0xfe, 0x98, 0x2a, + 0xae, 0x8e, 0xf2, 0x6b, 0x13, 0x7c, 0xe4, 0x44, + 0x40, 0x66, 0xea, 0x0c, 0xe4, 0xdb, 0x16, 0x65, + 0xa8, 0x8b, 0x37, 0x08, 0xec, 0x1e, 0xfc, 0xa6, + 0xd0, 0x9b, 0x9e, 0x0a, 0xd2, 0xe3, 0xcf, 0x5d, + 0xb2, 0xaf, 0x8e, 0x05, 0x7d, 0x8d, 0x84, 0xbc, + 0x9f, 0xb1, 0xe6, 0x6a, 0x2e, 0x4b, 0x6d, 0x64, + 0x91, 0x17, 0x9d, 0xb5, 0x35, 0x15, 0x02, 0xe9, + 0x1b, 0x85, 0xc1, 0x89, 0xc2, 0x5a, 0x32, 0x3a, + 0x80, 0x78, 0x5e, 0xcc, 0x50, 0x26, 0xf5, 0x11, + 0x01, 0x79, 0xf3, 0xaf, 0xb6, 0x40, 0x00, 0x73, + 0x8f, 0xeb, 0x5a, 0xd1, 0x26, 0x00, 0xe2, 0xa3, + 0xcd, 0xfd, 0xaa, 0x15, 0x5b, 0x98, 0x2a, 0x76, + 0x41, 0x07, 0xc2, 0xde, 0xb6, 0x71, 0xe7, 0xc3, + 0xe9, 0x92, 0xb3, 0xd8, 0xfe, 0xaf, 0x12, 0x61, + 0x86, 0x5b, 0x6e, 0x74, 0x45, 0x7b, 0x9b, 0x6f, + 0x1a, 0x13, 0x84, 0xf6, 0x31, 0x5f, 0x5b, 0x6c, + 0xde, 0x47, 0xb8, 0x73, 0x32, 0xc7, 0x94, 0x92, + 0xa5, 0xc3, 0x65, 0xdf, 0x96, 0x6c, 0xfd, 0xb7, + 0x80, 0xfb, 0x47, 0xba, 0x6e, 0x43, 0xb3, 0x7e, + 0x86, 0xc9, 0x97, 0x45, 0xde, 0x3f, 0x3a, 0xf6, + 0xb0, 0x9e, 0x9a, 0xcb, 0xfd, 0xf2, 0x5c, 0xba, + 0x6e, 0x3f, 0xed, 0xfa, 0x74, 0x84, 0xe2, 0xb1, + 0xae, 0x66, 0x57, 0x0b, 0x96, 0x6c, 0x77, 0xe4, + 0x8a, 0x67, 0x97, 0xc7, 0xe0, 0x44, 0xb2, 0x83, + 0x2d, 0x3c, 0x2e, 0x01, 0x19, 0x2e, 0x4c, 0x74, + 0xe1, 0x35, 0x73, 0xeb, 0x85, 0x63, 0x8c, 0x3a, + 0xb8, 0xbc, 0x25, 0x6a, 0x8d, 0xaf, 0xd2, 0xfb, + 0xef, 0xd3, 0x12, 0x93, 0x0b, 0x39, 0xfa, 0x66, + 0xbe, 0x3b, 0xfd, 0x6c, 0x0b, 0xbb, 0xb2, 0x5a, + 0x78, 0xa1, 0xcf, 0x8c, 0x7d, 0x60, 0x55, 0xeb, + 0x33, 0x4e, 0x8e, 0xf9, 0x19, 0x4d, 0x42, 0xd4, + 0xf8, 0xd8, 0xba, 0xad, 0x0a, 0x6e, 0x62, 0xd4, + 0xe1, 0x6a, 0xcc, 0xea, 0x09, 0x91, 0x8e, 0x62, + 0xc9, 0x1e, 0x9e, 0x48, 0xaa, 0xde, 0xf7, 0xa2, + 0x5a, 0xcb, 0x83, 0x20, 0xe8, 0xf5, 0xd1, 0xfe, + 0x9d, 0x18, 0x2f, 0xd6, 0xf8, 0x97, 0x17, 0xce, + 0xc2, 0x05, 0x08, 0xef, 0x61, 0x70, 0x9d, 0x95, + 0x79, 0x59, 0x4c, 0x06, 0x24, 0x3d, 0x24, 0x69, + 0xff, 0x46, 0xda, 0xbc, 0x71, 0x7a, 0x74, 0x93, + 0x58, 0xf5, 0xc8, 0x91, 0xfb, 0x66, 0xed, 0x78, + 0x8f, 0xf8, 0x28, 0xa8, 0x1d, 0xa5, 0x3a, 0x13, + 0x76, 0xc2, 0xcc, 0xba, 0xb9, 0x56, 0x29, 0x74, + 0xd6, 0x14, 0x75, 0x58, 0xe6, 0x2e, 0x79, 0x6e, + 0x9d, 0x41, 0x94, 0x8a, 0xcf, 0xf1, 0xb1, 0xe0, + 0x36, 0xe5, 0x89, 0x9a, 0x95, 0xa1, 0x11, 0xd1, + 0xbe, 0x45, 0xe4, 0xb3, 0xb0, 0x62, 0x32, 0x1d, + 0xba, 0xe0, 0xde, 0x57, 0x81, 0x0e, 0x01, 0x9b, + 0x52, 0x3d, 0xd5, 0xde, 0x3b, 0x3a, 0xdd, 0x8f, + 0xe3, 0x2e, 0xce, 0x1e, 0x89, 0x4d, 0x81, 0xf0, + 0xf6, 0x20, 0x63, 0x7a, 0x4c, 0xbb, 0x66, 0xe0, + 0xbe, 0x2b, 0xee, 0xd0, 0x3b, 0x60, 0x1e, 0x65, + 0xd1, 0x2c, 0x7c, 0x5c, 0x6c, 0x16, 0x5b, 0x90, + 0xc8, 0x05, 0x10, 0xf2, 0xde, 0x33, 0x90, 0x35, + 0x69, 0x24, 0x3f, 0xc1, 0x8f, 0x1e, 0x4a, 0x60, + 0xf1, 0x03, 0x65, 0x46, 0x40, 0x76, 0xe9, 0x83, + 0x97, 0xda, 0x0b, 0xb8, 0x22, 0xfa, 0x55, 0x99, + 0xfd, 0x18, 0x24, 0xd2, 0x66, 0xb0, 0x7b, 0x70, + 0x56, 0x93, 0xad, 0x09, 0x95, 0x8e, 0x1f, 0x2f, + 0xe8, 0x12, 0x55, 0xd4, 0x1f, 0xde, 0x09, 0x85, + 0x05, 0xd1, 0xd5, 0x10, 0x2c, 0x8c, 0x6b, 0x53, + 0x28, 0xce, 0x06, 0xc5, 0x52, 0x0f, 0xfa, 0x09, + 0x09, 0x23, 0x1b, 0xe3, 0xbf, 0xb1, 0x89, 0x72, + 0x26, 0x0d, 0xa6, 0xbb, 0x7d, 0x9e, 0xdc, 0xf8, + 0xf5, 0x0b, 0x8c, 0xe0, 0xbc, 0x97, 0x3b, 0x72, + 0xdd, 0xf5, 0x9d, 0xc5, 0xb6, 0x37, 0x2c, 0x76, + 0x5b, 0x58, 0x67, 0xdb, 0xed, 0x3b, 0x6e, 0xe5, + 0xe5, 0x6d, 0x6f, 0x0d, 0x7e, 0xff, 0xa9, 0x57, + 0x4a, 0x84, 0x85, 0x82, 0xac, 0x00, 0x50, 0xa3, + 0x4f, 0x87, 0xfe, 0x2a, 0x40, 0x52, 0x54, 0x81, + 0x69, 0x42, 0x0b, 0x0c, 0xd7, 0x18, 0x98, 0x01, + 0x8c, 0x5a, 0xa2, 0xf4, 0xe8, 0x61, 0xd1, 0x38, + 0xfd, 0x0f, 0x63, 0x75, 0xd3, 0x4b, 0x1d, 0xdc, + 0xdf, 0xb2, 0xeb, 0x94, 0x97, 0x5c, 0x2a, 0xb4, + 0x12, 0x5c, 0x49, 0x2b, 0xfc, 0xd0, 0x8d, 0xfb, + 0xe7, 0xb3, 0xcb, 0x0f, 0x3c, 0x2e, 0x04, 0x36, + 0xa8, 0x03, 0xc9, 0xd7, 0x11, 0x2d, 0x2a, 0x93, + 0xff, 0xda, 0x26, 0xb0, 0x54, 0x7e, 0xaf, 0x30, + 0x7d, 0xce, 0x46, 0x8a, 0x3d, 0x7c, 0xa4, 0x7a, + 0x2c, 0xfa, 0xba, 0xa1, 0xc9, 0x41, 0xd3, 0xb8, + 0x84, 0x03, 0x78, 0xdd, 0xe9, 0x57, 0x19, 0x62, + 0x62, 0xff, 0x5b, 0x3b, 0x48, 0x62, 0x0e, 0xee, + 0x19, 0xb0, 0x32, 0x6e, 0x6a, 0x07, 0xd8, 0x4e, + 0x25, 0x76, 0xa7, 0xe3, 0x98, 0xa1, 0x6f, 0xb6, + 0x99, 0x32, 0x67, 0x7d, 0x46, 0x42, 0x4a, 0x82, + 0xd1, 0x29, 0x1b, 0x87, 0xeb, 0x4b, 0x9e, 0xdf, + 0x69, 0x75, 0xbd, 0x4f, 0xd3, 0xde, 0xc9, 0x83, + 0xe6, 0xd6, 0xea, 0x03, 0x81, 0x12, 0xf3, 0x5d, + 0x99, 0xf1, 0xb1, 0xd9, 0x3e, 0xbe, 0xf3, 0xa8, + 0xdc, 0xb6, 0xf8, 0x4b, 0x9e, 0x26, 0x3f, 0xf0, + 0x7c, 0xb3, 0xf4, 0xca, 0x00, 0x6c, 0x6c, 0xe5, + 0x43, 0xa1, 0xfd, 0x3a, 0xf8, 0x8e, 0xe3, 0x9f, + 0x88, 0xc5, 0x44, 0xfd, 0x24, 0x69, 0x76, 0xd5, + 0xcb, 0xdc, 0x9d, 0x12, 0xf3, 0x13, 0x7e, 0xe7, + 0xc3, 0xa8, 0x6a, 0xb2, 0xe0, 0xb3, 0x1d, 0xab, + 0x3b, 0xc9, 0x77, 0x3d, 0x0f, 0xc3, 0xbe, 0x4b, + 0x8b, 0x28, 0xbd, 0x7c, 0xe6, 0xb2, 0x06, 0x1f, + 0xf9, 0x8f, 0x16, 0x62, 0xbf, 0xc7, 0x55, 0x73, + 0xd4, 0xf1, 0x5a, 0x95, 0x80, 0xa3, 0x4e, 0xaa, + 0x60, 0x17, 0x3c, 0xc9, 0x5e, 0xd4, 0x0c, 0x56, + 0x7a, 0x77, 0x8e, 0x7f, 0x67, 0x08, 0x2f, 0xd9, + 0x21, 0x19, 0xfd, 0x86, 0x8c, 0x23, 0x8d, 0xf6, + 0x92, 0x1f, 0x36, 0x2c, 0x7c, 0x83, 0xbd, 0x2f, + 0x6c, 0x63, 0x7c, 0xb7, 0x93, 0x74, 0x1b, 0xc2, + 0x95, 0x34, 0x26, 0x1e, 0x07, 0x87, 0x3a, 0xb6, + 0xe2, 0x39, 0x71, 0x9b, 0x20, 0xcd, 0x63, 0xf0, + 0xbf, 0x48, 0xb5, 0x0e, 0x49, 0x86, 0x50, 0x80, + 0xbd, 0xd6, 0x0e, 0xab, 0xd5, 0x69, 0x1b, 0xa4, + 0xb3, 0x63, 0x3c, 0x8f, 0xcb, 0x42, 0xdb, 0xd7, + 0x1a, 0xf4, 0xdf, 0x9e, 0x25, 0xfc, 0xd4, 0x00, + 0xcb, 0xec, 0x57, 0x69, 0x30, 0x15, 0x4d, 0x7a, + 0x69, 0x28, 0x2f, 0x2b, 0x34, 0x26, 0xd1, 0xe7, + 0x01, 0x42, 0x5e, 0x02, 0xe2, 0x75, 0xe8, 0x52, + 0x8a, 0xb4, 0x71, 0xfa, 0xc3, 0x3d, 0xe6, 0xac, + 0xeb, 0xf3, 0x93, 0xe0, 0x37, 0xcd, 0x66, 0x92, + 0x66, 0x2c, 0xfe, 0x4b, 0xd6, 0x3c, 0xf1, 0x57, + 0xe5, 0xcf, 0xf5, 0xd0, 0xdb, 0x0e, 0x1f, 0x82, + 0x65, 0x3b, 0xab, 0x69, 0x42, 0x53, 0x7d, 0xa4, + 0x7c, 0xb7, 0x86, 0xeb, 0x23, 0x45, 0xa8, 0x4a, + 0x73, 0xfc, 0x38, 0xc6, 0xe5, 0x2c, 0xab, 0x80, + 0xfb, 0x23, 0xb2, 0x0c, 0x53, 0x28, 0x21, 0x37, + 0x54, 0x9c, 0x72, 0x51, 0x0f, 0x44, 0x50, 0xd3, + 0xe1, 0xd5, 0xb2, 0x27, 0x83, 0xb6, 0xe9, 0x4d, + 0x64, 0x5c, 0x17, 0x0f, 0xe0, 0x13, 0xe4, 0x26, + 0x6b, 0xd0, 0xd8, 0x25, 0xe3, 0x69, 0x6a, 0x95, + 0x3f, 0x4a, 0x4e, 0xa0, 0x58, 0xbc, 0x28, 0x47, + 0x8b, 0x68, 0xe4, 0x41, 0x90, 0x46, 0x1b, 0x84, + 0xa0, 0x7b, 0x46, 0x46, 0x03, 0xee, 0x21, 0x0d, + 0x34, 0xed, 0xff, 0x15, 0x57, 0x06, 0xdf, 0x71, + 0x09, 0xb2, 0x66, 0x0d, 0x6e, 0xcc, 0xa5, 0x0c, + 0xaf, 0x3f, 0x24, 0x8f, 0xd1, 0xc8, 0x44, 0x86, + 0xaf, 0xbf, 0xeb, 0x2f, 0xb9, 0xee, 0xa7, 0xcf, + 0xe4, 0xe8, 0xec, 0x47, 0x09, 0xd8, 0x95, 0x9e, + 0x3c, 0xda, 0x92, 0x41, 0x61, 0xf5, 0xc3, 0xec, + 0x00, 0xe4, 0xa3, 0x0d, 0x4a, 0xb3, 0xf6, 0x82, + 0x05, 0x38, 0x70, 0x6a, 0xd1, 0x28, 0x2c, 0xb3, + 0xc6, 0xbb, 0x38, 0xb3, 0x06, 0x7f, 0xd6, 0x4c, + 0xe7, 0xfb, 0xef, 0x0d, 0x52, 0x66, 0xbe, 0xd8, + 0xa6, 0x6f, 0xe8, 0xd9, 0x42, 0x4f, 0xad, 0xe8, + 0xe8, 0x6c, 0xf9, 0xe9, 0x42, 0xd9, 0x66, 0x6e, + 0xec, 0xfe, 0xf5, 0x91, 0xbf, 0x0a, 0x98, 0xd8, + 0x7b, 0x23, 0x12, 0xa6, 0x04, 0xa8, 0xb3, 0x61, + 0x13, 0x65, 0xc0, 0xe2, 0x82, 0xb9, 0xb2, 0x38, + 0x07, 0x06, 0xca, 0x64, 0x6c, 0x23, 0x93, 0x60, + 0x1d, 0x4d, 0x38, 0x5e, 0x8e, 0x90, 0x16, 0x4a, + 0xfd, 0xb3, 0xcd, 0x84, 0x9c, 0xa5, 0xfa, 0x73, + 0x2d, 0xcb, 0x87, 0x31, 0x3d, 0xf8, 0xfc, 0xeb, + 0xa7, 0x56, 0x2f, 0x5b, 0x95, 0x9a, 0xc6, 0x82, + 0x29, 0x86, 0x47, 0xe2, 0xc2, 0x84, 0x01, 0xaf, + 0xc8, 0x0b, 0x2d, 0xfb, 0x34, 0xba, 0x5d, 0x9d, + 0xd1, 0x85, 0xd5, 0x1e, 0x63, 0xcb, 0x3c, 0xa8, + 0xfa, 0x79, 0xef, 0x12, 0xa6, 0xb5, 0xdb, 0xc5, + 0x1d, 0x6a, 0xa7, 0x54, 0x58, 0x0c, 0xbe, 0x61, + 0xe5, 0x96, 0x7f, 0x4a, 0x3b, 0x59, 0x32, 0x2d, + 0x06, 0x44, 0x83, 0x5c, 0xad, 0xe9, 0xfe, 0x7c, + 0xd7, 0x5b, 0x34, 0xa1, 0xa3, 0xad, 0x9a, 0xbf, + 0xd5, 0x30, 0xf0, 0x22, 0xfc, 0x94, 0x7f, 0xd4, + 0xa4, 0xca, 0x88, 0x31, 0xe7, 0xf2, 0x89, 0x2d, + 0xda, 0xe6, 0x91, 0xa6, 0x27, 0x22, 0x74, 0x9f, + 0xc6, 0x72, 0x4f, 0xf6, 0xa9, 0xfe, 0x7a, 0xf0, + 0xa8, 0x6b, 0x6c, 0x9f, 0xe9, 0x2a, 0x9b, 0x23, + 0x9e, 0xb8, 0x2b, 0x29, 0x65, 0xa7, 0x5d, 0xbd, + 0x10, 0xe4, 0x56, 0x02, 0x94, 0xdd, 0xd1, 0xab, + 0x9b, 0x82, 0x2d, 0x8d, 0xf6, 0xd3, 0x65, 0x63, + 0x4a, 0xc4, 0x86, 0x61, 0x37, 0x9f, 0xdb, 0x4b, + 0x34, 0x20, 0x0a, 0xca, 0x45, 0x6c, 0x06, 0xc4, + 0x9c, 0x74, 0x4d, 0x83, 0x6a, 0x8d, 0xad, 0xc6, + 0x61, 0x3a, 0x8d, 0xde, 0x6c, 0xf9, 0x8e, 0x33, + 0xa2, 0xee, 0x99, 0xc7, 0xe4, 0x52, 0xb2, 0x44, + 0x6f, 0x2f, 0x0f, 0x41, 0xa9, 0x1a, 0xd3, 0x96, + 0x42, 0xc6, 0x49, 0x12, 0x6a, 0xf0, 0x29, 0xa9, + 0x0c, 0x9c, 0x50, 0x5d, 0x1d, 0xd1, 0x42, 0x7e, + 0x6f, 0x36, 0x48, 0x0f, 0x58, 0x14, 0x94, 0xc0, + 0x10, 0x1e, 0xe0, 0xb2, 0xdd, 0xba, 0x57, 0x91, + 0x4d, 0xd5, 0xdc, 0xa6, 0x4c, 0x68, 0x00, 0x6c, + 0xb3, 0x5d, 0x32, 0x13, 0xbe, 0xa8, 0xc3, 0xfb, + 0xd4, 0x19, 0x40, 0xf5, 0x6f, 0x63, 0xa1, 0x07, + 0xbf, 0xa2, 0x8b, 0xfc, 0xfe, 0xf8, 0xa1, 0x33, + 0x70, 0x07, 0x6d, 0xc5, 0x72, 0xa0, 0x39, 0xd6, + 0xd7, 0x76, 0x6c, 0xfa, 0x1f, 0x04, 0xd6, 0x23, + 0xbf, 0x66, 0x78, 0x92, 0x00, 0x11, 0x8a, 0x75, + 0x67, 0x44, 0xa6, 0x7c, 0xd0, 0x14, 0xe6, 0xd0, + 0x31, 0x6d, 0xdb, 0xc5, 0xb1, 0xa7, 0x99, 0xc3, + 0xaf, 0x18, 0x7a, 0x26, 0x46, 0xad, 0x6d, 0x0c, + 0xb6, 0xb5, 0xad, 0xc1, 0xcf, 0x60, 0x99, 0xf5, + 0x9f, 0x88, 0xaf, 0x0e, 0x37, 0x15, 0xf9, 0x2b, + 0x1a, 0x5f, 0xfb, 0xc9, 0xf8, 0xd4, 0xf0, 0x97, + 0xd2, 0x91, 0xf4, 0x94, 0xa2, 0xd3, 0x3b, 0x8b, + 0x0c, 0x22, 0xa0, 0xac, 0xb3, 0xb5, 0xdf, 0xf2, + 0x27, 0x38, 0x47, 0x53, 0x5b, 0x6e, 0x8f, 0x98, + 0x9e, 0xad, 0xb6, 0xf5, 0x0e, 0x17, 0x20, 0x35, + 0x54, 0x6b, 0x73, 0xa6, 0x64, 0x65, 0xac, 0xb8, + 0xc1, 0xd3, 0xf7, 0x07, 0x82, 0x93, 0x9d, 0xcb, + 0xcc, 0xe9, 0x0c, 0x51, 0x52, 0x85, 0x8b, 0x95, + 0xa6, 0xb1, 0xce, 0xdc, 0xfa, 0x00, 0x00, 0x08, + 0x14, 0x1c, 0x23, 0x2a, 0x35, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa65", + .pk_len =3D DILITHIUM65_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM65_PUBLICKEYBYTES]){ + 0x51, 0xbc, 0x81, 0x7c, 0x36, 0x6a, 0x18, 0xc5, + 0x5e, 0xb6, 0x89, 0xf9, 0xf2, 0xaf, 0xba, 0x61, + 0x34, 0x2b, 0x1e, 0xe1, 0xae, 0xb1, 0xa2, 0x6f, + 0x5a, 0x6b, 0x6e, 0xc6, 0x01, 0x23, 0x2a, 0x47, + 0xd8, 0x3a, 0xec, 0x87, 0x93, 0x62, 0x3b, 0x4b, + 0xcf, 0x37, 0x7c, 0x9a, 0x95, 0xff, 0xf1, 0xc1, + 0x2b, 0xfc, 0x2f, 0x53, 0xbd, 0x90, 0x93, 0x3d, + 0xc4, 0xb8, 0x43, 0xeb, 0xd9, 0x0d, 0x74, 0x4c, + 0xca, 0x65, 0x02, 0x8c, 0x2c, 0x60, 0xc6, 0x11, + 0xe5, 0xbe, 0xcd, 0xea, 0x0e, 0xc0, 0x4f, 0x82, + 0x1f, 0xad, 0xa5, 0x65, 0xd9, 0xc9, 0x69, 0xa3, + 0x23, 0xb7, 0x12, 0xb5, 0xc3, 0x9e, 0x78, 0x68, + 0x5b, 0x6b, 0x21, 0x59, 0x5b, 0x49, 0x02, 0xfb, + 0xda, 0x35, 0x8c, 0x8c, 0x74, 0x41, 0x8b, 0x46, + 0xdc, 0x7b, 0xd8, 0x1e, 0x03, 0x47, 0x96, 0xc2, + 0x96, 0xdc, 0x56, 0x0f, 0x86, 0xed, 0x95, 0xee, + 0xf0, 0x27, 0xed, 0x82, 0x9d, 0x32, 0x72, 0x13, + 0x49, 0x76, 0xf4, 0xc3, 0x04, 0xca, 0x4c, 0x16, + 0x22, 0xf1, 0xab, 0x00, 0x8f, 0x15, 0x5a, 0xf7, + 0x72, 0xf0, 0x79, 0x5a, 0x46, 0x57, 0xc8, 0x2f, + 0xa2, 0x1f, 0x34, 0x6d, 0x20, 0x28, 0x14, 0x1d, + 0x2e, 0x14, 0x31, 0x9b, 0x58, 0xac, 0x25, 0x0f, + 0x91, 0x6f, 0xd6, 0xd7, 0xca, 0x34, 0x06, 0x32, + 0x24, 0x5d, 0x65, 0x65, 0x50, 0x90, 0x4f, 0x11, + 0x5a, 0xee, 0x36, 0xc7, 0x72, 0x34, 0xbb, 0x9d, + 0xe9, 0xd5, 0xf2, 0x84, 0xa9, 0xa7, 0x04, 0xd5, + 0x2d, 0xb0, 0x8b, 0x78, 0x0b, 0x87, 0x86, 0xa0, + 0xff, 0x07, 0x1f, 0x61, 0x08, 0xdb, 0x41, 0x22, + 0x3e, 0xe3, 0x97, 0x4b, 0x13, 0x70, 0x8e, 0x8a, + 0x96, 0x04, 0xae, 0x73, 0x3d, 0x43, 0x5b, 0x86, + 0x9f, 0xa7, 0xba, 0xa6, 0xaf, 0x5c, 0x94, 0xfd, + 0xcb, 0xc3, 0x77, 0xc8, 0x5f, 0xe3, 0x33, 0x1f, + 0x8b, 0x5a, 0xb1, 0x20, 0xc7, 0x96, 0xd5, 0xb3, + 0xc2, 0xb7, 0xa6, 0x59, 0x0b, 0x13, 0x2f, 0xca, + 0xe5, 0xb6, 0x17, 0x40, 0xa7, 0xba, 0xa3, 0xe0, + 0x80, 0xdc, 0xf4, 0xe7, 0x9b, 0xd3, 0x53, 0xc5, + 0xe4, 0x08, 0xa3, 0x72, 0xd3, 0x65, 0xf3, 0xd3, + 0xdd, 0x72, 0xe8, 0x5c, 0xdd, 0xed, 0x11, 0x20, + 0x84, 0xf9, 0x54, 0x9e, 0xce, 0xcb, 0x30, 0x81, + 0xa1, 0xf1, 0x05, 0x16, 0xb0, 0x69, 0x57, 0x4d, + 0xd5, 0x24, 0xd2, 0x8d, 0xd6, 0x46, 0x8e, 0x96, + 0xb5, 0x4b, 0xcc, 0x80, 0x2f, 0x37, 0x2a, 0x7a, + 0x2e, 0x4a, 0x94, 0x5d, 0x6a, 0x40, 0x95, 0x48, + 0xc3, 0x34, 0x9c, 0xac, 0xe5, 0xcd, 0x91, 0xd9, + 0x34, 0x51, 0x01, 0x67, 0x56, 0xfe, 0x9b, 0x16, + 0x64, 0x1e, 0xed, 0x42, 0xc9, 0xc6, 0xa3, 0xf9, + 0xd6, 0x7b, 0xf8, 0x36, 0xad, 0x1c, 0xd0, 0x10, + 0x9c, 0x07, 0xe8, 0xb2, 0x2f, 0x86, 0xcd, 0xe7, + 0x1d, 0xa3, 0xb8, 0x45, 0xca, 0x3b, 0x53, 0x79, + 0xc9, 0x25, 0x73, 0x8f, 0x83, 0x75, 0x62, 0x90, + 0x6a, 0x70, 0x8c, 0xf3, 0xed, 0x0b, 0x95, 0x37, + 0xe4, 0xb2, 0xae, 0x5f, 0xa1, 0xd7, 0x0b, 0x10, + 0xfe, 0xda, 0x49, 0xe2, 0x2e, 0x03, 0x08, 0x55, + 0xed, 0x7c, 0x42, 0x3e, 0xd7, 0xc2, 0x96, 0x87, + 0x65, 0x67, 0x7e, 0x46, 0x48, 0x74, 0x89, 0xdc, + 0x3c, 0x91, 0x72, 0x14, 0x7a, 0x4f, 0xac, 0x47, + 0xe5, 0x9f, 0x7d, 0x9f, 0xe6, 0xf7, 0xf8, 0x5d, + 0xd7, 0x36, 0xe9, 0xe1, 0x2d, 0x64, 0x77, 0xd3, + 0x53, 0x99, 0x45, 0xdd, 0xbf, 0x2e, 0xb5, 0x61, + 0xe1, 0x56, 0xce, 0x51, 0x2e, 0x10, 0x1f, 0xef, + 0xd8, 0x76, 0xc3, 0x1a, 0x2f, 0x06, 0x85, 0xb7, + 0x89, 0x31, 0xbd, 0x31, 0x75, 0x90, 0x22, 0xba, + 0x52, 0x5e, 0x10, 0xb0, 0x22, 0x39, 0x64, 0xa3, + 0x22, 0x2e, 0x88, 0x0b, 0xc1, 0x33, 0xd3, 0xa3, + 0xef, 0x7f, 0xca, 0x7e, 0x07, 0xc8, 0xe6, 0x64, + 0xd8, 0x53, 0x83, 0x28, 0x2a, 0x10, 0x3a, 0x77, + 0x85, 0x22, 0xdb, 0x61, 0xd8, 0x49, 0x20, 0x76, + 0x97, 0x0d, 0xf7, 0x07, 0x2c, 0x9a, 0xbf, 0x66, + 0x04, 0x49, 0x50, 0xb6, 0x70, 0xb5, 0x17, 0x95, + 0xef, 0xe6, 0x9d, 0x7a, 0xdd, 0xed, 0x6b, 0x22, + 0x5e, 0x89, 0x65, 0x72, 0xf1, 0xf6, 0x86, 0xcb, + 0x76, 0x84, 0x7d, 0x22, 0x3b, 0x5c, 0x84, 0x48, + 0x48, 0x7a, 0x00, 0x83, 0x03, 0x97, 0x01, 0x47, + 0x46, 0x8f, 0x2a, 0x40, 0x61, 0xd6, 0x32, 0xd8, + 0x3d, 0x59, 0x10, 0x78, 0xaf, 0x22, 0x33, 0xe5, + 0x44, 0x63, 0x78, 0x5d, 0x56, 0x01, 0x24, 0x59, + 0x19, 0x8d, 0x52, 0xb4, 0xc3, 0x7b, 0x97, 0x5f, + 0x61, 0xcb, 0x48, 0x78, 0xa6, 0x7c, 0x1d, 0x06, + 0xb2, 0x4b, 0xdf, 0x7a, 0x31, 0xa9, 0xb2, 0x53, + 0xe5, 0x3e, 0x3e, 0xfe, 0xbf, 0x71, 0x18, 0x69, + 0x86, 0x4c, 0xf5, 0x30, 0x89, 0xaa, 0xa8, 0x6c, + 0x78, 0x64, 0xc8, 0x33, 0x3b, 0x2d, 0x63, 0xbd, + 0x24, 0x30, 0xfa, 0x8a, 0x3c, 0xd7, 0x82, 0xa5, + 0x31, 0x84, 0x96, 0x1b, 0xb3, 0x3b, 0x7b, 0x9e, + 0x80, 0xef, 0xbb, 0xaf, 0x1e, 0x88, 0xa3, 0x75, + 0x0d, 0x73, 0xbf, 0xf4, 0x36, 0x42, 0x2a, 0x98, + 0xda, 0x7d, 0x9b, 0xab, 0x15, 0x26, 0xe4, 0x0b, + 0x0c, 0x95, 0xaf, 0x8b, 0x8d, 0x8d, 0x67, 0x5b, + 0x1f, 0x42, 0xce, 0xb0, 0x47, 0x94, 0x94, 0x57, + 0x15, 0xba, 0xa4, 0x82, 0x5d, 0xc4, 0x71, 0x6b, + 0xeb, 0xc6, 0xdf, 0x22, 0xef, 0xd8, 0x89, 0xd8, + 0xfb, 0xc5, 0xce, 0xf2, 0xf3, 0x94, 0x64, 0xe1, + 0xc1, 0x17, 0x2d, 0x3e, 0xa5, 0xb6, 0xf5, 0x65, + 0xf6, 0xb3, 0xeb, 0xa9, 0x5d, 0xfa, 0x3e, 0xff, + 0x1c, 0xbb, 0x52, 0xd8, 0x80, 0x09, 0x1c, 0x18, + 0x25, 0x57, 0x4b, 0x4b, 0x30, 0xfe, 0xb2, 0xe5, + 0x03, 0x87, 0x6f, 0x6c, 0x2b, 0x83, 0x5a, 0xf3, + 0x37, 0x72, 0x11, 0xe4, 0xfd, 0x76, 0x1e, 0x28, + 0xe6, 0x65, 0x12, 0x4e, 0xb8, 0xcd, 0x90, 0xba, + 0xdf, 0x6e, 0x4e, 0xc9, 0x4b, 0xf5, 0x7c, 0x9f, + 0xb3, 0xe6, 0xab, 0xd5, 0xcd, 0x26, 0xe4, 0x74, + 0x65, 0xe7, 0x84, 0x9c, 0x28, 0x7a, 0x6f, 0x1f, + 0x6c, 0xbe, 0xcc, 0xa7, 0xf3, 0x2e, 0x56, 0x92, + 0x88, 0xfb, 0x99, 0x1f, 0xed, 0xed, 0xf0, 0xc1, + 0x1a, 0x75, 0x13, 0x47, 0x0c, 0x88, 0x3c, 0x99, + 0x72, 0x02, 0x36, 0x40, 0x48, 0x26, 0x31, 0xc4, + 0xa0, 0x80, 0x79, 0x40, 0x1f, 0xfb, 0xff, 0xab, + 0x7f, 0xe6, 0x45, 0x71, 0xed, 0x8e, 0x12, 0x1b, + 0x4c, 0x4f, 0xa1, 0xd1, 0xc8, 0x94, 0xa4, 0xe8, + 0x2a, 0x76, 0xe3, 0x19, 0x52, 0xad, 0x4e, 0x4c, + 0x97, 0xf7, 0xc8, 0x67, 0x90, 0x49, 0x36, 0x0b, + 0x54, 0xf5, 0xe0, 0xce, 0x25, 0x27, 0x9c, 0xa6, + 0x9c, 0x2d, 0xd5, 0xaa, 0x58, 0x19, 0x14, 0x62, + 0x19, 0x9d, 0xe6, 0x54, 0xda, 0x47, 0x0b, 0x24, + 0xf1, 0xb5, 0xe0, 0x55, 0xaf, 0x5d, 0x30, 0x93, + 0x1c, 0x95, 0xda, 0xa5, 0x94, 0xf9, 0x3d, 0xa7, + 0x40, 0x92, 0xcd, 0x18, 0xa7, 0x3f, 0x3f, 0xa5, + 0x9e, 0xe2, 0x01, 0xe0, 0xae, 0xd1, 0xe8, 0xdb, + 0xc2, 0x79, 0x7a, 0x6e, 0x5b, 0xd4, 0x1d, 0x68, + 0x39, 0xd8, 0xea, 0xa1, 0x4b, 0x95, 0xb4, 0xed, + 0x94, 0x96, 0x37, 0x5f, 0xb4, 0x3d, 0x97, 0x4a, + 0x77, 0x51, 0xf8, 0x57, 0x74, 0xc8, 0xe2, 0x62, + 0x17, 0x53, 0x23, 0x0e, 0x47, 0x6c, 0xd5, 0x4a, + 0x87, 0x7d, 0xe8, 0x97, 0x0b, 0x23, 0x24, 0x80, + 0x6b, 0x56, 0x04, 0x5e, 0xbf, 0x0d, 0x22, 0x18, + 0xac, 0xc8, 0xbc, 0xe0, 0xfa, 0x57, 0x80, 0xa7, + 0x99, 0xca, 0xdc, 0xe9, 0xe6, 0x8a, 0x11, 0x7c, + 0x99, 0x41, 0xb8, 0x76, 0xe7, 0x91, 0x72, 0x85, + 0x97, 0xe7, 0xd3, 0x8e, 0xee, 0x16, 0x3c, 0x47, + 0x9c, 0xef, 0x02, 0x61, 0x18, 0x71, 0x9b, 0xf8, + 0xae, 0x55, 0x89, 0x5d, 0x4a, 0xcd, 0x5b, 0x9c, + 0x0b, 0x97, 0xef, 0x5c, 0xbc, 0xad, 0x72, 0xf9, + 0x4f, 0xfe, 0xa3, 0x13, 0xd6, 0x0f, 0x5d, 0x3a, + 0x87, 0x46, 0xf3, 0x40, 0x37, 0xd0, 0x99, 0xfe, + 0xa5, 0xc7, 0x1d, 0xb4, 0x95, 0xb0, 0x55, 0x3a, + 0x47, 0x66, 0x0a, 0xc8, 0x4e, 0xe0, 0xcb, 0xc5, + 0x80, 0x6d, 0x34, 0x91, 0x39, 0xc1, 0x71, 0xb9, + 0x54, 0x5e, 0xb4, 0xfd, 0x6c, 0x54, 0xc3, 0x9c, + 0xde, 0x83, 0xb4, 0x5d, 0x4b, 0xa9, 0x1c, 0x25, + 0x0e, 0x8e, 0x51, 0x3e, 0xa5, 0x59, 0x5f, 0x20, + 0x5b, 0x43, 0xf8, 0xa4, 0x7d, 0x7f, 0x0c, 0xb2, + 0x87, 0x2b, 0xf1, 0xdc, 0xf2, 0xd5, 0x2b, 0x19, + 0x4d, 0x60, 0x18, 0x25, 0x4b, 0x31, 0xa5, 0x08, + 0x6b, 0x4d, 0x0e, 0xec, 0x0a, 0x65, 0x31, 0xc5, + 0x1a, 0xf3, 0x4d, 0x16, 0xed, 0x24, 0x89, 0xeb, + 0xfe, 0xe2, 0x7c, 0xb1, 0x64, 0xc7, 0x10, 0x2e, + 0x27, 0x44, 0x7e, 0xb3, 0x60, 0x88, 0x5d, 0x0a, + 0xb0, 0x1c, 0x62, 0xda, 0x94, 0x63, 0xfe, 0xf3, + 0x82, 0x32, 0xc3, 0x44, 0x56, 0x46, 0x8f, 0xc4, + 0x81, 0x86, 0xf2, 0x89, 0x19, 0x6f, 0xfc, 0x09, + 0x57, 0x56, 0xba, 0xcb, 0xbf, 0x0d, 0xf0, 0x4b, + 0x2f, 0x63, 0x6f, 0x18, 0x22, 0x5f, 0xa7, 0x86, + 0x5b, 0x0d, 0x1e, 0x05, 0xf5, 0x33, 0x0b, 0xbe, + 0x62, 0xc7, 0xe0, 0xdf, 0xb0, 0x17, 0xec, 0x68, + 0x0f, 0x2c, 0x77, 0x68, 0x6c, 0xad, 0xdb, 0xdd, + 0x36, 0xab, 0x8c, 0xd7, 0xd0, 0xa9, 0xff, 0x4c, + 0x7c, 0x53, 0x18, 0x25, 0x8c, 0x6d, 0xec, 0x4d, + 0x81, 0xce, 0x00, 0x56, 0xda, 0x23, 0x8d, 0xea, + 0xbf, 0x68, 0x04, 0x16, 0xff, 0x6b, 0xc1, 0x61, + 0xfb, 0x80, 0x79, 0x81, 0x65, 0xec, 0x99, 0xfd, + 0xb2, 0xba, 0x41, 0x11, 0xf5, 0xbd, 0x79, 0xcc, + 0x37, 0x5f, 0xa6, 0xde, 0x29, 0x16, 0x3f, 0x2e, + 0x93, 0xd0, 0x5d, 0xad, 0xff, 0x67, 0x05, 0x70, + 0x65, 0xa1, 0x3d, 0xb1, 0xe0, 0x46, 0x87, 0x62, + 0x4f, 0xf7, 0xec, 0x51, 0x60, 0x5f, 0x83, 0x68, + 0x3a, 0xd8, 0x89, 0x90, 0x1e, 0x12, 0x8b, 0xfa, + 0x3d, 0xb9, 0x8b, 0xff, 0x91, 0xe9, 0xa7, 0x6f, + 0x2e, 0x04, 0xfd, 0xd8, 0xeb, 0x58, 0x90, 0x68, + 0x6d, 0xdb, 0x2f, 0xeb, 0x34, 0x9b, 0x3a, 0xb9, + 0x07, 0xba, 0xa0, 0x71, 0xcc, 0xc4, 0xe2, 0xc3, + 0xf1, 0x8d, 0xd0, 0x6e, 0x79, 0xf5, 0x8d, 0xda, + 0x51, 0x57, 0xe8, 0x9d, 0x2c, 0xe1, 0x81, 0xf7, + 0x1e, 0x30, 0x28, 0x5d, 0x09, 0x85, 0x25, 0x2d, + 0x44, 0x18, 0xef, 0x1c, 0x3a, 0x5d, 0x84, 0x2b, + 0xbe, 0x5c, 0x78, 0x90, 0x4c, 0xfe, 0x9a, 0x3d, + 0x1d, 0x3c, 0xac, 0x05, 0x9a, 0xca, 0x8a, 0x17, + 0x53, 0x61, 0xd7, 0x97, 0x6b, 0xab, 0xec, 0xff, + 0xe5, 0x2c, 0x0f, 0xe7, 0x34, 0x57, 0x17, 0x40, + 0xeb, 0xed, 0x8f, 0xe4, 0x72, 0xd0, 0xbe, 0xb1, + 0xbe, 0xd3, 0x09, 0x3d, 0x4d, 0xf4, 0xdd, 0x5f, + 0x95, 0x98, 0x54, 0x85, 0x72, 0x50, 0x99, 0xec, + 0x63, 0xba, 0x18, 0xa0, 0x1e, 0x81, 0x45, 0x4c, + 0x8e, 0xd3, 0x67, 0x90, 0xa2, 0xd6, 0x45, 0x5e, + 0x30, 0x68, 0xa0, 0x16, 0x0f, 0x90, 0xbb, 0x04, + 0x85, 0x5e, 0x90, 0xf7, 0x1b, 0x52, 0xaf, 0x55, + 0x47, 0xcf, 0x75, 0x11, 0x73, 0xc4, 0xec, 0x4f, + 0x0f, 0x44, 0x4d, 0xd3, 0x92, 0xdf, 0x5d, 0x9d, + 0x12, 0x38, 0x72, 0x38, 0xaa, 0x06, 0xf2, 0x45, + 0xf5, 0xa8, 0xdd, 0x8f, 0xd2, 0x7a, 0x96, 0x0f, + 0x3f, 0xca, 0xa3, 0x79, 0xe2, 0xed, 0x12, 0x62, + 0x62, 0x7a, 0x01, 0x7a, 0xa0, 0xc5, 0x31, 0x1f, + 0x49, 0x2b, 0x87, 0x49, 0xd6, 0x90, 0xfd, 0xfc, + 0xdc, 0xac, 0x4c, 0x15, 0x1a, 0xe1, 0x66, 0xf2, + 0xfa, 0xe9, 0x58, 0x6d, 0x57, 0x24, 0x90, 0x78, + 0x7a, 0x05, 0x73, 0x9f, 0x96, 0x30, 0x5b, 0xa8, + 0x69, 0x18, 0xa2, 0x24, 0x5c, 0xf2, 0xc3, 0xb0, + 0x8d, 0xa6, 0x71, 0x28, 0x46, 0x94, 0x33, 0x0a, + 0x95, 0xd9, 0x32, 0xc9, 0x93, 0x7f, 0xa4, 0xee, + 0x8e, 0x3f, 0x21, 0x1b, 0xa2, 0xfe, 0x09, 0x03, + 0xe0, 0x63, 0xb0, 0xbe, 0xa8, 0x19, 0x16, 0xd1, + 0x38, 0x81, 0xdf, 0x9b, 0x89, 0x47, 0x00, 0x7f, + 0xaa, 0xe9, 0xb7, 0x51, 0xab, 0x27, 0x4c, 0xdd, + 0x50, 0xf0, 0x45, 0xaf, 0x26, 0x4c, 0xe3, 0x33, + 0x79, 0x43, 0x87, 0x59, 0xbf, 0x6e, 0x38, 0xdb, + 0x28, 0x3b, 0x99, 0x12, 0xc2, 0x3a, 0xca, 0x6f, + 0x9d, 0x99, 0x10, 0x4d, 0x0c, 0xdf, 0xc3, 0xc3, + 0x4f, 0xb0, 0xe5, 0x62, 0xd1, 0xca, 0x27, 0x14, + 0xc7, 0xf5, 0x65, 0x86, 0x69, 0x92, 0x59, 0xf3, + 0xd9, 0x51, 0x67, 0x45, 0x5f, 0x33, 0xc8, 0xd9, + 0x41, 0xe5, 0x45, 0x5d, 0x80, 0x58, 0x6d, 0x9a, + 0xf7, 0xa9, 0xc9, 0xb1, 0x36, 0x3b, 0xd2, 0xb0, + 0x25, 0xdb, 0x58, 0x5c, 0x77, 0x7a, 0xb0, 0x51, + 0x2f, 0xb5, 0xa3, 0xdc, 0x1a, 0xfd, 0x48, 0x76, + 0x89, 0x5f, 0x25, 0x00, 0xe6, 0x89, 0x6a, 0xf7, + 0x95, 0xfd, 0x13, 0x6b, 0xe9, 0xdf, 0x28, 0x8c, + 0x73, 0x2c, 0x08, 0x67, 0x8f, 0x3f, 0x0f, 0x92, + 0xb0, 0xb6, 0x73, 0xb9, 0xca, 0xa6, 0x55, 0xe8, + 0x5e, 0xc5, 0xb0, 0x68, 0xbd, 0x96, 0x6b, 0xab, + 0x43, 0x29, 0xcb, 0x28, 0xc4, 0x03, 0xf5, 0x6f, + 0xef, 0x74, 0x7b, 0x50, 0xb8, 0x2f, 0xac, 0x61, + 0xad, 0xe9, 0x90, 0x7f, 0x78, 0xcd, 0xa1, 0xed, + 0x9e, 0x64, 0xf2, 0x95, 0x5f, 0x05, 0xae, 0xe5, + 0x57, 0x77, 0x31, 0x05, 0x75, 0xdc, 0xaa, 0x30, + 0x43, 0x12, 0x5f, 0x5b, 0xcb, 0x78, 0x31, 0x6e, + 0xd0, 0x92, 0x60, 0x61, 0xdb, 0x60, 0xe4, 0xe5, + 0xce, 0x35, 0x8f, 0x0c, 0xb3, 0xc1, 0xb9, 0x4f, + 0xe5, 0xc6, 0xf2, 0x5e, 0xcc, 0xf4, 0xf8, 0x9b, + 0x49, 0xa9, 0xed, 0xc8, 0xcb, 0x73, 0x4d, 0xc6, + 0x63, 0xad, 0xb1, 0xdb, 0x65, 0xa9, 0x8e, 0x81, + 0x26, 0x16, 0x7e, 0x7b, 0x46, 0xcc, 0xb2, 0x21, + 0x45, 0x1e, 0xce, 0x77, 0x01, 0x7c, 0x88, 0x10, + 0xfe, 0x9d, 0x7e, 0x63, 0xe0, 0x36, 0x0b, 0xcf, + 0x24, 0x06, 0x21, 0x34, 0x4f, 0x98, 0x38, 0x90, + 0xdc, 0xe1, 0x03, 0x25, 0x32, 0xcf, 0x72, 0xb8, + 0xd0, 0x48, 0xf8, 0x9b, 0xaa, 0xde, 0xc5, 0xfc, + 0x9d, 0xa6, 0x1c, 0xcb, 0x8e, 0xaa, 0x1b, 0x87, + 0xd4, 0x22, 0x3d, 0x47, 0x5e, 0x60, 0xc3, 0xa4, + 0xc5, 0xf6, 0x5e, 0x88, 0xf1, 0x15, 0xcf, 0x42, + 0x3d, 0xd3, 0x47, 0x24, 0x11, 0x32, 0x74, 0x98, + 0xda, 0x9b, 0x23, 0x79, 0x20, 0xf1, 0xd8, 0x0c, + 0x59, 0x8f, 0x61, 0x22, 0xda, 0x16, 0x60, 0xa0, + 0x4d, 0x46, 0x30, 0x09, 0x59, 0xf5, 0xe1, 0xee, + 0xe6, 0x72, 0x3a, 0xc2, 0x86, 0xa1, 0x17, 0x36, + 0x21, 0x91, 0xff, 0x55, 0x9c, 0x73, 0xdf, 0xd8, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x67, 0x9b, 0x88, 0xb9, 0xc3, 0x30, 0x50, 0x56, + 0x3f, 0x8c, 0x56, 0xfc, 0x3a, 0x65, 0x9e, 0x59, + 0xc8, 0xcc, 0xb2, 0xe7, 0xa9, 0x1b, 0x5b, 0xf6, + 0xbc, 0xef, 0xee, 0xac, 0x24, 0xca, 0x97, 0xa4, + 0xb4, 0xfe, 0xcd, 0x0a, 0x7e, 0x90, 0x3d, 0x73, + 0xc8, 0xfa, 0xd6, 0xc7, 0xaa, 0x94, 0x97, 0x2b, + 0x0c, 0x7f, 0x38, 0xd3, 0x28, 0xea, 0x7c, 0xf6, + 0x30, 0x55, 0x8a, 0x37, 0xc3, 0x3d, 0x38, 0x2e, + }, + .sig_len =3D DILITHIUM65_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM65_CRYPTO_BYTES]){ + 0xbe, 0xa1, 0x82, 0x06, 0xcd, 0x1f, 0xc3, 0x9c, + 0x02, 0x01, 0x40, 0x4a, 0xfe, 0x12, 0xc2, 0xe4, + 0x5a, 0x4b, 0xa0, 0x7b, 0xdb, 0x88, 0x6b, 0x60, + 0x78, 0x82, 0xa6, 0x91, 0x2b, 0x11, 0x55, 0xd2, + 0x44, 0x54, 0x7d, 0x5f, 0x18, 0xc5, 0xf6, 0xe7, + 0x68, 0xf2, 0x2b, 0x6c, 0x97, 0xe5, 0x09, 0x54, + 0xa3, 0x81, 0x41, 0x0c, 0xd4, 0x9a, 0x74, 0xa1, + 0x97, 0xb2, 0xc3, 0xde, 0x26, 0xa6, 0xda, 0x03, + 0xdc, 0xa6, 0x60, 0x96, 0xc4, 0x01, 0xf4, 0x0a, + 0xe8, 0x22, 0xfb, 0x67, 0xdb, 0xa3, 0x2e, 0x0f, + 0x79, 0xf7, 0x81, 0xb9, 0x1d, 0xbe, 0xb0, 0x80, + 0x84, 0x6e, 0x2d, 0xa4, 0xba, 0x8b, 0xc2, 0xb1, + 0x60, 0x78, 0xe1, 0xd9, 0xf4, 0x19, 0xd5, 0x25, + 0x34, 0x22, 0xc9, 0x18, 0x08, 0xdf, 0x59, 0x66, + 0x38, 0x87, 0xed, 0x5d, 0xe1, 0x0d, 0xba, 0x76, + 0xbe, 0x02, 0x5c, 0x70, 0xcb, 0xfa, 0xa1, 0x72, + 0x65, 0x91, 0xce, 0x4b, 0x72, 0x1b, 0x66, 0x83, + 0x06, 0x0f, 0x14, 0x71, 0x95, 0xdc, 0x19, 0xde, + 0x73, 0x84, 0xa2, 0x07, 0xa6, 0xc4, 0x1d, 0x32, + 0xb0, 0x6e, 0xae, 0x3f, 0xf1, 0xce, 0x08, 0x30, + 0xc6, 0xaa, 0xef, 0x6f, 0xee, 0xfc, 0x31, 0xf9, + 0xd5, 0xc3, 0x03, 0xbe, 0xec, 0x37, 0xa9, 0x7e, + 0x9f, 0x99, 0xcb, 0xe5, 0xd0, 0xea, 0x11, 0x33, + 0x7f, 0xae, 0xe8, 0x3e, 0x70, 0x2f, 0x41, 0x50, + 0xe5, 0xd4, 0xb5, 0xe6, 0x2b, 0xc0, 0x17, 0xf6, + 0x79, 0x7c, 0xdc, 0x59, 0xf6, 0x34, 0xef, 0xcb, + 0x90, 0x7e, 0x80, 0xb6, 0xf9, 0x90, 0xa9, 0x3f, + 0xd4, 0xde, 0x9d, 0x87, 0x7f, 0xbe, 0x22, 0xe1, + 0x80, 0x97, 0xfa, 0x4c, 0x09, 0x6e, 0x0a, 0xe5, + 0x55, 0xf5, 0xe2, 0xe0, 0x71, 0x17, 0xb9, 0x3d, + 0x0b, 0x8d, 0x4a, 0x79, 0xaf, 0xe9, 0xf8, 0x31, + 0xb6, 0x79, 0x34, 0x15, 0x7b, 0x22, 0xe0, 0x6a, + 0xeb, 0xc7, 0xc2, 0x98, 0x11, 0x6a, 0x6e, 0xf7, + 0xef, 0x14, 0x72, 0x20, 0xf9, 0x5c, 0x0c, 0x04, + 0x40, 0x45, 0x54, 0x20, 0x52, 0xe5, 0xed, 0x25, + 0x57, 0x3b, 0x9e, 0x65, 0x82, 0xd4, 0x1a, 0x16, + 0x7a, 0x7d, 0x9e, 0x7e, 0xcc, 0xa9, 0xb0, 0xf9, + 0xc1, 0x23, 0x9e, 0x3b, 0xde, 0x85, 0x20, 0x54, + 0x31, 0x3e, 0x70, 0xe7, 0x56, 0x7b, 0xc2, 0x83, + 0x0e, 0xfd, 0x25, 0x48, 0x1d, 0x95, 0x38, 0x92, + 0x48, 0xf2, 0xbe, 0x60, 0xa2, 0x5d, 0x7b, 0x9a, + 0x23, 0x0a, 0xf7, 0xf8, 0xc4, 0xd4, 0x88, 0x96, + 0x9b, 0x53, 0xb2, 0x96, 0x8a, 0x23, 0xfb, 0xe0, + 0x9a, 0x25, 0x1c, 0x18, 0x4b, 0xb2, 0xa1, 0x82, + 0x14, 0x41, 0xdd, 0xd2, 0x86, 0xbf, 0x3e, 0xbb, + 0x83, 0xf9, 0x62, 0xba, 0xe2, 0x07, 0xcd, 0x55, + 0xfc, 0xd3, 0x2a, 0xec, 0x6f, 0x87, 0x86, 0xfe, + 0xc4, 0x6d, 0x61, 0xd9, 0x7c, 0xe3, 0x02, 0x0c, + 0x1f, 0x85, 0xa3, 0xd7, 0x19, 0xda, 0xf7, 0xeb, + 0xda, 0x6a, 0x27, 0x82, 0xb9, 0xf6, 0xd5, 0xe8, + 0x5a, 0x2e, 0x49, 0x59, 0x91, 0xda, 0x6c, 0x05, + 0x65, 0x5e, 0xfd, 0x85, 0xdb, 0x6d, 0x58, 0x9c, + 0xdd, 0x25, 0xa8, 0x63, 0x3a, 0xe7, 0x62, 0xa1, + 0x46, 0x69, 0x44, 0x61, 0x4e, 0x1a, 0x8b, 0x30, + 0x08, 0xa9, 0xcc, 0x0f, 0x34, 0x34, 0x9a, 0xb4, + 0x63, 0x09, 0x0d, 0x30, 0x60, 0x11, 0x62, 0xff, + 0x49, 0x56, 0xe3, 0xca, 0x0a, 0x57, 0xb4, 0x2b, + 0x37, 0xbb, 0x5b, 0x5f, 0x7f, 0x07, 0xf6, 0x1b, + 0x32, 0xf8, 0xfb, 0x5b, 0xda, 0x4a, 0x29, 0xdf, + 0x5e, 0x4e, 0xe9, 0xe0, 0x35, 0x92, 0x44, 0xa6, + 0x39, 0x53, 0x13, 0x39, 0xb5, 0x34, 0x58, 0x3b, + 0xec, 0x7c, 0x64, 0xcb, 0x0c, 0x11, 0x79, 0x2d, + 0xef, 0xd6, 0x76, 0x3c, 0x76, 0x01, 0x5f, 0xa2, + 0x95, 0xce, 0xb8, 0x11, 0x9a, 0xc8, 0x68, 0x36, + 0x0f, 0x1d, 0xe4, 0xf4, 0x95, 0x97, 0x36, 0x82, + 0x89, 0x46, 0x55, 0xfc, 0xa6, 0x9d, 0xcc, 0x0a, + 0x66, 0xcc, 0x6f, 0xd6, 0xa3, 0xcd, 0x1d, 0xd2, + 0xaa, 0xa0, 0x87, 0xe6, 0xbf, 0xde, 0xa3, 0x6f, + 0x09, 0xfd, 0xa2, 0x5f, 0xb0, 0x63, 0xe5, 0xb2, + 0x20, 0x51, 0x44, 0xfe, 0x22, 0xc4, 0x9c, 0xac, + 0xc7, 0x50, 0x2c, 0x72, 0x18, 0xf9, 0x5d, 0xef, + 0x14, 0x90, 0xb1, 0x72, 0xc9, 0xb2, 0x5b, 0x4d, + 0xa0, 0x8c, 0x72, 0x83, 0xa3, 0x92, 0x68, 0x7d, + 0xad, 0x16, 0x79, 0x49, 0x4a, 0xae, 0xbb, 0xbb, + 0xb4, 0x67, 0x18, 0xb9, 0x50, 0x35, 0x75, 0x60, + 0x9f, 0x98, 0xde, 0xe6, 0x67, 0x41, 0xcf, 0x6a, + 0xc8, 0x3c, 0x3c, 0x62, 0xef, 0x0a, 0x3a, 0xd3, + 0x01, 0xf1, 0x74, 0xfa, 0x7a, 0x5c, 0x83, 0x2f, + 0x6e, 0x54, 0xf3, 0xd2, 0xe5, 0xc8, 0xe5, 0x79, + 0xef, 0xcb, 0x39, 0xc3, 0x54, 0xbc, 0x38, 0x34, + 0xc3, 0x91, 0x6b, 0xb5, 0xc2, 0xdc, 0x52, 0xc1, + 0x4e, 0xd4, 0xf5, 0x31, 0x04, 0xbc, 0xbb, 0x3c, + 0x9c, 0x88, 0x15, 0x8e, 0x97, 0x8e, 0x6c, 0xaa, + 0xe1, 0x57, 0xf5, 0xaa, 0xb6, 0xc3, 0xd8, 0xf7, + 0xe5, 0x80, 0xe3, 0x6b, 0x35, 0x9e, 0x21, 0x49, + 0xb2, 0x0a, 0x0e, 0x2b, 0x7f, 0xc8, 0x3c, 0x92, + 0xab, 0xe0, 0x56, 0x88, 0x64, 0xdc, 0x00, 0x6c, + 0xb8, 0x9b, 0x6b, 0xec, 0x5a, 0x59, 0x05, 0xd9, + 0x7e, 0xe7, 0x91, 0xf6, 0xe5, 0xa2, 0xe3, 0x0b, + 0x7b, 0x3b, 0x22, 0x43, 0x33, 0xc1, 0x9a, 0x3e, + 0xdc, 0x41, 0xb2, 0x62, 0x75, 0x24, 0xce, 0xba, + 0xf6, 0x5a, 0xda, 0x52, 0xf3, 0x66, 0x5a, 0x89, + 0x8b, 0xea, 0x0a, 0xdd, 0xb4, 0xc3, 0xfe, 0xbc, + 0x52, 0x01, 0xb6, 0x72, 0xdc, 0xf7, 0xb1, 0x50, + 0xfc, 0xce, 0xdd, 0xba, 0xd4, 0xe9, 0xd0, 0x3f, + 0x9e, 0xca, 0xc2, 0x33, 0xa6, 0xe3, 0xc1, 0x4d, + 0x03, 0xba, 0xb8, 0xc7, 0x0b, 0xf2, 0xd0, 0x5a, + 0x3e, 0x28, 0x2b, 0x3d, 0xde, 0x26, 0x33, 0x86, + 0xce, 0x0e, 0x9c, 0x7d, 0xcc, 0x18, 0x09, 0x47, + 0x37, 0xd6, 0x7b, 0x52, 0xe0, 0x2b, 0x6e, 0x8e, + 0xd0, 0x52, 0x07, 0x63, 0x62, 0xec, 0x92, 0x9f, + 0xe4, 0xd0, 0xda, 0xea, 0x4e, 0x31, 0xc8, 0xfa, + 0x5e, 0xec, 0xcd, 0x13, 0x9f, 0x09, 0xd8, 0xb8, + 0x1e, 0x46, 0x25, 0x8c, 0x47, 0x0f, 0xdf, 0x19, + 0x58, 0x57, 0x1c, 0xe3, 0x06, 0xf9, 0x87, 0x9c, + 0x91, 0x7c, 0xb1, 0x9c, 0xc8, 0xad, 0xd6, 0x0d, + 0xa3, 0x2e, 0x20, 0x04, 0xf3, 0xb2, 0xd0, 0x48, + 0x0d, 0x13, 0xc4, 0xeb, 0x87, 0xec, 0x29, 0x17, + 0x7f, 0xa6, 0x5a, 0x56, 0xae, 0x4c, 0xcd, 0xb5, + 0xb0, 0x19, 0x93, 0xdb, 0xb2, 0x55, 0x4a, 0x3c, + 0xd7, 0x1f, 0x86, 0x19, 0x8d, 0x7c, 0x9b, 0xb5, + 0x24, 0x89, 0xda, 0xf7, 0xc4, 0x67, 0x1b, 0x80, + 0x16, 0x1e, 0x30, 0x4f, 0x9e, 0xb7, 0x12, 0x58, + 0x54, 0xda, 0xaf, 0x78, 0xe9, 0x6e, 0x7c, 0x98, + 0x0d, 0x3a, 0x41, 0xcf, 0xcc, 0xbc, 0x4c, 0x9f, + 0x1a, 0xf6, 0xd8, 0x6f, 0x61, 0x55, 0xdd, 0x00, + 0x64, 0xf3, 0x71, 0x2b, 0x55, 0x8f, 0xd4, 0xed, + 0xb1, 0x57, 0x8b, 0x39, 0x3e, 0x0d, 0xf5, 0x56, + 0x5f, 0x47, 0x5d, 0x8d, 0x6c, 0x8b, 0x33, 0x44, + 0xaf, 0x3e, 0x7c, 0x95, 0x4c, 0x45, 0x31, 0x12, + 0x4f, 0x94, 0x47, 0xc9, 0x57, 0x4b, 0x6d, 0x05, + 0xb9, 0x8d, 0x30, 0x54, 0x2a, 0xfd, 0x44, 0x40, + 0xd6, 0x59, 0xab, 0x5c, 0x5d, 0x6f, 0xbb, 0xab, + 0x4a, 0xff, 0x28, 0x60, 0xef, 0x49, 0x4b, 0x4d, + 0x3c, 0x21, 0x5a, 0xb1, 0x56, 0x48, 0x3d, 0x60, + 0x50, 0x83, 0x57, 0x98, 0xe8, 0x3a, 0x7f, 0xd4, + 0xe2, 0x17, 0x82, 0xcb, 0xd6, 0x34, 0xf4, 0x57, + 0x31, 0x1c, 0xc6, 0xc8, 0x00, 0x8d, 0x7f, 0xb0, + 0x78, 0x47, 0x61, 0xf1, 0xd5, 0xec, 0x3b, 0x5b, + 0x83, 0x91, 0x30, 0x58, 0x8f, 0x94, 0xc2, 0xf0, + 0xa8, 0x61, 0xd1, 0xfa, 0x95, 0x89, 0x6c, 0x21, + 0x76, 0xd8, 0x52, 0xf1, 0xdf, 0x85, 0xc3, 0xe6, + 0x4f, 0x6f, 0x9f, 0xee, 0x48, 0x11, 0xbd, 0x4f, + 0xff, 0xa9, 0xec, 0x8b, 0xf0, 0x4f, 0x67, 0x05, + 0xb0, 0x13, 0x11, 0x39, 0x7e, 0x7c, 0xc5, 0x99, + 0xa6, 0x73, 0x20, 0xff, 0x4b, 0x01, 0xc7, 0xc1, + 0xf6, 0x7c, 0x0a, 0x02, 0x57, 0x0b, 0xe3, 0x75, + 0xcc, 0x1b, 0x7a, 0xca, 0x33, 0x92, 0xdc, 0x5b, + 0xa1, 0x9e, 0xdd, 0x9e, 0xfd, 0x38, 0xc7, 0xa1, + 0x27, 0x81, 0xf5, 0xb4, 0x80, 0xf8, 0x0d, 0xfc, + 0xbd, 0x2d, 0x43, 0xe0, 0x28, 0xec, 0xc4, 0x04, + 0x00, 0x58, 0x76, 0x28, 0xb7, 0x78, 0x6c, 0xc7, + 0x01, 0x16, 0x53, 0x47, 0xe0, 0x15, 0xe0, 0xc3, + 0xe3, 0x34, 0x75, 0xec, 0xfb, 0x32, 0x10, 0x8f, + 0xd5, 0x0e, 0xf7, 0xfa, 0x02, 0x1e, 0xc9, 0x14, + 0x3b, 0x4f, 0x1d, 0xc5, 0x96, 0xac, 0x75, 0x78, + 0x69, 0x94, 0x82, 0xd8, 0x7f, 0x10, 0xe6, 0x50, + 0x5d, 0xef, 0x07, 0xcb, 0x64, 0x73, 0xf6, 0x34, + 0x35, 0x22, 0x94, 0x78, 0xf0, 0x5d, 0xd7, 0x37, + 0x74, 0xbf, 0x54, 0x3f, 0x3a, 0x6d, 0xd6, 0x6b, + 0x1a, 0x77, 0x29, 0xee, 0x1b, 0x63, 0x54, 0xc3, + 0x2d, 0x72, 0xf1, 0xbc, 0xc1, 0x0a, 0xe5, 0xbd, + 0xf8, 0x1f, 0x15, 0x05, 0x8b, 0x06, 0x1e, 0x6c, + 0xc7, 0x59, 0x48, 0xf5, 0x02, 0x39, 0x38, 0x3e, + 0x98, 0x75, 0x65, 0xc1, 0x88, 0x32, 0xa4, 0x29, + 0xfb, 0x2a, 0xbb, 0xfd, 0x51, 0x7e, 0x11, 0x52, + 0x08, 0xc4, 0x0b, 0xb2, 0xba, 0xe8, 0x57, 0x6a, + 0x2a, 0xf7, 0x41, 0x62, 0xf2, 0x40, 0xbf, 0xdc, + 0x7d, 0x6e, 0x1c, 0xd4, 0x49, 0x20, 0x84, 0x98, + 0x23, 0xb0, 0x3c, 0x79, 0xe8, 0x7d, 0xee, 0xc5, + 0xb5, 0x72, 0xb1, 0xbd, 0x9b, 0x77, 0x9a, 0x40, + 0xc2, 0xd8, 0x16, 0x56, 0x89, 0x80, 0x21, 0x43, + 0x01, 0xbc, 0x70, 0x5b, 0x32, 0x4b, 0x3f, 0xaf, + 0x5e, 0x49, 0x24, 0x63, 0x59, 0xa5, 0x18, 0x66, + 0x47, 0x9c, 0x14, 0x94, 0x44, 0xab, 0x5d, 0x62, + 0xb8, 0x86, 0x61, 0x13, 0xd3, 0x41, 0x69, 0xee, + 0x16, 0x60, 0x48, 0xec, 0xd8, 0xaf, 0x6e, 0x83, + 0x4b, 0x59, 0x73, 0x5c, 0xa5, 0xe5, 0xf3, 0x98, + 0xbf, 0x7b, 0xdc, 0x51, 0xfa, 0x64, 0xab, 0x8d, + 0x99, 0x5b, 0x29, 0x63, 0x5b, 0x3f, 0x8a, 0xaa, + 0xca, 0xd3, 0x24, 0x76, 0x2a, 0xe8, 0xbb, 0xfc, + 0x46, 0xc2, 0x93, 0xc5, 0xa7, 0xf0, 0x9d, 0x7d, + 0x4c, 0x77, 0x4e, 0xfd, 0xe0, 0xad, 0x25, 0xff, + 0x70, 0x94, 0xcb, 0x64, 0xe4, 0x4e, 0x57, 0x59, + 0xd8, 0xc4, 0x2a, 0x8f, 0xb3, 0x95, 0xc2, 0xc4, + 0x74, 0x0b, 0x35, 0x3c, 0x0f, 0xd3, 0x65, 0x77, + 0x6d, 0x51, 0x4d, 0x83, 0xa8, 0x9c, 0x7a, 0xde, + 0x8b, 0x3e, 0xda, 0x50, 0xf8, 0x3d, 0x96, 0xc9, + 0xa8, 0x1c, 0xc1, 0xd2, 0xa7, 0x03, 0x66, 0xb9, + 0x50, 0x20, 0xfc, 0xfc, 0xe2, 0x61, 0xff, 0x53, + 0x3c, 0xc0, 0xae, 0xa5, 0xdd, 0x51, 0xed, 0x55, + 0x89, 0x14, 0xb6, 0x9f, 0x86, 0xd3, 0xd4, 0xb1, + 0x67, 0xc6, 0xd7, 0xeb, 0x59, 0xf3, 0x6a, 0x2c, + 0x6c, 0x9a, 0x39, 0x0b, 0x92, 0x2a, 0x40, 0x14, + 0xa2, 0xd1, 0x05, 0x2d, 0x58, 0x86, 0x6d, 0x74, + 0xd9, 0x5c, 0x09, 0xcf, 0xb5, 0x3c, 0x91, 0x73, + 0x56, 0x05, 0xbb, 0x6d, 0x23, 0x8b, 0xf2, 0xa4, + 0x7b, 0x83, 0xc8, 0x7c, 0x92, 0x14, 0x32, 0xb9, + 0x1b, 0xfe, 0x28, 0xb9, 0x1f, 0xcf, 0x4b, 0x58, + 0x98, 0x0e, 0x30, 0xd1, 0xe5, 0x51, 0xb1, 0x51, + 0x75, 0xdf, 0x3f, 0x3f, 0x39, 0xd0, 0xc5, 0xc8, + 0x58, 0x6e, 0x5b, 0xf8, 0x10, 0x04, 0xa4, 0x58, + 0xd4, 0xbf, 0x4e, 0x36, 0x3e, 0xb5, 0x11, 0xb1, + 0x62, 0x57, 0xd2, 0xbb, 0xf7, 0x1e, 0xf1, 0xdc, + 0x23, 0x8d, 0xb4, 0x5c, 0xef, 0xba, 0x3b, 0x83, + 0xe3, 0xbf, 0xa4, 0xbc, 0x71, 0x15, 0xe8, 0xde, + 0x05, 0x13, 0x10, 0xde, 0xec, 0xf7, 0x37, 0xfa, + 0xec, 0x1b, 0x89, 0x6f, 0x3d, 0x10, 0xfa, 0x2a, + 0xe2, 0x1c, 0x4a, 0x4a, 0xe8, 0x12, 0x36, 0x11, + 0x99, 0x56, 0xd2, 0xd1, 0xf2, 0xc7, 0x98, 0xcd, + 0xb1, 0xfd, 0xbb, 0xc0, 0x2e, 0xa0, 0x05, 0x2c, + 0xe5, 0x6d, 0x1c, 0x25, 0x7d, 0x97, 0xa9, 0x29, + 0x19, 0x92, 0xaf, 0x52, 0x5b, 0xd9, 0x05, 0x68, + 0xae, 0x30, 0xb7, 0x38, 0x07, 0xcd, 0xc6, 0xd5, + 0x24, 0x61, 0xc8, 0x6e, 0x26, 0x92, 0xcc, 0x34, + 0x68, 0x52, 0x91, 0x5e, 0x5f, 0xc8, 0x67, 0x7f, + 0xe5, 0x02, 0x35, 0x1e, 0xf3, 0x1f, 0xcc, 0x1e, + 0x2b, 0x07, 0xbe, 0x20, 0x00, 0x5f, 0x06, 0x3e, + 0xc4, 0x5e, 0x75, 0xc0, 0xd1, 0x04, 0x03, 0xa1, + 0x52, 0x87, 0x77, 0x0d, 0x4a, 0xf0, 0x9a, 0xd1, + 0x3e, 0x67, 0x59, 0x8e, 0x9e, 0x86, 0xc2, 0x89, + 0xb8, 0xdb, 0x07, 0xca, 0xd8, 0xcb, 0x23, 0x57, + 0x38, 0xc5, 0x22, 0x1d, 0xea, 0x44, 0xfe, 0xb1, + 0xe2, 0xe5, 0x69, 0xd5, 0x59, 0x3b, 0x82, 0x6c, + 0xcb, 0x02, 0x5b, 0x28, 0xe0, 0xa4, 0x02, 0x61, + 0x8c, 0x4a, 0x23, 0x45, 0x4a, 0x61, 0xe1, 0x45, + 0x44, 0xcd, 0x9f, 0xad, 0x5f, 0xc8, 0x1b, 0x7b, + 0x8e, 0x39, 0x20, 0xbb, 0xc6, 0x3b, 0x76, 0x85, + 0x56, 0xb6, 0xd2, 0xa0, 0x8f, 0x1e, 0xfa, 0xe3, + 0xcf, 0x32, 0x42, 0x32, 0x19, 0x05, 0xdc, 0x56, + 0x8f, 0xe3, 0x4e, 0xd9, 0x0c, 0x07, 0x54, 0x8d, + 0x65, 0xdc, 0x08, 0x59, 0xfd, 0x9a, 0x1b, 0x1e, + 0xf3, 0xdc, 0x32, 0x64, 0xaf, 0x17, 0xc4, 0x2c, + 0x7e, 0x72, 0x5f, 0x3e, 0x46, 0xb7, 0xdd, 0x40, + 0x49, 0x5b, 0x9c, 0x32, 0x92, 0x1c, 0x6c, 0x9d, + 0x58, 0x79, 0xc2, 0xb8, 0x20, 0xbb, 0x39, 0xd9, + 0x86, 0x7c, 0x06, 0xf3, 0x5b, 0xcb, 0x0f, 0xd0, + 0x2d, 0x7c, 0x2e, 0x05, 0x34, 0xfc, 0xa1, 0x1f, + 0x66, 0xba, 0x17, 0xdb, 0x3d, 0x3d, 0x2f, 0x7e, + 0x25, 0x20, 0xa7, 0xb9, 0xd1, 0x2f, 0xea, 0x06, + 0x33, 0x5d, 0x69, 0xe8, 0xb9, 0x05, 0x72, 0x85, + 0x7a, 0x09, 0x99, 0x5a, 0x17, 0x57, 0x1d, 0xd7, + 0xb1, 0xe4, 0x7e, 0x8e, 0x7a, 0x9c, 0xdf, 0xcf, + 0x4d, 0x09, 0x53, 0x4c, 0x84, 0x57, 0xc9, 0x7b, + 0x7f, 0x66, 0x77, 0xa6, 0xc0, 0xc9, 0x3a, 0xb1, + 0x1f, 0xe4, 0xfc, 0x8e, 0xdd, 0x7c, 0x50, 0xe4, + 0xdb, 0xf9, 0x35, 0x8e, 0x43, 0x3e, 0x38, 0xb1, + 0x1b, 0x6f, 0xde, 0xab, 0xcc, 0xb4, 0x5b, 0xec, + 0x42, 0x10, 0xc6, 0x3a, 0xd4, 0xa6, 0xc4, 0x98, + 0xe8, 0x81, 0x30, 0x58, 0x03, 0xc6, 0xea, 0xc9, + 0xee, 0x45, 0x1b, 0x84, 0x3d, 0x80, 0x06, 0x7f, + 0xdf, 0x8a, 0x8c, 0xac, 0xc1, 0x33, 0x98, 0xd4, + 0x2a, 0xdc, 0xa9, 0xe0, 0xd7, 0xd8, 0x3a, 0x4f, + 0xd7, 0xb6, 0x5c, 0x1c, 0x4b, 0x06, 0x3e, 0x01, + 0x62, 0xfc, 0x50, 0x64, 0xe7, 0x04, 0x59, 0x1c, + 0x9c, 0x92, 0x81, 0xb8, 0x1f, 0x4b, 0x7e, 0xba, + 0xfc, 0x7b, 0x2d, 0x67, 0x56, 0xfc, 0xbd, 0x41, + 0xa9, 0xbd, 0x90, 0x25, 0xc0, 0x60, 0x0f, 0xe6, + 0x3b, 0xcf, 0x42, 0xf2, 0xdd, 0xab, 0xd5, 0xe1, + 0xf0, 0xbb, 0x88, 0x50, 0xf0, 0xde, 0x26, 0x91, + 0xa7, 0x93, 0xfb, 0xe7, 0xea, 0x75, 0xf0, 0x2a, + 0x5b, 0x97, 0xd3, 0xe2, 0x61, 0x0e, 0x4b, 0xba, + 0x99, 0x97, 0xba, 0xbe, 0x0c, 0x86, 0x89, 0x27, + 0x7e, 0xd4, 0xc7, 0x2d, 0xdf, 0x4b, 0x0d, 0x5c, + 0xa9, 0x64, 0x77, 0xaf, 0xfe, 0x63, 0xc8, 0x9b, + 0x1f, 0xfb, 0xf0, 0x86, 0xd7, 0x58, 0x7f, 0xbb, + 0x4b, 0x07, 0x16, 0x85, 0x09, 0x3c, 0x93, 0x9a, + 0x2d, 0x3b, 0xfe, 0xd6, 0xb0, 0x30, 0xd1, 0x0b, + 0x87, 0xb2, 0xc6, 0xf4, 0x23, 0x36, 0x08, 0x04, + 0xf3, 0x2d, 0x44, 0x6b, 0xbd, 0x65, 0x64, 0x14, + 0xd2, 0x08, 0x41, 0xa9, 0xf4, 0x53, 0xd3, 0xe8, + 0x01, 0xaa, 0xcc, 0xf6, 0xa4, 0x74, 0x53, 0x87, + 0x84, 0x84, 0xe4, 0x49, 0xc6, 0xf8, 0xed, 0xa9, + 0x0d, 0xdf, 0x06, 0x03, 0xbf, 0x55, 0x46, 0xa5, + 0xb7, 0x1b, 0x24, 0xaa, 0xf2, 0x01, 0x8e, 0x25, + 0x66, 0xe4, 0xad, 0x19, 0x89, 0x86, 0x0f, 0xf9, + 0x5f, 0x5b, 0x78, 0x7b, 0xf2, 0xdb, 0xfd, 0x1e, + 0xbf, 0xcb, 0x9a, 0xa4, 0x38, 0x38, 0x14, 0x91, + 0x68, 0xda, 0x17, 0x93, 0x24, 0x42, 0xdf, 0x94, + 0x77, 0x75, 0xb5, 0xe3, 0x05, 0x29, 0xc9, 0xfa, + 0x31, 0x63, 0x87, 0x2d, 0x9d, 0x8d, 0xe5, 0x81, + 0xaf, 0x0c, 0xc5, 0x25, 0xdc, 0xf4, 0xcf, 0x69, + 0x7a, 0xe1, 0x6d, 0x26, 0x7a, 0xc6, 0xdd, 0x54, + 0x01, 0xb3, 0x21, 0x57, 0x5b, 0xaf, 0x83, 0xa1, + 0x15, 0x38, 0xbf, 0x02, 0x78, 0xc2, 0x8d, 0xc6, + 0xed, 0xb1, 0xd3, 0x97, 0x97, 0xae, 0xf3, 0x90, + 0x6a, 0xed, 0x1f, 0xb5, 0x52, 0x06, 0x58, 0xf4, + 0x16, 0xe7, 0xde, 0x6e, 0xfc, 0x12, 0x1a, 0x8f, + 0x72, 0xbd, 0xed, 0x13, 0x81, 0x57, 0x66, 0xf2, + 0x1e, 0x29, 0xa0, 0x37, 0xfd, 0xa9, 0x3b, 0xec, + 0xde, 0xb1, 0x8d, 0xb7, 0x16, 0xf6, 0xc4, 0x8b, + 0x09, 0x32, 0xdd, 0x49, 0x0e, 0x8b, 0xbc, 0xc3, + 0xa6, 0xd3, 0x9b, 0x8c, 0xe7, 0x1b, 0xb0, 0x71, + 0xb9, 0x5d, 0x83, 0x59, 0xca, 0x28, 0x50, 0x70, + 0xa1, 0x95, 0x12, 0xe9, 0xf5, 0x5d, 0x74, 0x5b, + 0xd7, 0x55, 0xb9, 0xc4, 0xf6, 0x89, 0x19, 0x2c, + 0x8e, 0x4a, 0x86, 0x8a, 0x4d, 0x05, 0x05, 0x85, + 0x57, 0xc8, 0x9b, 0xf1, 0x35, 0xe0, 0xd3, 0x00, + 0x46, 0xe6, 0x02, 0xed, 0x1e, 0xdb, 0x46, 0xb7, + 0x22, 0xa4, 0x4b, 0xa4, 0xbd, 0x69, 0xd0, 0x89, + 0xd6, 0x97, 0x37, 0x6c, 0xd8, 0x5e, 0x60, 0xe1, + 0xfe, 0x4e, 0x79, 0xa9, 0x27, 0x8f, 0xf1, 0x79, + 0xc6, 0x2b, 0x64, 0x84, 0xc0, 0x1b, 0x08, 0xe7, + 0x83, 0xdb, 0xc0, 0x76, 0x18, 0xf3, 0x5f, 0x68, + 0xa5, 0x67, 0x56, 0x9f, 0x38, 0x13, 0x52, 0xf0, + 0xe3, 0x80, 0xbd, 0x85, 0x0d, 0x89, 0x1c, 0x4a, + 0x5b, 0x29, 0x51, 0x44, 0x9c, 0xbe, 0x7d, 0x74, + 0xb3, 0x14, 0xae, 0x1b, 0x1c, 0x33, 0x47, 0x2c, + 0xaa, 0xdd, 0xff, 0x6f, 0xf1, 0x69, 0xf5, 0xb1, + 0x44, 0x56, 0x4d, 0xc3, 0xb7, 0x6f, 0x29, 0xa7, + 0x99, 0x49, 0xce, 0xa4, 0x52, 0x36, 0xa7, 0x4e, + 0xb3, 0xad, 0x46, 0x8a, 0xa8, 0xf2, 0x8f, 0x0b, + 0xbd, 0xd7, 0x1d, 0x79, 0x76, 0x8e, 0x0a, 0x63, + 0xf2, 0x71, 0x90, 0xc9, 0xa2, 0x32, 0x1a, 0x05, + 0xa5, 0x5d, 0x57, 0xb2, 0xba, 0x20, 0x10, 0x66, + 0xac, 0x1c, 0xde, 0x4d, 0x12, 0xfc, 0xb3, 0x85, + 0xe3, 0x12, 0xb4, 0x27, 0x8f, 0xa4, 0xc9, 0x59, + 0x44, 0x4f, 0xdc, 0x3a, 0x74, 0x95, 0x44, 0xa5, + 0xb1, 0x74, 0x6b, 0xbb, 0x42, 0xd8, 0x2e, 0x27, + 0x2e, 0xc1, 0x23, 0xa3, 0x5c, 0x09, 0x1d, 0xbf, + 0x81, 0x57, 0xa2, 0x86, 0x9d, 0xcc, 0xd9, 0x39, + 0x76, 0x29, 0xdd, 0xde, 0x19, 0xff, 0xe8, 0x65, + 0x70, 0xa2, 0x00, 0xd8, 0x0e, 0x50, 0xc9, 0xf7, + 0x36, 0x19, 0x66, 0x54, 0x61, 0x9b, 0x60, 0x4d, + 0xe0, 0xac, 0xf4, 0x8f, 0x67, 0x96, 0x27, 0x62, + 0x4c, 0xa1, 0xfa, 0x80, 0xb5, 0x43, 0x6c, 0x61, + 0x77, 0x07, 0x47, 0xc4, 0x6b, 0xcc, 0x23, 0x13, + 0x9f, 0x98, 0xf7, 0x34, 0x84, 0x06, 0x3c, 0x31, + 0xfb, 0xb5, 0x9c, 0x44, 0x51, 0xa0, 0xe7, 0x78, + 0x7c, 0x86, 0x11, 0x55, 0xd7, 0xd8, 0x30, 0x43, + 0x58, 0xaf, 0x9e, 0x26, 0x8c, 0x12, 0x5f, 0xce, + 0xa7, 0xe7, 0x53, 0x3d, 0xaa, 0xf7, 0x0d, 0xf5, + 0x9b, 0x91, 0xba, 0xac, 0xec, 0x4a, 0xb9, 0xaf, + 0x94, 0x34, 0xb3, 0x8c, 0xf0, 0xf2, 0xce, 0x14, + 0x2b, 0xc5, 0x35, 0x25, 0x2b, 0xcb, 0xbf, 0x5e, + 0x91, 0x48, 0xf7, 0x01, 0x42, 0x5d, 0x17, 0x89, + 0xeb, 0xea, 0x75, 0x5b, 0x44, 0x73, 0xa6, 0xeb, + 0x1b, 0x8d, 0xb5, 0x95, 0xed, 0xca, 0xf3, 0x5f, + 0xf8, 0x80, 0xc4, 0xc7, 0x2d, 0xf3, 0xf0, 0x86, + 0x8f, 0x88, 0x6c, 0x67, 0xea, 0xd0, 0x38, 0x7a, + 0x1b, 0x7e, 0x9e, 0xf6, 0x5f, 0x56, 0x4f, 0x94, + 0xf2, 0xf8, 0xbb, 0x96, 0xb1, 0x9e, 0x0f, 0x90, + 0x92, 0xe5, 0x5d, 0x16, 0xea, 0x2e, 0xab, 0x0b, + 0x4c, 0x9b, 0x40, 0xa0, 0x35, 0x12, 0x7b, 0x88, + 0xa6, 0xbe, 0x1d, 0x05, 0x51, 0x79, 0xe1, 0xae, + 0x06, 0x42, 0xe7, 0xe8, 0xed, 0x36, 0xcb, 0x5f, + 0xff, 0x05, 0x3a, 0xc3, 0x80, 0x51, 0x51, 0x14, + 0xe0, 0x6f, 0x0d, 0x8f, 0x3a, 0xa3, 0xd0, 0x99, + 0xb0, 0xc9, 0x02, 0x42, 0xd8, 0x26, 0xbe, 0x51, + 0xee, 0x42, 0x7d, 0x73, 0xc2, 0xc5, 0x0b, 0xb9, + 0x03, 0x26, 0x8e, 0xac, 0x65, 0x41, 0xbf, 0xaa, + 0xf4, 0x34, 0xfe, 0xe1, 0xf3, 0xdb, 0x3c, 0x0b, + 0x5c, 0x72, 0x2c, 0x0b, 0x6c, 0x83, 0x9c, 0xa4, + 0x8f, 0xac, 0x15, 0x76, 0x23, 0xf3, 0x5b, 0xa9, + 0x25, 0x71, 0xe1, 0x7d, 0x85, 0x41, 0xd0, 0xc8, + 0x48, 0x93, 0x7b, 0xa0, 0x59, 0x02, 0xb9, 0xe9, + 0x6f, 0x8c, 0xda, 0xa9, 0x0d, 0x0c, 0x95, 0x33, + 0xfe, 0x13, 0xc0, 0xdc, 0xad, 0x36, 0xe1, 0xd0, + 0x91, 0x4c, 0xe4, 0xa8, 0x2f, 0xf5, 0xd1, 0x66, + 0x8a, 0x2c, 0x5d, 0xcc, 0xfb, 0xb2, 0xa9, 0x1a, + 0x2b, 0x04, 0x9b, 0x83, 0x72, 0xb2, 0xd6, 0x43, + 0x53, 0xcd, 0x28, 0x7f, 0x8a, 0x95, 0xb5, 0x93, + 0x54, 0xf7, 0xcc, 0x95, 0xca, 0x8a, 0xec, 0xb2, + 0x49, 0x46, 0x11, 0xc6, 0x4e, 0x60, 0xe5, 0xcd, + 0x42, 0x29, 0xdf, 0x14, 0x47, 0x42, 0x6d, 0xd9, + 0x46, 0xcb, 0x07, 0xd9, 0xf9, 0x3d, 0xa6, 0x60, + 0x71, 0x80, 0xbb, 0xe8, 0xfd, 0x73, 0x22, 0x1a, + 0x67, 0x5f, 0x16, 0x95, 0x81, 0x74, 0x03, 0xbe, + 0xd7, 0x20, 0x27, 0xaf, 0xd3, 0x48, 0x62, 0x20, + 0xca, 0x0b, 0xff, 0xd5, 0x41, 0xa5, 0xd4, 0xa9, + 0x22, 0x51, 0x68, 0x67, 0xe3, 0x5d, 0xc1, 0x70, + 0xc2, 0x5f, 0x79, 0xf9, 0x27, 0x4d, 0x96, 0x92, + 0xd4, 0xd9, 0x03, 0xef, 0x50, 0xd0, 0x99, 0x69, + 0x78, 0xe2, 0xec, 0x7d, 0x09, 0x6b, 0x96, 0xfd, + 0x62, 0x61, 0xf4, 0xb8, 0x86, 0x09, 0xa5, 0xcf, + 0x41, 0x67, 0x6e, 0xbe, 0x3c, 0x3f, 0xb6, 0x58, + 0xe2, 0xe7, 0x97, 0xda, 0xde, 0x2c, 0x82, 0x12, + 0xee, 0x44, 0xd2, 0x87, 0x91, 0x11, 0x46, 0xaf, + 0x16, 0xf7, 0xc0, 0x8e, 0x7d, 0x71, 0x03, 0xd6, + 0x76, 0x5c, 0x0d, 0x28, 0x16, 0x03, 0xbd, 0xc0, + 0x7a, 0xc0, 0x44, 0x3a, 0xf0, 0xc7, 0x75, 0xc8, + 0xad, 0x28, 0x5c, 0xd7, 0x18, 0x53, 0x5f, 0xcf, + 0xe2, 0x72, 0x7d, 0xa6, 0xb6, 0x09, 0xf6, 0x2d, + 0xc0, 0xaa, 0x25, 0x35, 0x2f, 0xa3, 0xbe, 0x9e, + 0x91, 0x68, 0x57, 0xa8, 0x69, 0xa5, 0x45, 0x43, + 0xdb, 0x58, 0xc8, 0xee, 0x05, 0x62, 0x1d, 0x7b, + 0x0d, 0x66, 0x83, 0x44, 0x26, 0x0c, 0xdf, 0x8b, + 0x6e, 0x72, 0x60, 0x2f, 0xd6, 0x77, 0x5d, 0x62, + 0xc0, 0x56, 0xe3, 0x18, 0x0a, 0x85, 0x79, 0x43, + 0x9f, 0x5c, 0x2d, 0x42, 0xd2, 0x47, 0xb2, 0xa7, + 0x48, 0x5e, 0x29, 0x95, 0x1a, 0xd7, 0x0c, 0x65, + 0xcd, 0x8d, 0xd9, 0xfb, 0x7d, 0xad, 0x3e, 0x93, + 0x1c, 0x18, 0x5c, 0xaf, 0x9b, 0x24, 0x63, 0xe3, + 0xc9, 0x90, 0x5e, 0x45, 0x51, 0x35, 0x59, 0x44, + 0x35, 0x6b, 0xe4, 0xb1, 0x89, 0xcc, 0xc7, 0xd3, + 0x54, 0x62, 0xa2, 0x1a, 0xc0, 0x60, 0x57, 0x9e, + 0x70, 0x85, 0x42, 0xbe, 0x2b, 0x44, 0xe9, 0xfe, + 0x0c, 0xa2, 0xd7, 0x49, 0xc3, 0x50, 0xd3, 0x3f, + 0x0a, 0xa4, 0xbd, 0xf6, 0x01, 0x9b, 0x5a, 0x1f, + 0xdf, 0xe6, 0x3f, 0x56, 0xa0, 0xc8, 0x14, 0xff, + 0xd1, 0xd5, 0x8d, 0xab, 0x7d, 0x20, 0x82, 0x12, + 0xe6, 0x75, 0x4e, 0xc4, 0x21, 0xd7, 0x14, 0x74, + 0xa0, 0xb4, 0x46, 0x07, 0xd4, 0xb8, 0xc2, 0x40, + 0xf2, 0x99, 0x33, 0xfe, 0x60, 0xe1, 0x6a, 0x69, + 0xf2, 0x35, 0xda, 0x95, 0x57, 0x7b, 0x30, 0xe3, + 0x34, 0x09, 0xe2, 0xf5, 0x57, 0xd7, 0x3e, 0x19, + 0x23, 0x1c, 0x86, 0xf9, 0x9e, 0xe6, 0xb3, 0x0d, + 0x04, 0x37, 0x1e, 0x26, 0x9f, 0xd9, 0xf6, 0xd0, + 0x8d, 0x85, 0xa6, 0xa3, 0x27, 0x94, 0x82, 0x2b, + 0x1f, 0x4a, 0x5f, 0xe7, 0xfb, 0x16, 0xa6, 0xab, + 0xf9, 0x62, 0x96, 0xb9, 0x48, 0x70, 0x9a, 0xd8, + 0x10, 0xac, 0xae, 0xc4, 0x39, 0x48, 0xfb, 0x79, + 0x91, 0x56, 0x4c, 0x26, 0x48, 0x73, 0x90, 0x00, + 0xf9, 0x15, 0x1b, 0x59, 0x14, 0x0b, 0x11, 0x62, + 0xf7, 0x42, 0xc6, 0x08, 0xd6, 0xb3, 0xc2, 0x68, + 0xd0, 0x39, 0x17, 0x6c, 0x27, 0x21, 0x53, 0xb5, + 0x21, 0x4d, 0x85, 0x87, 0xda, 0x1b, 0x2e, 0x67, + 0x77, 0xb7, 0xbb, 0xfc, 0x1d, 0x50, 0x8c, 0x9f, + 0x2e, 0xae, 0xda, 0x35, 0x42, 0x56, 0x59, 0x9c, + 0xc0, 0x04, 0x12, 0x36, 0x7e, 0x8f, 0x99, 0xb1, + 0xe6, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x0c, 0x10, 0x13, 0x19, 0x22, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa65", + .pk_len =3D DILITHIUM65_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM65_PUBLICKEYBYTES]){ + 0xef, 0x23, 0x61, 0xd2, 0x13, 0x8e, 0xaf, 0x16, + 0xdf, 0x67, 0x8a, 0x3e, 0xe8, 0x05, 0x1d, 0x36, + 0xda, 0x1b, 0xb5, 0x12, 0xfd, 0xe1, 0x0d, 0x87, + 0x63, 0x31, 0xf1, 0xff, 0xb5, 0x66, 0x63, 0x9e, + 0x14, 0x7a, 0x48, 0x84, 0xd9, 0x35, 0x40, 0x0a, + 0x4c, 0x15, 0x07, 0xce, 0x20, 0x68, 0x6b, 0xfb, + 0x23, 0x2e, 0xf6, 0x40, 0xcd, 0xb6, 0x2c, 0xb3, + 0xa0, 0x3b, 0x95, 0x13, 0xb3, 0x21, 0x4d, 0xca, + 0xee, 0x8a, 0x3e, 0x6b, 0xb1, 0x65, 0x44, 0x7e, + 0xac, 0x91, 0x7d, 0xcd, 0xda, 0x9f, 0xa8, 0xce, + 0x91, 0x99, 0x2a, 0x13, 0xb9, 0xf0, 0xed, 0xd9, + 0x00, 0x52, 0x54, 0x09, 0xde, 0xeb, 0x79, 0x41, + 0xc3, 0x15, 0x66, 0x8b, 0x0b, 0xf3, 0x89, 0x56, + 0x7c, 0xaa, 0xf2, 0x36, 0x16, 0x6e, 0xc5, 0x1d, + 0x61, 0x78, 0xbb, 0x4e, 0x8d, 0x49, 0xf5, 0x6c, + 0x7c, 0x7b, 0xe9, 0x5a, 0x58, 0xe5, 0x5d, 0x37, + 0x23, 0x1c, 0x68, 0xb2, 0x18, 0x09, 0x1c, 0xd0, + 0xbf, 0x7f, 0x0b, 0x39, 0xb9, 0x83, 0x15, 0xc7, + 0x80, 0xd0, 0xed, 0xdb, 0xec, 0xed, 0x36, 0x7d, + 0x8f, 0x5b, 0xdf, 0xa2, 0x02, 0xf7, 0x4f, 0x61, + 0x42, 0xc2, 0xb7, 0xce, 0xe4, 0x36, 0xbb, 0x5a, + 0x37, 0x97, 0x57, 0x4e, 0xa1, 0x03, 0x71, 0x8a, + 0x4c, 0x69, 0x26, 0x3c, 0x4c, 0xc9, 0xfc, 0xaf, + 0x8d, 0x0e, 0x65, 0x89, 0xef, 0xab, 0x73, 0x5c, + 0x50, 0xed, 0x1e, 0xd6, 0x7f, 0x65, 0x85, 0xe1, + 0xac, 0x01, 0xed, 0x59, 0xad, 0x4a, 0x80, 0xb4, + 0x71, 0xd0, 0xea, 0x80, 0xdd, 0x37, 0xfe, 0xa8, + 0x96, 0x0d, 0xab, 0x02, 0x42, 0x56, 0xdc, 0x3f, + 0x9b, 0x00, 0x4e, 0x6c, 0xbb, 0x7a, 0xd1, 0x17, + 0x40, 0x11, 0xed, 0x92, 0xc0, 0x6c, 0xfa, 0xdb, + 0x01, 0x5b, 0x74, 0x72, 0x9d, 0xa3, 0x5b, 0x23, + 0x86, 0x20, 0x20, 0xc5, 0x04, 0x5e, 0xbd, 0x69, + 0xba, 0x19, 0x67, 0x41, 0x07, 0x50, 0xd0, 0x3f, + 0x32, 0xcf, 0xce, 0x51, 0xc1, 0x9a, 0x1e, 0xa6, + 0x99, 0x23, 0x5a, 0xf6, 0x24, 0x6d, 0xb7, 0xd8, + 0xd9, 0x12, 0x84, 0x5e, 0x3e, 0x05, 0xc4, 0xe4, + 0x0b, 0x52, 0x7a, 0x0f, 0xd0, 0x38, 0x69, 0x31, + 0x02, 0xc2, 0xfb, 0x06, 0x8f, 0xbb, 0x1b, 0xb7, + 0x96, 0x21, 0xdf, 0x45, 0xdc, 0x8c, 0x1a, 0x16, + 0xb5, 0xa2, 0x07, 0x68, 0xdb, 0x09, 0xf3, 0xe8, + 0x78, 0x89, 0x0f, 0x6c, 0x1a, 0x0b, 0x5e, 0xb5, + 0xb8, 0x07, 0xb0, 0x14, 0x2a, 0x50, 0xae, 0x4c, + 0xe4, 0x8b, 0xbc, 0x5f, 0x52, 0x4d, 0x1f, 0xe8, + 0x77, 0xc4, 0x8c, 0x46, 0xe8, 0x81, 0x3b, 0x6a, + 0x60, 0xcc, 0x82, 0xcd, 0x04, 0x22, 0x38, 0x77, + 0x3f, 0x95, 0x95, 0x55, 0x55, 0xa9, 0x4a, 0x65, + 0x8d, 0x92, 0x8b, 0x61, 0xbc, 0xae, 0xe0, 0x16, + 0x49, 0x8c, 0x08, 0x4f, 0xb0, 0x70, 0x76, 0xcc, + 0xec, 0xee, 0x4a, 0x5e, 0x4b, 0x2b, 0x53, 0x03, + 0xc3, 0x67, 0xf6, 0x4f, 0x2f, 0xd3, 0x8c, 0x18, + 0xf0, 0x74, 0x26, 0xd7, 0x57, 0xef, 0x39, 0x6f, + 0x13, 0x07, 0x1c, 0xfd, 0x98, 0x97, 0x61, 0x08, + 0xbc, 0x24, 0xd3, 0xd6, 0x43, 0x2e, 0x6b, 0x06, + 0x7a, 0x27, 0x2a, 0x94, 0xfc, 0x21, 0x83, 0xc6, + 0xd6, 0xe6, 0x52, 0xd1, 0x62, 0x48, 0x0e, 0x93, + 0x06, 0x08, 0xb6, 0x41, 0x4c, 0x76, 0x78, 0x98, + 0x2b, 0xb8, 0x68, 0x81, 0x36, 0xb6, 0x12, 0x3c, + 0x47, 0xae, 0x54, 0xb9, 0xa1, 0xca, 0x9e, 0x6e, + 0x54, 0x64, 0x91, 0x4a, 0x4f, 0xd8, 0xee, 0xb4, + 0xdb, 0x80, 0xc4, 0xa7, 0x49, 0x62, 0xdf, 0xb3, + 0xc4, 0xd7, 0xf4, 0xbf, 0xab, 0xe8, 0xcb, 0xb9, + 0xc4, 0x70, 0xf2, 0xbf, 0x77, 0xac, 0xe7, 0xdb, + 0x09, 0xd7, 0x9e, 0x1f, 0x00, 0x5a, 0x2b, 0xb1, + 0xfb, 0x89, 0x2e, 0x14, 0xe1, 0x2a, 0xf2, 0xae, + 0x11, 0x44, 0xa6, 0xa2, 0x31, 0x2e, 0x60, 0xb2, + 0x3e, 0xb0, 0x10, 0x2f, 0x18, 0x17, 0xff, 0x32, + 0xf1, 0xc9, 0x21, 0xb8, 0xf3, 0x50, 0xf3, 0x3d, + 0xb0, 0xf3, 0xeb, 0xd1, 0x10, 0x21, 0x53, 0x9a, + 0xbd, 0xf2, 0x18, 0x4d, 0xfb, 0x1e, 0xab, 0x2e, + 0xb6, 0x9b, 0xf6, 0x7c, 0xd4, 0xfc, 0x1e, 0xbe, + 0xee, 0xae, 0x57, 0xee, 0xde, 0xd2, 0xb1, 0x06, + 0x3c, 0xcc, 0x36, 0x10, 0xc1, 0xc9, 0xc1, 0x47, + 0x15, 0x4f, 0x1b, 0x10, 0x0f, 0xaf, 0xc3, 0x7b, + 0x25, 0x2d, 0xe5, 0x9a, 0x6e, 0xef, 0xf1, 0xa9, + 0x25, 0xe6, 0xf3, 0x28, 0x82, 0x73, 0x4b, 0x44, + 0x56, 0x30, 0x9b, 0xe0, 0xfb, 0xfc, 0x5c, 0x84, + 0xd8, 0xe7, 0xf3, 0x0d, 0x43, 0x8b, 0xdc, 0xae, + 0x97, 0xeb, 0x45, 0x9f, 0x0e, 0xb7, 0x58, 0x65, + 0x86, 0x9e, 0x24, 0x2f, 0xd7, 0x4f, 0x21, 0x9c, + 0x67, 0x76, 0x91, 0x27, 0xed, 0x9f, 0xa3, 0xa6, + 0x15, 0x5e, 0xa8, 0x13, 0x58, 0x53, 0x1c, 0x7c, + 0x24, 0x85, 0xbf, 0xea, 0xba, 0x01, 0xd5, 0xf3, + 0x29, 0xa4, 0xd0, 0x34, 0x04, 0x67, 0xf8, 0xb2, + 0xd0, 0x2c, 0x08, 0xd3, 0xb4, 0x6b, 0x42, 0xec, + 0xd0, 0x1e, 0x2e, 0x02, 0xcc, 0xeb, 0xa6, 0x9f, + 0x2b, 0x3a, 0x1b, 0x45, 0x83, 0x53, 0xeb, 0xb1, + 0x8f, 0x51, 0x3d, 0xee, 0xf3, 0x5f, 0x05, 0x10, + 0xfa, 0x15, 0x15, 0x3f, 0x0a, 0x7b, 0xfe, 0xf4, + 0x11, 0x72, 0xc1, 0xe9, 0x99, 0x15, 0x25, 0x74, + 0xf9, 0xe0, 0x14, 0xc6, 0x2b, 0x49, 0x4b, 0x1b, + 0xa2, 0x42, 0x75, 0xd6, 0x0f, 0x3e, 0xc6, 0x74, + 0xbb, 0x44, 0x1f, 0xc4, 0x09, 0x8b, 0x91, 0x9e, + 0x55, 0x5d, 0x4b, 0xaa, 0xe8, 0x16, 0x33, 0x6d, + 0x3d, 0xe5, 0x5d, 0x94, 0xb7, 0x66, 0x5a, 0xf6, + 0x4e, 0x5b, 0x04, 0x16, 0x7b, 0xd3, 0x31, 0x3d, + 0x7a, 0x98, 0xb6, 0x93, 0x69, 0x40, 0x42, 0x1c, + 0xcd, 0x07, 0xc9, 0x80, 0xb0, 0xd4, 0xce, 0x70, + 0x98, 0x19, 0xad, 0x3d, 0xd1, 0x7b, 0xad, 0x8d, + 0x01, 0x4b, 0x26, 0x12, 0x5b, 0xbc, 0x83, 0xbf, + 0xc5, 0x4d, 0xf1, 0xf7, 0xaf, 0xaf, 0xdf, 0xc7, + 0x3c, 0x8a, 0x6c, 0x65, 0xd0, 0x0c, 0x2e, 0x6b, + 0x77, 0xd2, 0xb7, 0x2e, 0xd4, 0xe5, 0xf6, 0x90, + 0xd3, 0x3b, 0xd4, 0xee, 0xe0, 0x10, 0x65, 0x81, + 0x28, 0x24, 0x77, 0xd6, 0x87, 0x94, 0x87, 0x80, + 0xe0, 0xf1, 0x43, 0x7b, 0xc0, 0x9e, 0xa9, 0x74, + 0xfe, 0xa2, 0xf2, 0x85, 0x47, 0x64, 0xe1, 0x31, + 0xe0, 0x5a, 0x99, 0x67, 0x77, 0x82, 0x4e, 0x01, + 0x56, 0xac, 0x28, 0x6d, 0xb8, 0x92, 0x57, 0x7b, + 0x86, 0xb2, 0x78, 0x2d, 0x98, 0x9b, 0x8f, 0x59, + 0xfa, 0xe2, 0x46, 0x91, 0xfe, 0x64, 0xa3, 0x2e, + 0xa4, 0x4c, 0xca, 0xdc, 0x29, 0xb2, 0xb7, 0x4a, + 0x91, 0x95, 0x08, 0x7b, 0x7e, 0x45, 0x7a, 0x37, + 0xc7, 0x67, 0xcf, 0x59, 0x63, 0x78, 0xa1, 0x85, + 0x35, 0xa6, 0x35, 0x15, 0x91, 0x9b, 0x31, 0x3f, + 0x66, 0x23, 0x01, 0x29, 0x9b, 0x04, 0x54, 0x01, + 0x5c, 0x1f, 0x47, 0x51, 0x90, 0x6c, 0x16, 0x56, + 0xe9, 0x76, 0x4e, 0x89, 0x91, 0x13, 0xa0, 0x2b, + 0xcf, 0x33, 0x95, 0xac, 0x83, 0x42, 0x16, 0x1c, + 0xc5, 0xda, 0x1b, 0xe2, 0x60, 0xc6, 0x31, 0x97, + 0x28, 0x2a, 0x40, 0x92, 0x02, 0x65, 0x06, 0x3c, + 0xe9, 0x06, 0x3a, 0xa6, 0xc2, 0x3e, 0x6b, 0x22, + 0x4b, 0x99, 0x04, 0x9d, 0x01, 0x5a, 0x88, 0x25, + 0x6f, 0xa5, 0x9a, 0xc4, 0x86, 0x5e, 0x37, 0xcd, + 0x86, 0x0e, 0x19, 0xb6, 0xcb, 0xa8, 0xf1, 0x46, + 0xf9, 0x0d, 0x8c, 0x76, 0x74, 0xf6, 0x71, 0x93, + 0x5b, 0x2a, 0xec, 0xe2, 0xc5, 0x05, 0x42, 0x2b, + 0x67, 0xb7, 0x8d, 0xb6, 0x9e, 0x14, 0x09, 0xd7, + 0x1d, 0x91, 0xa6, 0x03, 0x90, 0x0e, 0x68, 0xcc, + 0xf2, 0x35, 0x31, 0xed, 0x0b, 0xc1, 0xaf, 0x41, + 0x7a, 0x6e, 0xc9, 0x9b, 0xa0, 0x24, 0x6d, 0xe7, + 0xbe, 0x89, 0x0f, 0x52, 0xbc, 0xe6, 0x4d, 0xa6, + 0x73, 0xc5, 0x54, 0x60, 0xd1, 0xbe, 0xf1, 0x61, + 0x03, 0x73, 0x46, 0x71, 0x3e, 0x18, 0x16, 0x07, + 0xd0, 0x01, 0xed, 0x53, 0xd8, 0x95, 0x4e, 0xf9, + 0x23, 0xae, 0xfc, 0xd7, 0xd3, 0x7d, 0x7e, 0xf2, + 0x99, 0x31, 0x99, 0xda, 0xe8, 0xb8, 0x19, 0x12, + 0xf4, 0x48, 0x5f, 0xfd, 0x90, 0x29, 0x82, 0x1d, + 0x48, 0xab, 0xe6, 0x05, 0xfa, 0x94, 0x45, 0x04, + 0x4c, 0x4d, 0x44, 0xde, 0x51, 0xc4, 0xf7, 0x79, + 0x4b, 0xe1, 0xd5, 0xd1, 0x86, 0x1a, 0xc3, 0x53, + 0xfa, 0xe7, 0x1b, 0x0f, 0x3e, 0x4a, 0x26, 0x09, + 0xa2, 0xa0, 0x8d, 0xc7, 0x2b, 0x20, 0xa1, 0x16, + 0x7b, 0xd3, 0xa5, 0xb9, 0xd9, 0x7a, 0x21, 0x12, + 0x36, 0xf3, 0xc6, 0xa4, 0x7f, 0x4a, 0x92, 0xf0, + 0xdb, 0xdc, 0x4c, 0x81, 0xf1, 0x2f, 0x41, 0xb3, + 0xed, 0x0c, 0x08, 0xf8, 0x5d, 0x23, 0x8c, 0x41, + 0x7a, 0xf1, 0x51, 0xb7, 0x72, 0x81, 0xa3, 0x0b, + 0xf8, 0xab, 0x05, 0x44, 0xb2, 0xb1, 0x01, 0x64, + 0xdd, 0x9f, 0x6b, 0x27, 0x55, 0xd2, 0xa6, 0x56, + 0xcd, 0x76, 0xf0, 0x77, 0x05, 0x4d, 0x08, 0xc4, + 0x46, 0xc4, 0x83, 0xa3, 0x27, 0x24, 0x79, 0x8d, + 0xd9, 0x3f, 0x5b, 0xd3, 0xaa, 0x7a, 0x6e, 0x04, + 0xb2, 0x8c, 0xe7, 0xe6, 0xce, 0xa8, 0x55, 0xc9, + 0x12, 0x7e, 0xd1, 0x78, 0x2e, 0xed, 0xbf, 0x04, + 0x1b, 0x73, 0x21, 0x66, 0xa7, 0xf4, 0x07, 0xe1, + 0x74, 0x2e, 0x22, 0x00, 0xd5, 0x8e, 0x84, 0x89, + 0x60, 0x60, 0x4f, 0xda, 0xfb, 0x9a, 0xda, 0xd8, + 0x45, 0x41, 0x95, 0x77, 0x22, 0x89, 0x10, 0x9b, + 0xb0, 0x64, 0xc3, 0x0a, 0x1c, 0x61, 0x4a, 0xdb, + 0x84, 0xca, 0x19, 0x47, 0x9e, 0x82, 0xbe, 0x56, + 0x22, 0xe3, 0xf5, 0xc7, 0x91, 0x6e, 0x67, 0x26, + 0x04, 0xa4, 0x31, 0x5b, 0xf7, 0x2f, 0x6a, 0x01, + 0xad, 0xd4, 0x7c, 0x4e, 0x74, 0xa6, 0x87, 0x23, + 0x31, 0x37, 0x08, 0xd2, 0x2c, 0x0d, 0x94, 0x1c, + 0x96, 0x52, 0xe0, 0x56, 0x23, 0x23, 0x31, 0x59, + 0x8c, 0xaf, 0x48, 0xe6, 0x07, 0x8e, 0x0d, 0x6c, + 0x09, 0x0b, 0xf2, 0xad, 0x33, 0x14, 0xcd, 0x91, + 0xe7, 0x48, 0xc9, 0x45, 0xcf, 0xad, 0xac, 0xe1, + 0x0a, 0x5b, 0x81, 0x7a, 0xc9, 0x9a, 0xb5, 0x98, + 0x3d, 0xad, 0xb2, 0x1c, 0x79, 0xa9, 0x5f, 0xbb, + 0x2b, 0x4e, 0x53, 0x2f, 0xff, 0x8f, 0x9e, 0xb1, + 0x46, 0x07, 0x1c, 0x48, 0x16, 0xb6, 0xdd, 0x7b, + 0x6a, 0x32, 0xb5, 0x46, 0xfe, 0xb8, 0x51, 0x3f, + 0xfc, 0xfc, 0x24, 0x1a, 0xe8, 0x29, 0x05, 0x81, + 0x31, 0xc2, 0x2a, 0x09, 0x1d, 0xfb, 0xc9, 0x7c, + 0x6c, 0x23, 0x18, 0xa5, 0x2f, 0x69, 0xca, 0xfb, + 0xd6, 0xb0, 0x29, 0xd3, 0xe6, 0x18, 0xb6, 0x2b, + 0x38, 0x23, 0x15, 0x75, 0xc6, 0x37, 0x2a, 0xa4, + 0x24, 0x38, 0x84, 0x54, 0xbc, 0xa4, 0x29, 0x4d, + 0x2a, 0x04, 0x45, 0x05, 0xc2, 0x10, 0x03, 0x69, + 0xc7, 0x27, 0x5c, 0x49, 0xcf, 0xc0, 0x7d, 0xbb, + 0x09, 0xa9, 0x0b, 0x6e, 0xea, 0x80, 0xb2, 0x0e, + 0x60, 0x98, 0x1f, 0xf3, 0x27, 0x8c, 0x17, 0x23, + 0x50, 0x98, 0xae, 0x1a, 0x7c, 0xbf, 0x48, 0xdd, + 0x8b, 0x77, 0x62, 0x23, 0xcd, 0x34, 0x17, 0x39, + 0x96, 0x23, 0x47, 0x08, 0x12, 0xb7, 0x8e, 0x74, + 0xce, 0x4f, 0xf9, 0x26, 0x25, 0x57, 0xa4, 0x28, + 0x36, 0x8e, 0xac, 0x98, 0x13, 0x0f, 0xe3, 0x5f, + 0x24, 0x15, 0x9f, 0xee, 0xb5, 0xfa, 0x8e, 0x39, + 0xcc, 0xaf, 0x14, 0x04, 0x51, 0xd0, 0x1f, 0xea, + 0x2f, 0xd3, 0xc8, 0xe4, 0xd4, 0xe9, 0xfe, 0x68, + 0xe6, 0xe5, 0x96, 0x78, 0x95, 0xaa, 0x9a, 0x62, + 0x11, 0x76, 0x06, 0x1f, 0x07, 0xec, 0xdb, 0xe2, + 0x89, 0x73, 0x3c, 0xe7, 0xc6, 0xda, 0x7d, 0x79, + 0x22, 0x58, 0x65, 0x8a, 0xaf, 0xbf, 0xd7, 0xb2, + 0x3e, 0x8b, 0x08, 0x34, 0x8b, 0x0e, 0x85, 0x58, + 0x0b, 0xb1, 0x05, 0x7a, 0x11, 0x41, 0x55, 0x75, + 0x6c, 0x1c, 0xb7, 0x59, 0x7c, 0x80, 0x02, 0xae, + 0xa8, 0xea, 0xda, 0xe2, 0xfd, 0x60, 0xc5, 0x98, + 0xc5, 0x53, 0xb4, 0xf6, 0x9f, 0x21, 0x7a, 0x29, + 0xe0, 0x48, 0x59, 0xed, 0xc9, 0x96, 0x1e, 0xbe, + 0x59, 0xeb, 0x7e, 0x1f, 0x11, 0x23, 0x2a, 0x05, + 0x09, 0x9d, 0x9d, 0x6f, 0xef, 0xa1, 0xf1, 0xd1, + 0xce, 0x3b, 0x86, 0xd3, 0xa7, 0x46, 0xae, 0x35, + 0x1d, 0x88, 0x7d, 0x69, 0x1a, 0x75, 0xc3, 0x13, + 0x4c, 0x39, 0xed, 0x89, 0x56, 0x74, 0xc8, 0x0a, + 0xd6, 0x5d, 0x9d, 0x7b, 0x65, 0x85, 0x95, 0xa2, + 0x4a, 0xdc, 0x6b, 0xb1, 0x44, 0xda, 0x05, 0x1b, + 0x7e, 0x61, 0x28, 0x36, 0x4f, 0xcd, 0xc4, 0x00, + 0x30, 0x8c, 0x0c, 0xb6, 0x36, 0xfb, 0x5d, 0xf2, + 0x1b, 0x3e, 0x88, 0x2c, 0x10, 0xaf, 0xd0, 0x07, + 0x85, 0xd1, 0xd7, 0x81, 0xd0, 0xb7, 0xb4, 0xf1, + 0xe4, 0x3c, 0xb1, 0xcf, 0x13, 0x58, 0xc6, 0x94, + 0x10, 0xc2, 0x66, 0xd9, 0xda, 0x4c, 0x88, 0x56, + 0xf5, 0xe6, 0x1b, 0x6a, 0xb7, 0x0a, 0xb6, 0xec, + 0x09, 0x2e, 0x12, 0x7d, 0x96, 0x7c, 0x75, 0x3b, + 0x7c, 0x71, 0x92, 0xa2, 0xa1, 0xab, 0x10, 0xc7, + 0x2d, 0x18, 0xfb, 0x52, 0x8a, 0x87, 0x7e, 0x76, + 0xc2, 0xe0, 0x4f, 0x24, 0x5a, 0xd8, 0x04, 0xf5, + 0xcb, 0xf1, 0x42, 0x4b, 0xd8, 0xb0, 0x98, 0x18, + 0x48, 0xe7, 0x44, 0xba, 0xb7, 0x0d, 0xf6, 0xb7, + 0xd0, 0x1a, 0x67, 0x82, 0xfc, 0xa0, 0x70, 0x5e, + 0x13, 0xce, 0xf5, 0x13, 0xf9, 0x66, 0x59, 0xd8, + 0xa9, 0xfa, 0x40, 0x16, 0xb1, 0xef, 0x09, 0x18, + 0xa6, 0xa6, 0xee, 0xda, 0x2d, 0xfa, 0x57, 0x3b, + 0xda, 0x92, 0x1c, 0xd7, 0x01, 0xa2, 0xca, 0x3d, + 0xe9, 0x06, 0xa6, 0x0b, 0xd3, 0x52, 0xd3, 0x8c, + 0xc8, 0xff, 0x0a, 0x92, 0x56, 0x41, 0x98, 0xd1, + 0xaa, 0xc9, 0x6f, 0x96, 0xe8, 0xec, 0x68, 0xc0, + 0x91, 0x7c, 0x0b, 0xd5, 0xc1, 0x25, 0x45, 0x2b, + 0x84, 0x28, 0xa4, 0x46, 0x78, 0x58, 0xa1, 0xbf, + 0x52, 0xd0, 0x48, 0xc4, 0xfc, 0x37, 0xf2, 0x41, + 0x23, 0x14, 0x37, 0x32, 0x01, 0x2e, 0xbc, 0xe1, + 0xa1, 0x30, 0x13, 0x26, 0x40, 0x23, 0x80, 0x7c, + 0x92, 0x80, 0x06, 0x83, 0x6e, 0xb7, 0x25, 0x67, + 0x41, 0x01, 0x34, 0x4a, 0x8e, 0x8a, 0xb0, 0x81, + 0x47, 0xbb, 0x52, 0x61, 0x04, 0x6a, 0x8f, 0x1b, + 0xac, 0x84, 0xfd, 0x59, 0x48, 0xfe, 0xdf, 0x49, + 0x96, 0xfb, 0x21, 0x4b, 0x5d, 0xf4, 0x5e, 0x40, + 0x85, 0x1f, 0x23, 0x05, 0x90, 0x69, 0xdc, 0x57, + 0x78, 0x65, 0x7f, 0x1d, 0x3c, 0xfa, 0x8e, 0x59, + 0xde, 0xa4, 0xf9, 0x38, 0xc5, 0x5f, 0xa1, 0x8e, + 0xff, 0x58, 0x2e, 0x29, 0x59, 0x4a, 0x47, 0x52, + 0xa7, 0xaa, 0xda, 0xeb, 0xdd, 0x76, 0x0a, 0x0e, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x67, 0x6f, 0x8e, 0xb2, 0xcd, 0xfd, 0x17, 0xfb, + 0xdb, 0xbc, 0x03, 0xa0, 0xe9, 0xfd, 0x3e, 0x7a, + 0x94, 0xea, 0x50, 0xd5, 0x1c, 0xfb, 0xec, 0x7a, + 0x3e, 0xe0, 0xde, 0x78, 0x58, 0xe8, 0x31, 0x8a, + 0x8a, 0x07, 0x6f, 0xd6, 0xb0, 0xad, 0x10, 0xaa, + 0xac, 0x1d, 0x6d, 0xcc, 0xea, 0x45, 0xba, 0x40, + 0xb4, 0x2c, 0x4d, 0x31, 0x85, 0x86, 0xb7, 0x4d, + 0x64, 0xa1, 0xa6, 0xef, 0x18, 0x77, 0xd0, 0xf0, + }, + .sig_len =3D DILITHIUM65_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM65_CRYPTO_BYTES]){ + 0x0c, 0x79, 0x06, 0x52, 0x49, 0x9c, 0x28, 0x59, + 0xcd, 0x66, 0x15, 0x4e, 0xe9, 0x6d, 0x6d, 0x25, + 0x57, 0x32, 0x31, 0x59, 0xa7, 0xf8, 0xe1, 0x6c, + 0xbb, 0xa0, 0xdf, 0x01, 0x3f, 0xfa, 0xe0, 0x9a, + 0xa9, 0x28, 0x0e, 0x83, 0x13, 0x91, 0x5f, 0x30, + 0xa9, 0x71, 0xd5, 0x7e, 0x77, 0xf1, 0x7e, 0xe4, + 0xb1, 0x30, 0x14, 0x8d, 0x5b, 0x0b, 0x59, 0xe0, + 0x17, 0xe3, 0x97, 0xa6, 0x60, 0x9c, 0x66, 0xf4, + 0xdb, 0x20, 0xf1, 0xc7, 0x1b, 0x64, 0x02, 0x6f, + 0x4e, 0x6b, 0xcc, 0xa6, 0xf7, 0x99, 0x61, 0xd2, + 0x2f, 0x70, 0x4b, 0x24, 0x3e, 0x35, 0x04, 0xe6, + 0xf1, 0xf3, 0x97, 0x86, 0xb3, 0xe8, 0x2c, 0x00, + 0xaf, 0xb6, 0x11, 0xb0, 0x6c, 0x2e, 0x56, 0x10, + 0xf0, 0x30, 0x94, 0x1d, 0x1a, 0x4f, 0xd3, 0xed, + 0x94, 0x0e, 0x9c, 0xd8, 0xeb, 0xd3, 0x26, 0x5c, + 0x77, 0x51, 0x2e, 0x47, 0xc3, 0xcf, 0x7e, 0x94, + 0xcd, 0x47, 0x48, 0x90, 0xee, 0x51, 0x4d, 0xf1, + 0xce, 0xc5, 0xe2, 0x41, 0x61, 0xbf, 0x8a, 0xb8, + 0x47, 0x2d, 0x0f, 0xff, 0x9b, 0x1b, 0x1b, 0xaf, + 0xc0, 0x54, 0x1e, 0x41, 0xce, 0x28, 0xc7, 0x0a, + 0xe6, 0x0a, 0xa2, 0x1a, 0x86, 0xe8, 0x6c, 0x6d, + 0xec, 0xb6, 0xf8, 0x5f, 0x52, 0x5a, 0x14, 0xc6, + 0x96, 0xe3, 0xc0, 0xe7, 0x41, 0x37, 0x02, 0x3d, + 0x38, 0xe8, 0x16, 0x09, 0x88, 0xe2, 0xa9, 0x28, + 0x28, 0x68, 0x14, 0x07, 0xd9, 0xb6, 0x36, 0xce, + 0x2a, 0xc1, 0xf1, 0xc4, 0x08, 0x54, 0x38, 0xc0, + 0x77, 0x9f, 0x7c, 0x63, 0xde, 0x3f, 0x0c, 0xbc, + 0xd2, 0xef, 0xeb, 0xf4, 0x9e, 0x8e, 0xb0, 0x9c, + 0x5a, 0xa1, 0xcb, 0x62, 0x4c, 0x0e, 0x1c, 0xe5, + 0xdb, 0x23, 0x85, 0xde, 0xf8, 0x21, 0x1e, 0x2d, + 0xcc, 0x9f, 0x1f, 0xb3, 0xe7, 0x27, 0x8a, 0x5a, + 0xfc, 0x02, 0xe2, 0x72, 0x71, 0x30, 0x01, 0x71, + 0xd0, 0x3e, 0x90, 0xaf, 0x5d, 0x9d, 0x38, 0xa8, + 0xc4, 0xfc, 0xa1, 0x3a, 0xfb, 0xf7, 0x69, 0x26, + 0x5c, 0x13, 0xb4, 0x2c, 0x5b, 0x31, 0xcd, 0x8c, + 0x26, 0x99, 0xed, 0x62, 0x5b, 0x39, 0x8e, 0x59, + 0xb1, 0xe5, 0xf5, 0xdc, 0x36, 0xe8, 0x87, 0x0a, + 0xe4, 0x82, 0x60, 0x48, 0x70, 0xb1, 0x08, 0x68, + 0xf4, 0xeb, 0x86, 0x28, 0x45, 0xfc, 0x5a, 0x60, + 0x3f, 0x5e, 0x82, 0xc0, 0x3b, 0x18, 0xd2, 0x0e, + 0xa8, 0xf2, 0xb0, 0x07, 0xf4, 0xbd, 0xab, 0x23, + 0x0c, 0x4e, 0xe0, 0xae, 0x38, 0xe6, 0x93, 0x4f, + 0x58, 0xcd, 0x0b, 0x67, 0xe5, 0xb3, 0xdd, 0x81, + 0x33, 0x9e, 0xdc, 0xd5, 0xc0, 0x1a, 0xde, 0x22, + 0x02, 0xf9, 0x3e, 0xd6, 0x53, 0x39, 0x79, 0xc8, + 0x9f, 0x8a, 0xc5, 0xc9, 0xb0, 0x2a, 0xcb, 0x73, + 0x86, 0xd1, 0xc1, 0xa7, 0x90, 0xe9, 0xc2, 0x37, + 0x3f, 0x9f, 0x5a, 0x09, 0xd5, 0x99, 0x4b, 0xd6, + 0x37, 0x3b, 0xa5, 0x78, 0x97, 0xaf, 0xa9, 0x37, + 0xe4, 0x3a, 0x64, 0x46, 0x6b, 0x6b, 0xd4, 0x11, + 0x2e, 0x24, 0x98, 0xd6, 0x15, 0x36, 0x77, 0x64, + 0x27, 0x84, 0x67, 0x84, 0x12, 0xa6, 0x93, 0x0d, + 0x53, 0x05, 0xff, 0x52, 0x54, 0x4b, 0x22, 0xab, + 0x28, 0xcd, 0x37, 0x05, 0x0b, 0x65, 0x97, 0xd0, + 0x74, 0xaa, 0xa6, 0x16, 0x5c, 0x89, 0x55, 0x08, + 0xbd, 0xf4, 0x77, 0x68, 0xab, 0x5c, 0x7d, 0xc4, + 0x58, 0x46, 0x15, 0x6e, 0x7f, 0x94, 0xf2, 0xd9, + 0x4f, 0xe9, 0x75, 0x83, 0x01, 0xca, 0xc2, 0x8d, + 0x30, 0x63, 0x3a, 0xda, 0x27, 0x16, 0x3b, 0x9d, + 0x45, 0x04, 0x64, 0xe0, 0x76, 0xec, 0x6e, 0x4f, + 0x76, 0x88, 0x21, 0xe3, 0x73, 0xa8, 0x0a, 0xe3, + 0x72, 0xd0, 0x73, 0x41, 0xba, 0x06, 0x79, 0x90, + 0xf5, 0x5c, 0xb6, 0x23, 0x57, 0xca, 0x62, 0xca, + 0x0a, 0xe9, 0xd4, 0x20, 0x16, 0xe7, 0xc3, 0x2c, + 0x92, 0x4c, 0x3a, 0x14, 0xe3, 0x9a, 0x67, 0x80, + 0x14, 0x41, 0x80, 0x1b, 0xe2, 0x8b, 0x00, 0xa0, + 0xb6, 0xc3, 0x78, 0x58, 0xf0, 0x29, 0xa9, 0x0f, + 0x2e, 0x1b, 0x17, 0x3b, 0x07, 0x70, 0xc0, 0x41, + 0x39, 0x06, 0x67, 0x91, 0x60, 0x3a, 0x43, 0xc9, + 0x1e, 0x1d, 0x39, 0xe8, 0xde, 0xc1, 0x62, 0x58, + 0xf6, 0x63, 0xf5, 0xed, 0x83, 0x5e, 0x15, 0xf1, + 0x41, 0xcf, 0x8c, 0x71, 0x64, 0xf6, 0x76, 0xbb, + 0xb6, 0xb4, 0x8e, 0x2a, 0x95, 0x5c, 0x0b, 0xe4, + 0x92, 0x79, 0x56, 0x69, 0xd9, 0x2b, 0x71, 0x61, + 0xa7, 0x1b, 0x48, 0x07, 0x2d, 0xb6, 0x3a, 0x0b, + 0xf9, 0xc2, 0xc1, 0x6f, 0x69, 0x5c, 0x47, 0xa8, + 0x99, 0x20, 0x05, 0xd5, 0x54, 0x32, 0xdb, 0xbc, + 0x88, 0xb1, 0xa3, 0x10, 0x85, 0xf7, 0x98, 0xbd, + 0x89, 0xa9, 0xf0, 0x6c, 0x7e, 0xe7, 0xda, 0x56, + 0xc1, 0x61, 0x50, 0x79, 0x79, 0x71, 0xb5, 0x83, + 0xd5, 0x2a, 0xd2, 0xd6, 0x41, 0x31, 0x1e, 0x8a, + 0x1f, 0x3d, 0xad, 0xf9, 0xb8, 0x5e, 0x7a, 0x80, + 0xc7, 0x9d, 0x07, 0x14, 0xe5, 0xde, 0x28, 0x39, + 0x17, 0x2c, 0xed, 0x2b, 0x5f, 0xe5, 0x3d, 0x3e, + 0x54, 0x4f, 0x0d, 0x9c, 0xa1, 0x83, 0xd7, 0xaf, + 0x7a, 0x39, 0xf1, 0xaa, 0xa7, 0x5d, 0xd9, 0x2a, + 0x7c, 0xbe, 0x4f, 0xb4, 0xb8, 0x85, 0xcf, 0xbf, + 0x0e, 0x42, 0x90, 0x90, 0x48, 0xc5, 0x96, 0x26, + 0xbb, 0x7e, 0x94, 0x90, 0x25, 0x3b, 0x25, 0xb9, + 0xa9, 0xa1, 0xed, 0x18, 0xfa, 0x9a, 0x46, 0xe4, + 0xca, 0x3d, 0x27, 0xc4, 0x7e, 0x9f, 0x3e, 0xdc, + 0x6f, 0x5f, 0x71, 0x6e, 0xc0, 0x41, 0x55, 0x38, + 0x9c, 0x9c, 0x28, 0x85, 0xe3, 0xf0, 0xc4, 0xea, + 0xc7, 0x7f, 0x7c, 0x66, 0x22, 0x89, 0xea, 0xc3, + 0xfa, 0x5a, 0x09, 0x70, 0x1b, 0xc5, 0x30, 0xd5, + 0x71, 0x08, 0x5b, 0x3f, 0x60, 0xa2, 0x75, 0x80, + 0x84, 0x70, 0x14, 0xde, 0x9b, 0x46, 0xbd, 0x53, + 0x98, 0x67, 0xcc, 0x55, 0x4b, 0xed, 0x18, 0x5f, + 0xd6, 0x07, 0x17, 0xcb, 0xcf, 0xde, 0x2a, 0x37, + 0x37, 0x07, 0x5b, 0xa9, 0x88, 0x0c, 0xa2, 0xb9, + 0xf3, 0xe5, 0x3a, 0x7c, 0xa3, 0x09, 0xeb, 0xf6, + 0xab, 0x42, 0x57, 0xf9, 0xc4, 0xab, 0x0a, 0x97, + 0xea, 0x96, 0x4c, 0x58, 0xe9, 0xe4, 0x8f, 0xcc, + 0x35, 0x7f, 0x01, 0x0f, 0x5c, 0x7e, 0xaa, 0x0a, + 0x0c, 0xf2, 0x3c, 0x3e, 0x5c, 0x4f, 0xb6, 0x1f, + 0x08, 0xd7, 0x0a, 0x68, 0xef, 0xf4, 0x95, 0xa5, + 0x59, 0xd6, 0x41, 0xee, 0x31, 0xab, 0x28, 0xd1, + 0x3a, 0xc7, 0xc4, 0xb1, 0x5f, 0xf6, 0x10, 0xef, + 0x59, 0xda, 0x48, 0x7b, 0x9d, 0x50, 0x4b, 0xb9, + 0xe0, 0x90, 0x9d, 0xf9, 0x2f, 0x4e, 0x55, 0xe8, + 0x49, 0xfc, 0x40, 0xa5, 0x33, 0x86, 0xf8, 0x32, + 0x16, 0x60, 0x83, 0x1c, 0x6b, 0x7f, 0xe4, 0xf1, + 0xa1, 0x84, 0x1d, 0x21, 0xbb, 0xca, 0x2d, 0x1a, + 0x3f, 0x7a, 0xd4, 0x8a, 0xcb, 0x7e, 0x3c, 0x3c, + 0xe6, 0x86, 0x8d, 0x08, 0x2f, 0x71, 0x45, 0x46, + 0xeb, 0xd6, 0x4e, 0xf5, 0xf8, 0x46, 0xf3, 0x25, + 0x8e, 0x6b, 0x29, 0x92, 0xa4, 0x47, 0x46, 0xe2, + 0x72, 0xf2, 0x22, 0x64, 0x9a, 0xd1, 0xd7, 0x83, + 0x99, 0x44, 0x1f, 0xe6, 0x48, 0xd5, 0xfc, 0xc7, + 0x7c, 0xb4, 0x3d, 0x3c, 0x21, 0x5d, 0x0a, 0xea, + 0xec, 0x16, 0xf7, 0xb3, 0xef, 0x0f, 0x4a, 0xa6, + 0x91, 0x4d, 0x7e, 0xb1, 0x01, 0x3b, 0xff, 0x94, + 0xb8, 0xd5, 0x91, 0x39, 0x4b, 0x2b, 0x8b, 0x0b, + 0x19, 0x94, 0x64, 0xd7, 0x27, 0x11, 0x71, 0xfc, + 0xc3, 0x80, 0x97, 0x0e, 0x7a, 0x36, 0x31, 0xad, + 0x43, 0x3a, 0x9f, 0xdb, 0x5b, 0x70, 0x29, 0x10, + 0xf3, 0x1a, 0x7a, 0x6e, 0x13, 0x7d, 0x64, 0x36, + 0x95, 0x15, 0x80, 0x15, 0xf5, 0x94, 0xbb, 0xc3, + 0xfa, 0x72, 0x7e, 0x93, 0x68, 0xb2, 0x55, 0xaf, + 0xff, 0x27, 0xeb, 0xa3, 0x0c, 0x27, 0x3a, 0xd1, + 0x00, 0xff, 0x97, 0xe6, 0xff, 0x96, 0x29, 0xce, + 0xd9, 0xba, 0x4d, 0xe4, 0xc2, 0x69, 0x81, 0x04, + 0x6a, 0x0c, 0x89, 0xbf, 0x0e, 0x22, 0xb9, 0x0c, + 0x77, 0x7e, 0xf5, 0x46, 0xc5, 0x53, 0xe3, 0x16, + 0xc4, 0x0c, 0x72, 0xfa, 0x56, 0x9f, 0x2e, 0xf5, + 0xab, 0xa0, 0xeb, 0xa1, 0x8f, 0xce, 0xf0, 0x6b, + 0x10, 0xbd, 0x59, 0x7e, 0x54, 0x1c, 0x6e, 0xd3, + 0x2f, 0x80, 0x4e, 0x9d, 0xf3, 0x47, 0xb2, 0xac, + 0x42, 0x70, 0xac, 0xa8, 0x8d, 0x4c, 0xba, 0x8f, + 0x1a, 0x07, 0x68, 0xbe, 0x3c, 0xd9, 0x74, 0x61, + 0x74, 0x34, 0xcc, 0x7a, 0x63, 0x74, 0xd0, 0x09, + 0x21, 0xed, 0x2a, 0x93, 0x0a, 0x74, 0xab, 0xac, + 0xeb, 0xa9, 0xd9, 0xe6, 0x22, 0xa9, 0x1c, 0x24, + 0x23, 0xd4, 0x87, 0x88, 0x78, 0x86, 0x35, 0xb2, + 0xc6, 0x98, 0x2e, 0x0b, 0xa2, 0x07, 0xac, 0x87, + 0x01, 0xfa, 0xa3, 0x54, 0xa6, 0x09, 0xb0, 0x2f, + 0xe1, 0x57, 0x3d, 0x61, 0x6b, 0x2d, 0x82, 0x07, + 0x2e, 0x6e, 0x14, 0x0d, 0x23, 0xa6, 0x14, 0x56, + 0xc9, 0x3f, 0x65, 0x0d, 0x4f, 0x07, 0xac, 0x22, + 0xd7, 0xc9, 0x29, 0xc6, 0x9b, 0x85, 0x55, 0x2f, + 0xa4, 0x02, 0xfa, 0x2c, 0x3a, 0xea, 0xde, 0xb4, + 0x89, 0x93, 0xc6, 0xa2, 0x4a, 0x13, 0x07, 0x57, + 0x07, 0xb1, 0x6d, 0x7d, 0x80, 0x6c, 0x51, 0x9d, + 0xec, 0x91, 0xdf, 0xbc, 0xcb, 0x3b, 0x17, 0xad, + 0xcf, 0x64, 0x46, 0x6b, 0xf8, 0x79, 0x73, 0x05, + 0x1e, 0x9e, 0x75, 0x6c, 0xa0, 0x3c, 0x64, 0x12, + 0x1f, 0x3e, 0x09, 0x36, 0x2e, 0xe9, 0x4c, 0xc2, + 0x29, 0x3c, 0xf2, 0x21, 0x24, 0x89, 0x98, 0x79, + 0xa2, 0x12, 0x33, 0x22, 0x8f, 0x7f, 0x3a, 0x34, + 0x1b, 0x3a, 0x69, 0x70, 0x40, 0x50, 0x02, 0x56, + 0xb0, 0x68, 0xed, 0x4d, 0x36, 0x40, 0x87, 0xd5, + 0x2d, 0xe9, 0x74, 0x41, 0x35, 0xd0, 0x56, 0x45, + 0xb7, 0x59, 0xe1, 0x0c, 0x0b, 0x73, 0x9e, 0xb7, + 0x59, 0x1a, 0xd0, 0xbe, 0x7e, 0xca, 0x24, 0x12, + 0x94, 0x67, 0x5a, 0x28, 0xe0, 0x29, 0x50, 0x0e, + 0xca, 0x1b, 0x8a, 0xcd, 0x56, 0xe8, 0xa1, 0xb9, + 0x5c, 0xb0, 0x9a, 0x36, 0x0e, 0xf9, 0x5e, 0x4f, + 0x6b, 0xde, 0x03, 0x18, 0x77, 0x41, 0x98, 0x0f, + 0x6e, 0x03, 0x74, 0x8f, 0xd6, 0x38, 0x3c, 0xdc, + 0xe9, 0xc0, 0x5c, 0x92, 0x48, 0xa8, 0x46, 0x29, + 0x1c, 0xab, 0x76, 0x55, 0x21, 0x56, 0x10, 0x16, + 0x14, 0x8b, 0x80, 0x3b, 0xc8, 0x15, 0xf0, 0xb5, + 0x3b, 0xfe, 0xb5, 0x56, 0x8b, 0x45, 0x73, 0xf4, + 0x23, 0xf0, 0x68, 0xdd, 0x4e, 0x27, 0xfc, 0xac, + 0xf5, 0x81, 0x05, 0xd8, 0x89, 0x24, 0xba, 0xb9, + 0xcf, 0xd6, 0x06, 0xb4, 0xfd, 0x12, 0x00, 0xca, + 0x18, 0x44, 0xb4, 0x90, 0xcf, 0xc8, 0xb0, 0x6d, + 0xcb, 0x72, 0xa3, 0xcd, 0x2e, 0x54, 0x56, 0x86, + 0x4b, 0xd3, 0x3a, 0x96, 0x23, 0x4c, 0xd1, 0xf9, + 0x1c, 0xa9, 0x9c, 0x37, 0xe4, 0x04, 0x04, 0x72, + 0x7f, 0x71, 0xdf, 0xfd, 0x47, 0x86, 0x9b, 0x37, + 0x69, 0x1c, 0xc9, 0xa9, 0x51, 0x13, 0xd7, 0xcf, + 0xc5, 0xc3, 0x08, 0x9b, 0x3b, 0x94, 0xed, 0xfd, + 0x06, 0x75, 0xb7, 0x39, 0x86, 0x98, 0x6d, 0x84, + 0x38, 0x45, 0x39, 0xd1, 0x97, 0xef, 0x1f, 0x2e, + 0x50, 0xb5, 0xf2, 0xe0, 0x72, 0xfd, 0x72, 0xd8, + 0xf9, 0x83, 0xa6, 0x16, 0x83, 0xbf, 0x87, 0x12, + 0x2c, 0x47, 0x82, 0xac, 0x59, 0x68, 0x61, 0xe6, + 0xa1, 0x00, 0xc2, 0x5a, 0x4b, 0xf0, 0xac, 0x79, + 0x33, 0x42, 0x8b, 0x9b, 0x81, 0x9e, 0x44, 0xd5, + 0x21, 0x94, 0xf8, 0xbd, 0xb6, 0xe0, 0xe8, 0x80, + 0x87, 0x4d, 0x76, 0xad, 0x08, 0x40, 0xb4, 0x4c, + 0x8a, 0x32, 0x58, 0xed, 0x7c, 0x46, 0xb5, 0x54, + 0xa8, 0x30, 0xf5, 0xe8, 0x98, 0xed, 0xf9, 0x36, + 0x8c, 0x21, 0x9f, 0x1f, 0xc4, 0x50, 0x4c, 0xe8, + 0x99, 0xfb, 0x15, 0xb5, 0x60, 0xaa, 0xde, 0xec, + 0xfa, 0x1b, 0x40, 0xd5, 0x7f, 0xda, 0xed, 0xef, + 0xc6, 0xe0, 0x1b, 0xf1, 0x80, 0x38, 0x00, 0xe7, + 0x44, 0x2d, 0x89, 0xa0, 0x12, 0x9d, 0x26, 0xbb, + 0x33, 0x6e, 0xdd, 0xd1, 0xb3, 0xb5, 0x8f, 0x39, + 0x8e, 0xc3, 0x1f, 0x68, 0x37, 0xb6, 0x09, 0x55, + 0x35, 0x3d, 0x60, 0xfa, 0x71, 0x1a, 0x3f, 0x77, + 0xe5, 0xcc, 0xd0, 0x56, 0x9c, 0x73, 0x06, 0xcd, + 0xf9, 0xab, 0x4e, 0xb8, 0x99, 0x2a, 0xdc, 0x5e, + 0xe7, 0x83, 0xe5, 0x35, 0x34, 0x9f, 0xc8, 0x30, + 0x37, 0xb4, 0x01, 0xc2, 0xb3, 0xc4, 0x1a, 0x7f, + 0x01, 0x1f, 0x3a, 0xbf, 0x39, 0x83, 0xad, 0xc2, + 0x9e, 0x4d, 0xae, 0x0f, 0x46, 0x0e, 0x2e, 0x89, + 0xe8, 0xdb, 0x4d, 0x3f, 0x2c, 0xb0, 0x62, 0x1e, + 0x8b, 0xda, 0x21, 0x2d, 0xff, 0x7d, 0x26, 0xa4, + 0x83, 0x8b, 0xa0, 0x46, 0xdb, 0x56, 0x91, 0xbe, + 0x00, 0x4c, 0xc5, 0x31, 0x46, 0xf5, 0x68, 0x42, + 0x91, 0x69, 0xe6, 0xf3, 0x84, 0xce, 0x20, 0xb1, + 0xfd, 0xbf, 0x58, 0x9e, 0xf9, 0x30, 0x5c, 0xf5, + 0xc7, 0xdf, 0xe1, 0x20, 0x9f, 0x3c, 0xdd, 0x25, + 0xd8, 0xf8, 0xb2, 0x59, 0x54, 0x25, 0x20, 0x9d, + 0x38, 0xf1, 0xbe, 0x0e, 0x5a, 0x30, 0xd4, 0x44, + 0x3d, 0xb5, 0x75, 0xae, 0xb0, 0xbb, 0x1a, 0x8b, + 0x4c, 0xe6, 0x05, 0x1c, 0xa7, 0x47, 0x01, 0xb2, + 0x45, 0x5c, 0x39, 0x77, 0xc7, 0x80, 0x3b, 0xc6, + 0xe7, 0x3e, 0xe7, 0xd0, 0x10, 0x96, 0x81, 0x1b, + 0x67, 0xda, 0xf7, 0x87, 0xf4, 0x49, 0xd0, 0xe2, + 0x21, 0x33, 0x9f, 0xdf, 0x56, 0x68, 0x03, 0x69, + 0xa7, 0x35, 0x30, 0x0f, 0xfb, 0x68, 0x91, 0xe2, + 0x20, 0x85, 0x90, 0x56, 0x73, 0x3c, 0x1a, 0xa6, + 0xae, 0x71, 0x84, 0xe5, 0x73, 0x8a, 0x3a, 0x30, + 0x1d, 0xee, 0x96, 0x25, 0xa4, 0xa6, 0xde, 0x69, + 0x7b, 0xfb, 0xf4, 0x7f, 0xc6, 0xea, 0x65, 0x29, + 0x4a, 0xce, 0xf9, 0xb5, 0x23, 0x85, 0x16, 0x29, + 0xcd, 0x7c, 0xf1, 0x95, 0xaf, 0x5e, 0xb9, 0xbf, + 0xb0, 0x22, 0x92, 0xfe, 0x9e, 0xca, 0x16, 0x52, + 0x04, 0x77, 0x37, 0x78, 0x3d, 0xed, 0x9c, 0x28, + 0x0b, 0xaa, 0x04, 0x9f, 0xe2, 0x2c, 0x5d, 0xfc, + 0x5c, 0xde, 0x39, 0x57, 0x75, 0x1c, 0x0e, 0x10, + 0x26, 0x9a, 0xf2, 0x40, 0x92, 0xcd, 0x10, 0x96, + 0xcc, 0x5d, 0x84, 0x11, 0xae, 0x05, 0x21, 0x5b, + 0x36, 0xd0, 0x51, 0x40, 0x06, 0x8d, 0x47, 0xb1, + 0xcc, 0x82, 0xde, 0xf6, 0x14, 0x24, 0x9b, 0xc4, + 0xbf, 0x4f, 0x8d, 0x53, 0x48, 0x0b, 0xee, 0x14, + 0x6f, 0x8e, 0x1d, 0x09, 0x74, 0x25, 0xd9, 0x28, + 0xe0, 0x1f, 0x5d, 0x24, 0x34, 0x06, 0x94, 0x65, + 0xd4, 0x93, 0x1b, 0xcd, 0x36, 0xbc, 0x9e, 0xc5, + 0x37, 0x57, 0x52, 0xda, 0xcc, 0x72, 0x58, 0x5b, + 0x5c, 0x7a, 0x99, 0x08, 0xe5, 0x28, 0x44, 0x1a, + 0xff, 0x8e, 0xad, 0xc9, 0x0c, 0x53, 0x64, 0xcc, + 0xcc, 0xc5, 0x9f, 0x83, 0x1e, 0x32, 0x26, 0x53, + 0xbb, 0x7e, 0xf1, 0xab, 0x73, 0xfb, 0x47, 0x7d, + 0x7a, 0xb7, 0x8e, 0x10, 0xbc, 0x3b, 0x39, 0x9a, + 0x7f, 0x9a, 0x2c, 0x01, 0xa4, 0x9e, 0x70, 0xac, + 0x4d, 0x15, 0x00, 0x78, 0x67, 0xfc, 0xca, 0x2a, + 0xf9, 0x40, 0xbc, 0xbb, 0x12, 0x55, 0x35, 0xa3, + 0xce, 0x17, 0x72, 0xfe, 0xfd, 0x37, 0x58, 0xdb, + 0x8c, 0x4f, 0xe9, 0x46, 0x67, 0x7d, 0xe8, 0x10, + 0x83, 0x86, 0xd8, 0x46, 0xf6, 0x73, 0x28, 0xdd, + 0xbd, 0x35, 0xfc, 0xbc, 0x92, 0x19, 0x51, 0x24, + 0xbe, 0x0c, 0x82, 0xb3, 0xaa, 0x91, 0xa3, 0x2b, + 0xd6, 0x62, 0xa6, 0x6e, 0xe5, 0xdc, 0x37, 0xfb, + 0x29, 0x93, 0x60, 0xbc, 0x4f, 0x7e, 0x4c, 0x89, + 0xa1, 0x58, 0xed, 0x77, 0xef, 0x1e, 0x0f, 0x54, + 0x4a, 0x8b, 0x36, 0x22, 0x29, 0x8a, 0x30, 0xe3, + 0x26, 0x2c, 0x9e, 0x13, 0x01, 0x5e, 0x53, 0x44, + 0xe4, 0xe3, 0x95, 0xa4, 0xc1, 0x9b, 0xe5, 0x26, + 0x9b, 0x97, 0x4a, 0x5e, 0xbf, 0x07, 0x3e, 0x49, + 0x2e, 0x6d, 0xf2, 0x13, 0xde, 0xf3, 0xbf, 0x44, + 0x1e, 0xfc, 0x6b, 0x92, 0x25, 0xe2, 0x84, 0xd4, + 0x55, 0x0d, 0x36, 0x6c, 0x03, 0x8b, 0x24, 0x6b, + 0x75, 0x8d, 0x15, 0x33, 0xeb, 0xcd, 0x09, 0xaa, + 0x27, 0x2c, 0x37, 0x37, 0xd9, 0xea, 0x8b, 0x4b, + 0x0b, 0x8b, 0xa2, 0x3b, 0xbe, 0xb5, 0xad, 0xaa, + 0x13, 0xda, 0x70, 0x81, 0x8a, 0x1c, 0xe6, 0x38, + 0xaf, 0x2a, 0xce, 0x38, 0xc8, 0x14, 0xf0, 0xc7, + 0x4a, 0x09, 0x4d, 0xbb, 0x12, 0xca, 0x78, 0xc1, + 0x87, 0x8c, 0x76, 0x36, 0xb8, 0x13, 0xd9, 0xe6, + 0xe2, 0x8b, 0x95, 0x81, 0x08, 0xf7, 0xa4, 0x7d, + 0xae, 0x8d, 0xa9, 0x77, 0x0f, 0x56, 0x96, 0x57, + 0x61, 0x76, 0x1a, 0xb3, 0x5a, 0x8f, 0x59, 0xd4, + 0xa6, 0xa7, 0xb4, 0x33, 0xc4, 0x4b, 0x46, 0x68, + 0xe6, 0xed, 0x0d, 0x5c, 0xe6, 0x96, 0xb2, 0x72, + 0x48, 0x3c, 0x89, 0x15, 0xe8, 0x0f, 0xeb, 0x6b, + 0x72, 0xdd, 0xcc, 0x01, 0x75, 0xea, 0x0c, 0xf0, + 0xe4, 0x82, 0xda, 0x53, 0xb3, 0x0c, 0x41, 0xe4, + 0x87, 0x82, 0x7d, 0x88, 0xee, 0x98, 0x03, 0xad, + 0xf5, 0x5e, 0xbb, 0x5e, 0x70, 0x98, 0x59, 0x2f, + 0xec, 0x79, 0xfe, 0x03, 0xd5, 0x29, 0x85, 0x48, + 0x86, 0x1b, 0x4e, 0xe2, 0x02, 0xdb, 0xba, 0xa6, + 0x15, 0x87, 0x69, 0x70, 0xbb, 0x69, 0x9f, 0x92, + 0xfc, 0x56, 0xc0, 0x35, 0xfa, 0xbf, 0xee, 0xa3, + 0x34, 0x7e, 0xa6, 0xa0, 0x89, 0xf1, 0x38, 0x99, + 0x59, 0xb0, 0x5d, 0x1c, 0x1e, 0x7c, 0x2b, 0x35, + 0x14, 0xfa, 0xd0, 0x91, 0xe8, 0xd4, 0xed, 0x4c, + 0x4c, 0x84, 0x8b, 0xe1, 0x34, 0xa7, 0xdd, 0x0c, + 0x34, 0xde, 0xc2, 0xae, 0x1c, 0x05, 0xf4, 0x80, + 0xe0, 0xf8, 0x80, 0x95, 0x21, 0x0c, 0x17, 0x22, + 0xc6, 0xd7, 0xee, 0x00, 0x83, 0x5e, 0xf9, 0x0a, + 0x1c, 0x5c, 0x91, 0xdc, 0x21, 0x67, 0x68, 0x9e, + 0x70, 0xac, 0x37, 0x13, 0xd2, 0x49, 0x1a, 0x71, + 0x63, 0xc3, 0x0f, 0x38, 0x7d, 0x5f, 0x1d, 0xe1, + 0xb0, 0x9a, 0x77, 0x14, 0x0f, 0x14, 0x2e, 0xd5, + 0x65, 0x55, 0x36, 0xae, 0xf6, 0x96, 0xa4, 0x85, + 0x30, 0x0b, 0x24, 0x87, 0x40, 0x4d, 0x74, 0xb7, + 0xcb, 0x04, 0xa5, 0x14, 0xfa, 0x9c, 0xb6, 0x9a, + 0x11, 0xe0, 0xac, 0xb0, 0x13, 0x32, 0x32, 0x33, + 0x3e, 0xb0, 0x95, 0xac, 0x64, 0xac, 0x59, 0xab, + 0x96, 0xea, 0x1e, 0x2f, 0x3c, 0xcc, 0xed, 0x54, + 0x1f, 0x40, 0xb9, 0xa4, 0xd7, 0xe3, 0x0b, 0xef, + 0x04, 0xcb, 0xaa, 0x03, 0x2b, 0x02, 0x20, 0x8e, + 0x7e, 0x3e, 0xbf, 0x66, 0x09, 0x31, 0x18, 0x9f, + 0x4b, 0x77, 0x27, 0x51, 0xb2, 0xc9, 0xf1, 0xe4, + 0xf1, 0xaf, 0xaf, 0xd4, 0x87, 0x05, 0xed, 0x8d, + 0x60, 0x72, 0x36, 0x9e, 0x05, 0xc3, 0x3e, 0xcf, + 0xa5, 0x23, 0x8b, 0xb7, 0x7e, 0xcd, 0xdb, 0x2c, + 0xde, 0xbc, 0xeb, 0x67, 0x6e, 0x2c, 0x59, 0x4d, + 0x7f, 0x4a, 0xd8, 0x4e, 0x69, 0xff, 0xea, 0xb4, + 0x00, 0xc6, 0x2b, 0x31, 0x26, 0x9e, 0x35, 0x7a, + 0xc5, 0x86, 0x02, 0x98, 0xdb, 0xf7, 0xc5, 0x96, + 0xd2, 0x2e, 0x2a, 0xc5, 0x04, 0xc0, 0x9c, 0xb3, + 0x07, 0x86, 0x77, 0x7c, 0x7f, 0x82, 0x97, 0x87, + 0x64, 0xf9, 0xb5, 0x70, 0x39, 0x3c, 0x39, 0x2b, + 0xfe, 0xa7, 0x24, 0xdd, 0x5f, 0xf0, 0x25, 0xe0, + 0x74, 0x69, 0x35, 0x22, 0x9a, 0xaf, 0xa4, 0x80, + 0x77, 0x75, 0x7f, 0x5e, 0xbd, 0xbf, 0xb9, 0x06, + 0x0a, 0x68, 0xd1, 0x2e, 0x8b, 0xc8, 0xa2, 0x76, + 0x68, 0xa5, 0x94, 0xb7, 0xda, 0x41, 0xd1, 0xa4, + 0xfe, 0x86, 0xe4, 0x86, 0xb6, 0xfc, 0x70, 0x81, + 0x37, 0x10, 0x7b, 0x9b, 0xf2, 0x07, 0x33, 0x60, + 0x56, 0x74, 0xbf, 0xc4, 0x66, 0x16, 0xe5, 0xe3, + 0xed, 0x13, 0x72, 0x2b, 0x01, 0x04, 0x13, 0x74, + 0x22, 0xe9, 0xd3, 0x14, 0xd5, 0xd9, 0xa1, 0x66, + 0xb9, 0xb7, 0x0d, 0x30, 0x09, 0xa8, 0xf6, 0xf7, + 0xe8, 0xa8, 0xe8, 0x8b, 0x1e, 0x61, 0xa9, 0xdd, + 0x11, 0x55, 0xb2, 0x48, 0xd1, 0xb3, 0xa4, 0x97, + 0xab, 0xe9, 0x43, 0x0b, 0x46, 0x10, 0xd0, 0xac, + 0x88, 0xe4, 0xcd, 0xa3, 0x67, 0x45, 0xbb, 0xc8, + 0x5e, 0x23, 0x2a, 0x09, 0xf5, 0x6f, 0x55, 0x22, + 0xc2, 0x7a, 0x23, 0xc3, 0x36, 0x28, 0x52, 0xa9, + 0xe9, 0x59, 0xca, 0x04, 0x9c, 0xf7, 0x36, 0x49, + 0x6b, 0xef, 0x07, 0xd0, 0x0c, 0xf3, 0xba, 0x28, + 0x24, 0x3f, 0x19, 0xdc, 0xd3, 0x84, 0xba, 0xbf, + 0x6b, 0x73, 0xef, 0x0b, 0x4d, 0xfe, 0x80, 0x43, + 0xbe, 0x5b, 0x6c, 0xf6, 0x8e, 0x94, 0x04, 0x7d, + 0x49, 0x72, 0xa1, 0x83, 0x27, 0x7e, 0x20, 0x20, + 0xcf, 0xb1, 0x04, 0x87, 0xd2, 0x6d, 0x01, 0x14, + 0xa5, 0x17, 0x31, 0x61, 0x4e, 0xf7, 0xf3, 0xde, + 0x42, 0x98, 0xa4, 0x9a, 0x3b, 0xa6, 0xd1, 0xfe, + 0x47, 0x84, 0xf9, 0xbf, 0x44, 0x95, 0xcf, 0xa1, + 0x3c, 0xa4, 0x1a, 0x42, 0x96, 0x0b, 0x6d, 0x94, + 0x70, 0xb4, 0xbc, 0xc8, 0x4b, 0x4b, 0x23, 0xd4, + 0x95, 0xe2, 0x1e, 0x70, 0x1c, 0xe7, 0x15, 0xf2, + 0xc8, 0x17, 0x01, 0xa0, 0x10, 0x03, 0xfe, 0x03, + 0x80, 0xb3, 0xda, 0x43, 0x6b, 0x13, 0xab, 0x3a, + 0xb6, 0x27, 0x94, 0x52, 0xfc, 0x51, 0xe1, 0x04, + 0x18, 0xff, 0xd4, 0x62, 0xd4, 0x62, 0x8f, 0x04, + 0xa0, 0x41, 0x10, 0xa3, 0x3e, 0x1f, 0xb1, 0x5c, + 0x9d, 0xb2, 0x6f, 0x1e, 0x8f, 0x76, 0x8d, 0xbd, + 0xff, 0x7d, 0xc5, 0x48, 0xee, 0xef, 0x6d, 0x82, + 0xc1, 0x6a, 0xcc, 0xa8, 0xbd, 0x05, 0x7e, 0x7c, + 0x1f, 0x95, 0x39, 0xde, 0xa8, 0x19, 0x47, 0x45, + 0xd7, 0x4a, 0x43, 0x52, 0x3e, 0x1b, 0x86, 0xee, + 0x2f, 0x1e, 0x7e, 0x3c, 0xf1, 0x27, 0xe9, 0x35, + 0x00, 0x6b, 0xf8, 0x56, 0x1f, 0xae, 0x18, 0xe3, + 0x40, 0x1f, 0x7c, 0x95, 0x83, 0x55, 0xe7, 0x78, + 0x98, 0x86, 0x8a, 0x96, 0xb8, 0x87, 0x88, 0x04, + 0x9f, 0x4d, 0x62, 0x40, 0xc7, 0xcf, 0xfa, 0x90, + 0xdf, 0xeb, 0x60, 0xbe, 0xdc, 0x99, 0xdf, 0xae, + 0x4b, 0x96, 0xfc, 0xd6, 0xaf, 0x8c, 0xcb, 0x1b, + 0x38, 0xbc, 0xa3, 0x48, 0xce, 0xd3, 0xa9, 0xd7, + 0xec, 0x1d, 0xbc, 0x22, 0xd9, 0x34, 0xdf, 0xcb, + 0x62, 0x95, 0xe2, 0x32, 0x7d, 0xd3, 0x01, 0x61, + 0x46, 0x9f, 0x2e, 0x26, 0x4b, 0x79, 0xf1, 0x39, + 0xf6, 0x22, 0xad, 0xcf, 0xb1, 0x5a, 0x57, 0xf1, + 0xca, 0x95, 0xc7, 0x20, 0xab, 0x1a, 0xad, 0xf4, + 0xdd, 0x96, 0x0b, 0xb1, 0xae, 0xb6, 0x45, 0xad, + 0x26, 0x2a, 0xbd, 0x17, 0x5e, 0x27, 0x12, 0x6f, + 0x43, 0x43, 0x0a, 0x84, 0x68, 0xb0, 0x11, 0x74, + 0xe3, 0xbe, 0xb2, 0x2c, 0xb2, 0xa2, 0xf4, 0xcf, + 0xd4, 0x0d, 0xd0, 0x21, 0x84, 0x56, 0xc5, 0xbf, + 0xf0, 0x76, 0xb4, 0x44, 0x29, 0xf4, 0x25, 0x5e, + 0x9b, 0x31, 0x56, 0x7a, 0xb9, 0xe2, 0x6b, 0x6c, + 0x7c, 0x7e, 0x03, 0xb6, 0x23, 0xe2, 0xc9, 0xb6, + 0xca, 0xbc, 0xbb, 0x0c, 0x07, 0x4c, 0x2a, 0xea, + 0x0d, 0xb9, 0x55, 0x4f, 0x68, 0xc0, 0x58, 0x2a, + 0xcd, 0xe6, 0xb8, 0x17, 0x6d, 0x1f, 0xb3, 0x31, + 0x28, 0xd3, 0x20, 0x47, 0x54, 0x85, 0x64, 0x13, + 0xfc, 0x99, 0x61, 0x36, 0xc1, 0xb2, 0x9c, 0x68, + 0x4e, 0x5d, 0xdc, 0x0f, 0xdb, 0x68, 0xa9, 0xa9, + 0xc3, 0xbf, 0xd3, 0xbc, 0x03, 0x7a, 0x6e, 0x6c, + 0x3b, 0xa6, 0xf7, 0xc0, 0xb1, 0x64, 0xe3, 0x12, + 0x6d, 0x0c, 0x1f, 0x9e, 0x74, 0x1c, 0xab, 0x15, + 0x0f, 0x4c, 0xbd, 0xfa, 0x0b, 0x39, 0x9c, 0x9c, + 0xb0, 0x50, 0x78, 0x03, 0x8b, 0x25, 0xfb, 0x66, + 0xdd, 0x50, 0xe7, 0x0a, 0xba, 0x2f, 0x2d, 0x93, + 0x1e, 0xa5, 0xaf, 0xd8, 0xcc, 0x9c, 0x13, 0x64, + 0xef, 0xae, 0x23, 0xdc, 0x44, 0xc8, 0x7e, 0x17, + 0x93, 0x37, 0x8d, 0xcb, 0xc7, 0x8c, 0x30, 0x0a, + 0x3a, 0x08, 0x35, 0x5b, 0xb3, 0xc9, 0x45, 0x17, + 0xfb, 0x80, 0x27, 0x7c, 0xc7, 0xc2, 0x57, 0x7c, + 0xac, 0x73, 0xc8, 0x5f, 0xd0, 0xcc, 0xe9, 0x5c, + 0x55, 0xe2, 0x63, 0x25, 0xaf, 0x89, 0x96, 0x81, + 0x5b, 0x4d, 0x0d, 0xa6, 0x65, 0x2f, 0xd4, 0x3a, + 0x9b, 0xb7, 0x09, 0xad, 0x47, 0xe3, 0xf7, 0x15, + 0x41, 0xc0, 0xcf, 0xec, 0x9d, 0xd4, 0xac, 0x57, + 0xfd, 0xd6, 0x91, 0xbe, 0x30, 0x52, 0x2b, 0x86, + 0xdf, 0x54, 0x4b, 0x95, 0x45, 0x76, 0x87, 0x3d, + 0x56, 0x47, 0x2b, 0xfe, 0x6b, 0x6d, 0x9a, 0x3e, + 0x72, 0xfb, 0x22, 0x8b, 0x3d, 0x92, 0x1d, 0x62, + 0x77, 0x6e, 0x91, 0xd4, 0x37, 0x5c, 0x97, 0x0e, + 0x07, 0x4c, 0x5c, 0x74, 0xdb, 0x05, 0x5e, 0x9f, + 0xe1, 0xf0, 0x1a, 0x24, 0x67, 0x8f, 0x0f, 0x20, + 0xe9, 0x3e, 0x45, 0x5a, 0x6a, 0xb5, 0xb9, 0xee, + 0xf4, 0x1d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x0a, 0x0e, 0x11, 0x19, 0x1b, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa65", + .pk_len =3D DILITHIUM65_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM65_PUBLICKEYBYTES]){ + 0x54, 0xa5, 0x5c, 0x8e, 0x72, 0x11, 0xf9, 0x67, + 0x89, 0x19, 0x57, 0x17, 0xa9, 0x03, 0x7b, 0xc6, + 0xd9, 0xaf, 0x99, 0x14, 0xe8, 0x8f, 0xd4, 0xa7, + 0xcd, 0x17, 0x8c, 0x67, 0x5f, 0x45, 0x62, 0xc1, + 0xdd, 0xd0, 0x6d, 0x7d, 0xd0, 0xfd, 0x74, 0x98, + 0x35, 0x93, 0x95, 0x9c, 0xfb, 0x2f, 0x0c, 0xb9, + 0xcf, 0x05, 0x28, 0x47, 0x22, 0xe8, 0x2b, 0x17, + 0xfa, 0x42, 0x60, 0x67, 0x13, 0x2f, 0x9b, 0x03, + 0xce, 0xce, 0x62, 0x41, 0x12, 0xbe, 0x8d, 0xbb, + 0xf9, 0x53, 0x25, 0xca, 0x10, 0xf8, 0x73, 0xa6, + 0x52, 0x32, 0x7a, 0x06, 0xb2, 0x4d, 0x58, 0x0c, + 0x68, 0xfc, 0x02, 0xf1, 0x93, 0xb4, 0xca, 0x45, + 0xab, 0xf5, 0xc4, 0xab, 0x93, 0x6c, 0x1b, 0x24, + 0xd0, 0xeb, 0xe6, 0xb3, 0x90, 0x5e, 0xf4, 0xe7, + 0x60, 0xdd, 0x90, 0x1e, 0xdf, 0x77, 0xf5, 0x8a, + 0x4a, 0xf5, 0xc8, 0x7a, 0xc0, 0x04, 0xc4, 0x07, + 0x76, 0xae, 0x14, 0x47, 0xe1, 0xec, 0x4f, 0x76, + 0xa5, 0xae, 0x9a, 0xac, 0x73, 0x83, 0x4a, 0xbb, + 0xa8, 0x58, 0x1a, 0x54, 0xd1, 0xdf, 0xaf, 0x5b, + 0xd1, 0x21, 0x81, 0x4d, 0xa1, 0x40, 0xd1, 0xe3, + 0xd2, 0x35, 0x5d, 0x9b, 0x1f, 0x37, 0x77, 0xd6, + 0xa4, 0xb6, 0x1a, 0x9a, 0xd4, 0xdc, 0xe9, 0x00, + 0x47, 0xf5, 0x69, 0x27, 0xd4, 0x0b, 0x22, 0x4d, + 0x8e, 0x2f, 0xfb, 0x7f, 0xdd, 0xe9, 0xe9, 0xb3, + 0xde, 0xae, 0x7d, 0x8a, 0x8b, 0xe1, 0xc8, 0x1f, + 0x50, 0x21, 0xb7, 0x32, 0x7a, 0x5a, 0x08, 0x02, + 0xaf, 0x07, 0x98, 0xb3, 0xd9, 0xc5, 0x96, 0xab, + 0xfe, 0xff, 0xa9, 0xb8, 0x54, 0x02, 0x42, 0x68, + 0x68, 0xba, 0x89, 0x3a, 0x12, 0x31, 0xd3, 0x95, + 0xf6, 0x7a, 0xae, 0xda, 0x0d, 0x08, 0x0d, 0xb3, + 0x4e, 0xde, 0x9c, 0x3b, 0x6d, 0x1e, 0x94, 0x2a, + 0x7a, 0x46, 0x8e, 0x26, 0xe4, 0xde, 0xd1, 0x81, + 0xc6, 0x81, 0x4e, 0x38, 0x77, 0x36, 0xf7, 0x38, + 0xed, 0xf6, 0xd0, 0x44, 0x1c, 0x6d, 0x1a, 0xa0, + 0xc4, 0xf5, 0x21, 0x71, 0xbd, 0xf3, 0xa2, 0x9b, + 0xa9, 0x13, 0x8c, 0x8f, 0x60, 0x99, 0x2d, 0x86, + 0xc1, 0xe0, 0xf4, 0x4d, 0x75, 0x6e, 0x14, 0xe1, + 0x5f, 0x12, 0xb9, 0xe6, 0xd2, 0xda, 0xa9, 0x4e, + 0xc7, 0x97, 0x86, 0xd2, 0x77, 0x32, 0x67, 0xe1, + 0x8f, 0x23, 0xb8, 0xd3, 0x70, 0x8f, 0x87, 0x2b, + 0xa2, 0xf1, 0x31, 0x1d, 0x50, 0x09, 0xf3, 0xa3, + 0x0f, 0x19, 0x9f, 0xde, 0xe7, 0xfb, 0x2e, 0x4a, + 0x9c, 0x63, 0x4c, 0x56, 0x98, 0x87, 0x0a, 0x05, + 0x00, 0xfb, 0xe7, 0x22, 0x75, 0x42, 0xca, 0xd6, + 0x45, 0x35, 0x77, 0x80, 0x22, 0xf2, 0x75, 0x18, + 0xee, 0xb1, 0x36, 0xdc, 0xbe, 0x0a, 0x11, 0x11, + 0xae, 0x94, 0xaa, 0xec, 0x56, 0xbb, 0x72, 0x47, + 0xcb, 0xc5, 0xa2, 0x8e, 0x3d, 0x3f, 0x34, 0x83, + 0x55, 0xc1, 0x39, 0x40, 0xb7, 0xb0, 0x37, 0x21, + 0xe1, 0xc4, 0x0c, 0x80, 0x98, 0xeb, 0x3d, 0x9b, + 0xc3, 0x74, 0x8d, 0x9f, 0x58, 0x9d, 0x03, 0xab, + 0x3d, 0x6c, 0xe0, 0xf6, 0x13, 0x31, 0x6c, 0x00, + 0x65, 0xda, 0x8e, 0x84, 0x14, 0x4f, 0x44, 0x75, + 0xa8, 0x1d, 0xb9, 0xdd, 0xe6, 0x39, 0xc9, 0x36, + 0x89, 0x19, 0x5a, 0xfd, 0x87, 0x00, 0xad, 0xa7, + 0x0b, 0xb9, 0x22, 0x6f, 0x35, 0x88, 0xf5, 0x7a, + 0x9b, 0x69, 0x6e, 0xf4, 0x5b, 0xc8, 0x6f, 0xdc, + 0x13, 0xa1, 0x28, 0xf8, 0x1d, 0x7c, 0x8a, 0x7a, + 0xe6, 0x04, 0xe8, 0x0b, 0xf5, 0x10, 0x90, 0x48, + 0xc7, 0xe6, 0x20, 0xc1, 0x2c, 0xab, 0x46, 0x9d, + 0x1d, 0x54, 0x6e, 0x37, 0x89, 0xd2, 0x25, 0x18, + 0x3f, 0x82, 0x5c, 0x68, 0x31, 0x0b, 0x39, 0xe1, + 0xfc, 0xfb, 0x72, 0x50, 0x4c, 0xc5, 0xca, 0x45, + 0x7b, 0x7c, 0x87, 0x2f, 0x42, 0xdc, 0xd6, 0xdc, + 0x00, 0x45, 0x06, 0x44, 0xec, 0xda, 0x55, 0x32, + 0x03, 0xf9, 0x1d, 0x9c, 0x51, 0x28, 0x49, 0x42, + 0xc7, 0x98, 0x74, 0xe2, 0x33, 0x14, 0xcc, 0x32, + 0x4d, 0xfa, 0x0a, 0x99, 0xa8, 0x9a, 0x74, 0xfb, + 0xee, 0x3e, 0x22, 0xda, 0x5f, 0x0e, 0x85, 0x63, + 0x46, 0xd4, 0x44, 0x31, 0x3d, 0x66, 0x99, 0x89, + 0xb0, 0xed, 0xd7, 0x9d, 0x9f, 0x23, 0x96, 0xc4, + 0x9a, 0xed, 0x5b, 0x13, 0x6a, 0x3b, 0xea, 0x23, + 0xbc, 0x8c, 0x1b, 0x31, 0xd2, 0x64, 0xcc, 0x99, + 0x2e, 0x36, 0x1b, 0x1a, 0xed, 0xbe, 0xc0, 0x1d, + 0xa4, 0x77, 0xfc, 0x9b, 0x19, 0x24, 0x62, 0x29, + 0xbd, 0xaa, 0xb2, 0x7f, 0xd0, 0x47, 0xb8, 0x00, + 0x77, 0xe5, 0xda, 0x50, 0x7c, 0x89, 0x1d, 0xf9, + 0x65, 0xec, 0xa5, 0x94, 0xe9, 0x3e, 0x00, 0x2a, + 0x3b, 0x1e, 0x91, 0x8b, 0x54, 0x0f, 0x67, 0xad, + 0x30, 0xdf, 0x67, 0xc8, 0x86, 0xb1, 0x80, 0x52, + 0xbd, 0x14, 0x0c, 0x36, 0x73, 0xf7, 0xe0, 0x25, + 0x97, 0x62, 0xbc, 0x28, 0xa1, 0x62, 0xbe, 0xb1, + 0xde, 0x65, 0x14, 0xb7, 0x16, 0xc6, 0x5b, 0xad, + 0xb2, 0xae, 0x90, 0x93, 0x4f, 0xd1, 0x3f, 0x5d, + 0xae, 0x7b, 0x6c, 0x1e, 0x0e, 0x77, 0x20, 0x0f, + 0xfb, 0xd3, 0x2b, 0x98, 0x14, 0x22, 0x7f, 0x25, + 0x51, 0x07, 0x97, 0xc4, 0x7e, 0x9a, 0x14, 0x8f, + 0x99, 0x51, 0xb8, 0x9d, 0xf4, 0xbe, 0xb0, 0x3e, + 0x86, 0x6f, 0x38, 0x19, 0x50, 0xc6, 0xe6, 0xa8, + 0xa4, 0xd8, 0x67, 0xc7, 0x1f, 0x19, 0xca, 0xc8, + 0x3c, 0xe9, 0xa2, 0x5e, 0xde, 0x0c, 0x0c, 0xa1, + 0x97, 0xc0, 0xa6, 0xc5, 0x35, 0x5a, 0xf7, 0x9b, + 0xb7, 0x1b, 0xec, 0x0c, 0x22, 0x74, 0xbb, 0xf1, + 0x78, 0xa9, 0x1c, 0xbf, 0xf4, 0xa2, 0xed, 0xe9, + 0x56, 0x74, 0x12, 0x77, 0xe6, 0x13, 0xbd, 0xa6, + 0x28, 0xd3, 0x94, 0x83, 0x4f, 0x2f, 0x09, 0xec, + 0x21, 0xee, 0xd2, 0x43, 0xb8, 0x27, 0x21, 0xd7, + 0x9d, 0x26, 0xc6, 0xca, 0xf0, 0x21, 0x33, 0xb1, + 0x66, 0x80, 0x62, 0xaf, 0x29, 0x97, 0x0b, 0xb9, + 0x09, 0xdf, 0x53, 0x72, 0x48, 0x57, 0x3f, 0xe4, + 0xbf, 0x85, 0xef, 0x17, 0xc8, 0x21, 0x15, 0x0a, + 0x6e, 0x29, 0xae, 0xbe, 0x43, 0x6a, 0xd1, 0x1f, + 0xff, 0xca, 0xbf, 0x24, 0x34, 0x03, 0x14, 0xdf, + 0x6f, 0xc0, 0x00, 0xd4, 0x33, 0x41, 0x2f, 0xf5, + 0x38, 0x2a, 0x07, 0x64, 0x47, 0x59, 0xe0, 0x45, + 0x79, 0xbb, 0x25, 0x3f, 0xff, 0x21, 0x21, 0xa1, + 0xe1, 0x06, 0xa9, 0x1d, 0x7e, 0xf9, 0xde, 0x17, + 0x29, 0x82, 0x7b, 0x13, 0x71, 0xa7, 0xaa, 0xb9, + 0x58, 0x3e, 0x5a, 0x1b, 0xcd, 0x80, 0xc0, 0x02, + 0xd2, 0x8a, 0x3b, 0xd7, 0xe0, 0x8b, 0x44, 0x19, + 0x01, 0x41, 0xf7, 0x11, 0xd4, 0x66, 0xfc, 0x01, + 0x10, 0x0c, 0x74, 0x20, 0x38, 0xe8, 0x00, 0x37, + 0xf5, 0xd4, 0xa1, 0xa3, 0x4e, 0xd4, 0xbd, 0x0d, + 0xaa, 0x7f, 0x54, 0x1c, 0xfa, 0x33, 0x66, 0xd6, + 0xc2, 0x8d, 0x2e, 0xeb, 0x52, 0x6b, 0x65, 0x10, + 0x8a, 0xab, 0x15, 0xa5, 0xf2, 0x4c, 0x73, 0xf3, + 0x00, 0x99, 0x49, 0xee, 0x5a, 0xe7, 0xab, 0x52, + 0x0f, 0x0a, 0xed, 0xfb, 0x93, 0x45, 0xc9, 0xf9, + 0x36, 0x5c, 0x5b, 0x6a, 0x1f, 0x1c, 0x46, 0xde, + 0x0b, 0x6f, 0x40, 0xd6, 0x1c, 0xec, 0x11, 0x47, + 0x63, 0xe5, 0xbd, 0x47, 0xda, 0xe8, 0x3d, 0xff, + 0x8b, 0x8d, 0x3d, 0x0c, 0x0f, 0x3a, 0x9c, 0xef, + 0xec, 0x49, 0xed, 0x90, 0x1a, 0x21, 0x3f, 0xc6, + 0xab, 0x13, 0x87, 0x96, 0x24, 0x8c, 0x57, 0x60, + 0x81, 0x02, 0x56, 0xc8, 0xae, 0x95, 0x9b, 0x5d, + 0x6f, 0x96, 0xf0, 0x26, 0x0d, 0x32, 0x97, 0x9f, + 0xdb, 0xf8, 0x20, 0x8f, 0x32, 0xfc, 0x31, 0x90, + 0x2d, 0x0a, 0x38, 0xfc, 0x4f, 0x46, 0xfa, 0xf3, + 0x6e, 0x60, 0x9f, 0xb1, 0x68, 0x78, 0xac, 0xc8, + 0x53, 0x07, 0x1e, 0xc6, 0xe7, 0x31, 0xa3, 0x92, + 0xb1, 0x29, 0x7b, 0x7a, 0x33, 0x07, 0x78, 0xec, + 0x51, 0x2b, 0xf5, 0xf3, 0x4d, 0x09, 0x18, 0x21, + 0x91, 0x3c, 0x85, 0x03, 0xe0, 0x0f, 0x76, 0xb8, + 0x6f, 0xe4, 0x81, 0x94, 0xc6, 0x32, 0x55, 0xb8, + 0xbf, 0x5c, 0xfe, 0x57, 0x4e, 0xf1, 0x5c, 0x2d, + 0x6e, 0x6d, 0x22, 0xa8, 0xa9, 0x55, 0x49, 0x7d, + 0xda, 0x89, 0x7b, 0xc5, 0xfc, 0xf4, 0xae, 0xec, + 0x91, 0x69, 0x92, 0xaf, 0x26, 0x1c, 0x64, 0x88, + 0x23, 0xeb, 0x2f, 0x2a, 0x5f, 0x0b, 0xd1, 0x51, + 0x5f, 0x4a, 0x8f, 0x2f, 0x22, 0x3b, 0x79, 0x2a, + 0xf6, 0x00, 0xd5, 0xf5, 0x4c, 0xbf, 0x3f, 0xd3, + 0x94, 0xeb, 0x1e, 0x86, 0xed, 0x45, 0x93, 0x51, + 0xf7, 0x42, 0x2d, 0x89, 0x40, 0x4a, 0x30, 0xf7, + 0x32, 0x3f, 0xa6, 0x6f, 0x7a, 0xa8, 0xd2, 0xdf, + 0x79, 0x3b, 0x76, 0x19, 0x36, 0x1a, 0xf3, 0x3f, + 0x39, 0x14, 0x4a, 0xc3, 0x64, 0xfb, 0x51, 0x3f, + 0x8c, 0xc6, 0x15, 0xee, 0x41, 0x3b, 0xd4, 0xc1, + 0x3d, 0x0f, 0x0c, 0x74, 0xd6, 0x3f, 0xac, 0x12, + 0x9c, 0xf6, 0x44, 0x2e, 0x5f, 0x54, 0xd2, 0xdb, + 0xc8, 0xb1, 0x24, 0xbf, 0xe3, 0x9b, 0x00, 0x64, + 0x4e, 0x34, 0x37, 0xde, 0x7d, 0x43, 0xbf, 0xb4, + 0x85, 0x5d, 0x50, 0x55, 0xcc, 0x8f, 0xf8, 0x9a, + 0xf2, 0x97, 0xd7, 0xb8, 0xc1, 0xd4, 0x8f, 0xd8, + 0xf6, 0xe0, 0x79, 0x5f, 0xc1, 0xc1, 0xf4, 0x5e, + 0xd7, 0x74, 0xe9, 0x13, 0xd8, 0x4d, 0x44, 0x9e, + 0x4a, 0xe1, 0x29, 0x67, 0xe2, 0x38, 0x27, 0xbf, + 0xf1, 0x4c, 0x34, 0x7b, 0xf7, 0xcd, 0xe3, 0x6c, + 0xd2, 0x49, 0x18, 0x09, 0x4a, 0x9b, 0x56, 0xd6, + 0xd0, 0xb8, 0x0a, 0x35, 0xa0, 0x6b, 0xee, 0x71, + 0x92, 0xd6, 0x87, 0x4b, 0x54, 0x0b, 0x35, 0x8b, + 0x86, 0x82, 0x17, 0x11, 0xa8, 0x3d, 0x58, 0x04, + 0x48, 0xc4, 0xf7, 0x4b, 0x96, 0x97, 0x0e, 0x68, + 0xdb, 0x54, 0x30, 0xea, 0x39, 0x58, 0x3f, 0x64, + 0xfd, 0x35, 0x7a, 0x07, 0x48, 0xbf, 0xdd, 0xad, + 0x99, 0x72, 0xef, 0x90, 0x93, 0x58, 0xb4, 0xe8, + 0x6a, 0x72, 0xcf, 0x7a, 0x03, 0xf0, 0xfa, 0x74, + 0xc5, 0xc3, 0xc8, 0xe4, 0x08, 0xba, 0xed, 0x1f, + 0xb4, 0xd4, 0x00, 0x12, 0x18, 0xaf, 0x37, 0x78, + 0x45, 0x8c, 0x8e, 0xae, 0x1c, 0x6e, 0x90, 0xf5, + 0x13, 0x8c, 0xcc, 0x3d, 0x40, 0x63, 0xa3, 0xc1, + 0x8f, 0xe1, 0xc7, 0x47, 0xd7, 0x9c, 0xde, 0x14, + 0x1b, 0x8f, 0xca, 0x0b, 0xd7, 0xd3, 0x9a, 0x05, + 0x81, 0x37, 0x61, 0xaa, 0x37, 0xee, 0x67, 0xbf, + 0xef, 0x17, 0x01, 0x99, 0x6f, 0xc4, 0xd8, 0x9b, + 0x92, 0x76, 0x9b, 0x23, 0xe9, 0xba, 0x6d, 0xa2, + 0xfc, 0x4b, 0xe4, 0x3b, 0xa8, 0x64, 0xb7, 0x45, + 0x49, 0xe5, 0x3b, 0x20, 0x77, 0x80, 0x08, 0x94, + 0x9e, 0x70, 0xc8, 0x1b, 0x7a, 0x21, 0x59, 0x11, + 0x20, 0x43, 0x80, 0xf5, 0xcf, 0x0d, 0x70, 0x63, + 0x92, 0x4e, 0x4e, 0xd5, 0x58, 0xb1, 0x97, 0xaa, + 0x2e, 0x26, 0xbb, 0xb3, 0x15, 0x02, 0x87, 0x53, + 0xd1, 0xd9, 0x3d, 0x95, 0xa1, 0xed, 0x3a, 0x67, + 0xe4, 0xa0, 0x53, 0xeb, 0x6b, 0x7d, 0x8d, 0x80, + 0x77, 0xb7, 0x38, 0xd3, 0x96, 0xd5, 0x97, 0x7c, + 0xd6, 0x33, 0x15, 0x78, 0xc5, 0x38, 0x27, 0x8b, + 0xbd, 0x4a, 0x5d, 0xdc, 0x31, 0xbb, 0x2d, 0xe6, + 0x24, 0x6a, 0xcb, 0x33, 0x4c, 0x58, 0xb2, 0x52, + 0xe9, 0xc1, 0xb6, 0x21, 0xca, 0xc1, 0x07, 0xcf, + 0x62, 0xdd, 0xc4, 0x5d, 0x7c, 0x6d, 0xce, 0xbb, + 0xd6, 0xcc, 0x89, 0x6a, 0x4e, 0x2c, 0xe0, 0xcb, + 0x9e, 0xc9, 0x9c, 0xd5, 0x14, 0xd3, 0xc5, 0xb4, + 0xbc, 0x48, 0x33, 0x6e, 0x10, 0x00, 0xeb, 0x1a, + 0x91, 0xea, 0x9e, 0xe0, 0x37, 0xf9, 0xc3, 0x9a, + 0x4d, 0x1a, 0x5c, 0x99, 0xd1, 0x6c, 0x3e, 0x38, + 0x40, 0x61, 0x8e, 0x66, 0x04, 0x09, 0xc3, 0x66, + 0x13, 0xb7, 0x1b, 0xa4, 0x4a, 0x73, 0xb9, 0x11, + 0x53, 0x2e, 0x19, 0xaa, 0x41, 0xa4, 0xf4, 0x89, + 0x22, 0xc0, 0x0c, 0xec, 0x8f, 0xfd, 0x6a, 0xe3, + 0x6c, 0x03, 0xe6, 0x01, 0xb5, 0xcd, 0x92, 0x89, + 0x8a, 0x6f, 0xca, 0xf2, 0x28, 0x03, 0xac, 0xd1, + 0x00, 0xe4, 0x98, 0x56, 0x4a, 0xd5, 0x60, 0x78, + 0x6d, 0x00, 0xaa, 0x87, 0xbc, 0x42, 0x49, 0xd7, + 0xfe, 0x0c, 0xa4, 0xa6, 0xaa, 0x96, 0x7e, 0xe3, + 0xd5, 0x71, 0xb9, 0x2b, 0xb7, 0x10, 0x7d, 0xf7, + 0x34, 0xd4, 0x2f, 0x2b, 0xb3, 0x6d, 0xe2, 0x2a, + 0xaa, 0xb6, 0xba, 0x42, 0x94, 0xf4, 0xfa, 0xc3, + 0xa7, 0x55, 0x2c, 0xcd, 0xba, 0xc7, 0xfe, 0x12, + 0x6e, 0x16, 0x29, 0xa7, 0x04, 0x8f, 0xca, 0x84, + 0xee, 0xce, 0xa4, 0xaa, 0x62, 0x10, 0xb5, 0x6d, + 0x23, 0x61, 0x78, 0xc9, 0xca, 0x8e, 0x23, 0xbb, + 0x7d, 0xd8, 0x57, 0x32, 0xe6, 0xd8, 0x4b, 0x87, + 0xa6, 0x70, 0xac, 0x53, 0x6f, 0x82, 0xad, 0x7d, + 0x89, 0xc6, 0x51, 0xc9, 0x6f, 0xf2, 0x70, 0x07, + 0x4d, 0xa8, 0x16, 0xfd, 0x31, 0x7f, 0x0e, 0x3d, + 0x62, 0x03, 0x13, 0xaf, 0x1e, 0x61, 0x2a, 0xdf, + 0xc0, 0x8b, 0x68, 0xe1, 0x74, 0xd3, 0xeb, 0x3b, + 0x51, 0x36, 0x27, 0x90, 0x9e, 0x64, 0x29, 0x66, + 0x01, 0xae, 0x4d, 0x07, 0xca, 0xcd, 0xa1, 0x54, + 0x31, 0x0b, 0x32, 0x68, 0x67, 0x4e, 0xac, 0xd1, + 0x05, 0x35, 0x4e, 0x1b, 0x9c, 0xd9, 0xd0, 0xb1, + 0x45, 0x15, 0x3f, 0xde, 0xa9, 0xa3, 0xd1, 0xa3, + 0x81, 0x64, 0xab, 0x2b, 0x15, 0x6a, 0xb8, 0x5b, + 0x77, 0xd2, 0x96, 0xe8, 0x1c, 0x1a, 0x8b, 0xda, + 0x94, 0x29, 0x4c, 0x73, 0x30, 0x7a, 0x12, 0xdc, + 0xfd, 0xd4, 0xb4, 0x4c, 0x0b, 0xcb, 0x9f, 0x21, + 0x28, 0x86, 0xb7, 0x7c, 0xa0, 0xf6, 0x81, 0xe3, + 0x4d, 0x70, 0x9e, 0xb0, 0xbf, 0xa7, 0x55, 0x23, + 0x99, 0xc2, 0x29, 0x74, 0x9e, 0x4f, 0x9f, 0x12, + 0xeb, 0x0c, 0xa6, 0xd7, 0x60, 0x04, 0x99, 0xa3, + 0x82, 0x9a, 0xcc, 0x0d, 0xe5, 0x9a, 0xd3, 0xec, + 0x84, 0x1d, 0x7a, 0x6c, 0x76, 0xf8, 0x05, 0x3d, + 0x94, 0x70, 0xbb, 0xae, 0x87, 0x2d, 0x25, 0xba, + 0xe5, 0x38, 0x60, 0x85, 0x2c, 0x83, 0x22, 0xa0, + 0xf7, 0xec, 0x56, 0xa9, 0x39, 0x48, 0x77, 0x42, + 0x65, 0xba, 0x57, 0xf6, 0xa9, 0x99, 0x7b, 0xb8, + 0xa0, 0x03, 0xca, 0x5c, 0x06, 0x6c, 0xae, 0x8a, + 0xa1, 0xbc, 0x9a, 0xb4, 0x15, 0x35, 0xf1, 0x8f, + 0x6a, 0x76, 0x1d, 0xe7, 0x09, 0xfa, 0xa7, 0x42, + 0x94, 0x5e, 0x4e, 0xc6, 0xd2, 0x24, 0xd2, 0xa9, + 0xe3, 0x16, 0x7f, 0xd6, 0xbf, 0x06, 0x98, 0x0f, + 0x8b, 0x61, 0xd8, 0xd1, 0x6d, 0xa9, 0xc3, 0xb7, + 0x54, 0x34, 0x26, 0x7a, 0x6d, 0xa2, 0x04, 0x7e, + 0xe8, 0x98, 0x47, 0x4a, 0x4b, 0x15, 0xc0, 0xaa, + 0x24, 0x8c, 0xbd, 0xfd, 0x6a, 0x53, 0x06, 0x2a, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x7e, 0x0b, 0xd4, 0x8d, 0x8a, 0x62, 0x74, 0xc7, + 0xe6, 0x2f, 0x31, 0xd8, 0x09, 0x11, 0xba, 0x1d, + 0x6e, 0xc8, 0xe5, 0xac, 0x5f, 0x11, 0xd2, 0xf1, + 0x75, 0x22, 0xd3, 0x45, 0x14, 0x0b, 0x6b, 0x25, + 0xf4, 0xbf, 0x8d, 0x0d, 0x94, 0xf2, 0xa6, 0x0d, + 0x2c, 0x24, 0x5a, 0xb5, 0x83, 0x2d, 0x12, 0xd4, + 0xe1, 0xf5, 0xa4, 0x01, 0xb2, 0x8a, 0x18, 0xfd, + 0x49, 0x29, 0x9f, 0x3c, 0x37, 0xb6, 0xbf, 0x0a, + }, + .sig_len =3D DILITHIUM65_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM65_CRYPTO_BYTES]){ + 0xff, 0x81, 0xe9, 0xbe, 0xa3, 0x89, 0x9d, 0x73, + 0xdf, 0x13, 0xd3, 0xcf, 0xba, 0x36, 0xe8, 0xa1, + 0xf9, 0x52, 0x5f, 0x33, 0xd8, 0xfd, 0xc5, 0xb0, + 0x7a, 0x5a, 0xff, 0x65, 0x1d, 0x84, 0x31, 0x3c, + 0x53, 0xe2, 0xc8, 0x9c, 0xf4, 0xef, 0x15, 0x3b, + 0xd0, 0x4d, 0x90, 0x2f, 0x5c, 0x8d, 0x0e, 0x03, + 0xd6, 0x50, 0xb3, 0xb5, 0x20, 0xa2, 0x57, 0xcc, + 0x48, 0x6f, 0xc9, 0x49, 0x29, 0x2d, 0xc9, 0x53, + 0x05, 0x91, 0x08, 0x56, 0x9a, 0x25, 0xb2, 0x43, + 0x3e, 0x9c, 0x38, 0x75, 0x84, 0xc1, 0x04, 0xdf, + 0xd5, 0x36, 0x5d, 0x7b, 0x9c, 0x85, 0x3f, 0xd3, + 0x52, 0xef, 0xb2, 0x3a, 0xa6, 0x3c, 0xa0, 0x64, + 0xb9, 0xe0, 0x69, 0x89, 0xf4, 0xc7, 0x56, 0x6e, + 0x21, 0xfd, 0x99, 0x39, 0x1b, 0x08, 0xd4, 0xb4, + 0xed, 0x5d, 0x8c, 0xf1, 0x27, 0x3f, 0x0c, 0x60, + 0x74, 0x63, 0x6d, 0xb8, 0xbf, 0xb4, 0xaa, 0xfd, + 0x92, 0xe5, 0x9a, 0xfa, 0xed, 0xf0, 0x9f, 0x1c, + 0x8b, 0x73, 0xfe, 0x6d, 0xff, 0xb9, 0xc0, 0xb7, + 0xba, 0x3d, 0x0e, 0xbc, 0x4e, 0x4b, 0xd4, 0xdb, + 0x1e, 0x9c, 0xe7, 0xb1, 0xc6, 0xe7, 0x78, 0x22, + 0xe1, 0x0a, 0x01, 0xcb, 0x34, 0x93, 0xf2, 0x42, + 0xa8, 0x50, 0xaf, 0x46, 0xa2, 0x7c, 0xc6, 0xe2, + 0xea, 0xfd, 0x6d, 0x71, 0x8d, 0xaf, 0x28, 0x56, + 0x37, 0xf8, 0x1a, 0x4e, 0xd7, 0xf0, 0xff, 0xf5, + 0xd9, 0xec, 0xe4, 0x7d, 0xa0, 0xed, 0x36, 0x1d, + 0x6f, 0xde, 0x94, 0x6d, 0x6d, 0xee, 0xa4, 0xfd, + 0xb6, 0xc3, 0x89, 0xa3, 0x82, 0xd5, 0x12, 0x5c, + 0xcd, 0x54, 0x1d, 0x68, 0x95, 0xe5, 0x38, 0x35, + 0x81, 0xfb, 0xa7, 0x20, 0xe6, 0x26, 0x2f, 0xfd, + 0x36, 0xc6, 0x23, 0xf5, 0xe0, 0x36, 0xbd, 0xdd, + 0xc7, 0xf2, 0x9b, 0x94, 0x00, 0x87, 0xca, 0xf0, + 0x64, 0x03, 0x6c, 0xc8, 0xa3, 0xc0, 0x3e, 0x0c, + 0x71, 0x21, 0x70, 0x9a, 0x4e, 0xe6, 0x18, 0x27, + 0x24, 0x5a, 0xbc, 0x18, 0xe6, 0x15, 0xe8, 0x5b, + 0x44, 0xac, 0x31, 0x38, 0xe4, 0xfa, 0xe3, 0x8e, + 0xc8, 0x7b, 0x2c, 0x56, 0x8b, 0x10, 0xad, 0xad, + 0x6d, 0xf3, 0xad, 0x12, 0x01, 0xbe, 0x6b, 0x5b, + 0x95, 0x5f, 0xfe, 0xdc, 0xc8, 0x0d, 0x8b, 0x97, + 0x0e, 0x3c, 0xda, 0x8f, 0xbf, 0x5d, 0x9a, 0x33, + 0x46, 0x83, 0x89, 0xed, 0xb2, 0x87, 0xb7, 0x11, + 0xb9, 0x07, 0xd3, 0x69, 0xc9, 0x1e, 0x92, 0x92, + 0x6a, 0x4d, 0x2b, 0xfe, 0xd8, 0x2c, 0x2b, 0xf9, + 0x59, 0x81, 0x7a, 0xff, 0xf7, 0x3f, 0x27, 0x39, + 0x43, 0x03, 0xcf, 0x68, 0xc2, 0x37, 0x65, 0x83, + 0x87, 0x06, 0xc7, 0xb1, 0x42, 0x7c, 0x7c, 0xe1, + 0x78, 0x1c, 0xdb, 0xaf, 0x33, 0xb1, 0x35, 0xc6, + 0xff, 0x94, 0xc2, 0x93, 0x29, 0x1a, 0x3c, 0xc5, + 0xf1, 0xd1, 0xda, 0x0f, 0x1b, 0xae, 0x1f, 0xf6, + 0x2b, 0xa0, 0x68, 0x4f, 0x02, 0xeb, 0x2a, 0xe8, + 0xa4, 0xfa, 0x30, 0x92, 0x0c, 0x36, 0x0c, 0xaa, + 0xef, 0x0c, 0x78, 0x40, 0x96, 0xcc, 0xbb, 0x65, + 0xba, 0x84, 0x42, 0x7e, 0x97, 0xf4, 0x07, 0x67, + 0x00, 0x80, 0x9a, 0x27, 0xfd, 0x8f, 0x18, 0x83, + 0xad, 0x0d, 0x40, 0x30, 0xd7, 0x62, 0x9d, 0xf3, + 0xc6, 0x43, 0xd5, 0x92, 0x9e, 0x26, 0xf5, 0xfb, + 0xda, 0xed, 0x8e, 0x2c, 0x71, 0xea, 0x78, 0xbf, + 0xd7, 0xe3, 0x86, 0xc3, 0x9a, 0xda, 0x89, 0x86, + 0x98, 0x41, 0xb7, 0x9e, 0x4a, 0x2e, 0xb0, 0x80, + 0x00, 0xff, 0x68, 0xbf, 0x86, 0x3f, 0x8b, 0x1c, + 0x11, 0xe4, 0x5f, 0xf6, 0xb0, 0x70, 0xf9, 0xb9, + 0x2e, 0xe9, 0x21, 0xe0, 0x40, 0xef, 0xf8, 0xe3, + 0x65, 0x45, 0x18, 0xf7, 0x92, 0x21, 0x3b, 0xc7, + 0xe9, 0x6d, 0xb4, 0x2d, 0x01, 0xf9, 0xec, 0x33, + 0x0d, 0xa7, 0x19, 0x8f, 0xf5, 0x0d, 0x49, 0xa5, + 0x45, 0xb6, 0x92, 0x90, 0x4b, 0xe5, 0x12, 0x6c, + 0x1a, 0xf3, 0x51, 0x06, 0x29, 0x2e, 0xd1, 0xfe, + 0xbf, 0xe1, 0x67, 0x2c, 0x98, 0x45, 0x8a, 0x38, + 0xd0, 0x50, 0x6f, 0xa8, 0x81, 0xf2, 0x27, 0xb4, + 0x9f, 0x15, 0x14, 0x12, 0x98, 0x1c, 0x93, 0x64, + 0xf8, 0x01, 0x91, 0x37, 0x31, 0xb3, 0x04, 0x0a, + 0xc4, 0x7b, 0x84, 0x03, 0x2c, 0xbf, 0x90, 0xd7, + 0x7c, 0xa3, 0xcf, 0x1d, 0x6a, 0x7c, 0x9c, 0x35, + 0x9b, 0xf1, 0x95, 0x2c, 0x02, 0x55, 0x24, 0xb7, + 0x23, 0x87, 0x3b, 0xf6, 0x9f, 0xfd, 0x04, 0xfe, + 0xad, 0x40, 0xe0, 0x95, 0xf7, 0xcc, 0x8b, 0xae, + 0x53, 0x7b, 0x16, 0x9f, 0x47, 0xad, 0x29, 0x66, + 0xd2, 0x37, 0x0f, 0x54, 0x4f, 0x7d, 0xb0, 0x04, + 0x45, 0xed, 0x52, 0xe5, 0xdb, 0x1a, 0xb4, 0x26, + 0x40, 0x62, 0x62, 0x4f, 0xf4, 0x92, 0x55, 0xf9, + 0x78, 0xd9, 0xdd, 0xdb, 0x42, 0x40, 0x5a, 0x5e, + 0xe5, 0xe0, 0x71, 0x7b, 0xd1, 0x96, 0x57, 0x47, + 0x7e, 0x79, 0x80, 0xee, 0xe4, 0xdc, 0xac, 0xcd, + 0xb1, 0xbf, 0x28, 0xd8, 0x13, 0xec, 0xdf, 0x71, + 0x13, 0x88, 0xf1, 0xb7, 0x9f, 0x6b, 0xb2, 0xd0, + 0xf2, 0x0d, 0xfa, 0x75, 0xa3, 0xa9, 0xa2, 0x6f, + 0x1d, 0x4b, 0xe4, 0xd8, 0x8b, 0x08, 0x7a, 0x84, + 0xa8, 0x82, 0xf6, 0x09, 0xf0, 0x30, 0xa1, 0xb9, + 0xe4, 0x03, 0xe4, 0xf8, 0xeb, 0xcf, 0x6c, 0xb5, + 0xe4, 0xc0, 0x4b, 0xb4, 0xf4, 0x30, 0x3b, 0xa6, + 0xc8, 0x5b, 0x29, 0x84, 0xde, 0xc7, 0xa8, 0x32, + 0xe8, 0xee, 0x2e, 0x8b, 0x85, 0x2b, 0x9f, 0xfd, + 0x65, 0x5e, 0x6d, 0xf1, 0x89, 0x7a, 0x45, 0x08, + 0xc1, 0x1d, 0xfe, 0xa4, 0x88, 0x7f, 0x77, 0xae, + 0xa6, 0x28, 0x70, 0x3d, 0x6b, 0xb8, 0x8d, 0x7a, + 0xee, 0x40, 0x9f, 0x05, 0xb0, 0xf1, 0x2c, 0x59, + 0x79, 0x7c, 0xa9, 0x3f, 0x6e, 0xca, 0x96, 0x9e, + 0xdf, 0x6d, 0xd8, 0x8c, 0xa3, 0x33, 0x16, 0xea, + 0x0e, 0xae, 0x06, 0x51, 0x13, 0xf9, 0x08, 0x44, + 0x32, 0xcc, 0xef, 0x5a, 0x2b, 0x09, 0x87, 0x85, + 0xa2, 0xfb, 0xb3, 0xb4, 0xcb, 0xf2, 0xdb, 0x51, + 0x59, 0x02, 0x87, 0x5f, 0x8e, 0xe6, 0x65, 0xe3, + 0x37, 0x4f, 0x53, 0x16, 0xc3, 0x78, 0x4e, 0xba, + 0x23, 0xef, 0x58, 0xfd, 0x90, 0x3c, 0xe6, 0xfb, + 0xe0, 0x79, 0xbb, 0xc6, 0x48, 0x18, 0x79, 0xce, + 0xf8, 0x0e, 0x10, 0xbc, 0x63, 0x1d, 0x77, 0xcd, + 0x18, 0xd9, 0xe9, 0x8c, 0x15, 0x8a, 0x8f, 0x86, + 0x1d, 0x86, 0x48, 0xd0, 0x53, 0x05, 0x69, 0x5a, + 0x29, 0xb3, 0x11, 0xc8, 0x1e, 0x0c, 0x4c, 0xfa, + 0x7d, 0x13, 0x12, 0x93, 0x01, 0xcf, 0x9f, 0xb2, + 0x5d, 0xc0, 0xe6, 0x73, 0x8b, 0xf8, 0x39, 0xbd, + 0xfe, 0xf4, 0x57, 0xd8, 0x38, 0xbe, 0x9e, 0x0b, + 0x1d, 0xea, 0x1e, 0x18, 0x64, 0xb3, 0x74, 0x5c, + 0x0f, 0x02, 0x51, 0x89, 0x7e, 0x7f, 0x4a, 0xcc, + 0xff, 0xb1, 0xf6, 0x1b, 0x69, 0xb0, 0xdd, 0x1c, + 0x31, 0x9e, 0xc4, 0x6e, 0x70, 0xd2, 0xad, 0x22, + 0x7b, 0x80, 0xc5, 0xe0, 0xc2, 0x07, 0xd5, 0x02, + 0x04, 0xb7, 0x15, 0x63, 0xb5, 0x55, 0x6e, 0x35, + 0x3c, 0x48, 0xab, 0x29, 0xef, 0x1c, 0xe5, 0x64, + 0x93, 0xab, 0x62, 0xb2, 0xd6, 0x7b, 0x1e, 0xe1, + 0x6d, 0xd5, 0xe2, 0x6e, 0xaf, 0x9f, 0x59, 0x7d, + 0xab, 0xef, 0xd4, 0xbd, 0x17, 0x13, 0xea, 0xb7, + 0x43, 0xde, 0x90, 0x0f, 0x85, 0x31, 0x1b, 0x9f, + 0xf5, 0x09, 0x96, 0x88, 0x99, 0xbc, 0x96, 0xc9, + 0x58, 0x0d, 0x77, 0x33, 0xd2, 0x99, 0x55, 0xe6, + 0xac, 0xe5, 0xa4, 0x53, 0x26, 0x23, 0xd0, 0xab, + 0x0c, 0x05, 0xfc, 0xb4, 0xc0, 0x68, 0x7e, 0x99, + 0x42, 0x76, 0x1d, 0x68, 0xf1, 0xb4, 0x70, 0xc3, + 0xd5, 0xb4, 0x0f, 0xee, 0x4b, 0xb4, 0x95, 0x2f, + 0x62, 0x64, 0x08, 0x20, 0x4e, 0xa5, 0xd1, 0xcb, + 0x92, 0x61, 0x5c, 0xc7, 0x39, 0xfb, 0x21, 0x25, + 0x01, 0x53, 0x11, 0xa2, 0x4a, 0x02, 0xcb, 0xae, + 0x91, 0x90, 0xdb, 0xcb, 0x0b, 0x7b, 0x04, 0xcb, + 0x41, 0x23, 0x4c, 0x89, 0x10, 0xb1, 0xa6, 0x5d, + 0xd6, 0xba, 0x9f, 0xc6, 0x87, 0x08, 0xb9, 0x85, + 0xb2, 0x97, 0x66, 0xe6, 0x97, 0xb2, 0xcc, 0xbd, + 0x99, 0x7d, 0x48, 0xfe, 0xc3, 0x65, 0xa2, 0x13, + 0x61, 0xce, 0x6a, 0xd4, 0x6b, 0x75, 0x38, 0x5a, + 0xd2, 0xab, 0xff, 0xe6, 0xcb, 0x0f, 0xa6, 0x35, + 0xc8, 0xfe, 0x08, 0x3f, 0x56, 0xac, 0xbd, 0x37, + 0x20, 0xde, 0x1e, 0xc7, 0x44, 0xd3, 0xc3, 0x26, + 0xeb, 0x2a, 0xb8, 0x3a, 0xb4, 0x24, 0x00, 0x77, + 0x72, 0x00, 0xc7, 0x26, 0xfc, 0x2c, 0xd3, 0x35, + 0xb0, 0x7c, 0x75, 0xe8, 0x4d, 0xec, 0xdc, 0xaf, + 0xf1, 0x99, 0x81, 0x40, 0x05, 0x59, 0x23, 0x19, + 0xa2, 0x4c, 0x1a, 0xf0, 0x59, 0x8e, 0xd6, 0x16, + 0x61, 0x88, 0x09, 0x2b, 0x7e, 0x51, 0x0b, 0xcf, + 0x5a, 0x6c, 0xca, 0x13, 0x87, 0x18, 0x16, 0x64, + 0x51, 0xe4, 0x2a, 0x0f, 0xc0, 0x94, 0x1b, 0x74, + 0xe9, 0x20, 0xbb, 0x4b, 0x13, 0xb1, 0xd3, 0xea, + 0xf9, 0xcf, 0x56, 0x66, 0x5f, 0x2c, 0x98, 0x6e, + 0x5d, 0x4b, 0x9c, 0x06, 0x0f, 0xd5, 0xdb, 0x84, + 0xeb, 0x63, 0xb0, 0xa7, 0x15, 0xb3, 0x88, 0xf3, + 0x2b, 0xf2, 0x5b, 0x09, 0x4a, 0xde, 0x17, 0xcc, + 0x6b, 0x60, 0xe6, 0xfd, 0xc6, 0xaa, 0xa3, 0xb3, + 0x6d, 0x1b, 0xdf, 0x2d, 0x03, 0xe5, 0xb3, 0x62, + 0xae, 0x1f, 0x89, 0x8a, 0xc0, 0x21, 0x99, 0xb1, + 0xce, 0x35, 0x6e, 0xdd, 0x15, 0x6a, 0x1e, 0xe6, + 0x9a, 0x9f, 0x81, 0x68, 0xc2, 0xb3, 0x43, 0x33, + 0x5d, 0xb3, 0x2f, 0x53, 0xfe, 0x26, 0x31, 0x7a, + 0xf7, 0xda, 0xf5, 0x41, 0xd5, 0x13, 0x21, 0x9e, + 0xb5, 0x0a, 0x61, 0xcf, 0xbe, 0xbf, 0x4c, 0x0a, + 0xc5, 0xaa, 0xf1, 0x25, 0x6f, 0xd3, 0xee, 0xeb, + 0x15, 0x92, 0xfb, 0x47, 0x8b, 0xe4, 0xc2, 0x3d, + 0xf6, 0xfb, 0xa3, 0xdf, 0x6a, 0xcc, 0x87, 0x87, + 0xfa, 0x0f, 0x32, 0xcb, 0xfe, 0x99, 0xe4, 0xc9, + 0xf2, 0x93, 0x12, 0x11, 0xcd, 0xe7, 0x8c, 0x07, + 0x1d, 0xc7, 0x31, 0x40, 0x04, 0x12, 0xf4, 0xb3, + 0x05, 0x9d, 0x0e, 0x2e, 0x5a, 0x4c, 0xc8, 0x31, + 0x35, 0xe4, 0xc5, 0x93, 0xc0, 0xe9, 0x26, 0x95, + 0x7f, 0x9b, 0xe9, 0x9b, 0x50, 0x88, 0x7b, 0x75, + 0x3b, 0x5c, 0x11, 0x53, 0xcd, 0x6d, 0x8d, 0x0d, + 0x31, 0x18, 0x10, 0xcd, 0x9d, 0x06, 0xe3, 0x8f, + 0xd3, 0x04, 0xa1, 0x8e, 0x7f, 0x4c, 0x31, 0xc9, + 0xd0, 0x56, 0xb7, 0xf4, 0xdf, 0xef, 0x45, 0xd2, + 0xba, 0xa8, 0x8a, 0x6d, 0xf5, 0xa0, 0x48, 0x58, + 0xb5, 0xeb, 0x80, 0x41, 0xfb, 0x8b, 0xc1, 0xf5, + 0x9e, 0x99, 0x7a, 0x02, 0x32, 0x90, 0x7b, 0xc6, + 0xb7, 0x4d, 0xaf, 0xc1, 0x30, 0xfc, 0xb5, 0x79, + 0xf0, 0xea, 0xd0, 0x9f, 0xc8, 0xb4, 0xb2, 0xb6, + 0x8a, 0x69, 0x29, 0xcc, 0x81, 0x46, 0x47, 0xca, + 0x92, 0x9b, 0xfb, 0x26, 0xa6, 0xae, 0x07, 0xdc, + 0x24, 0x2d, 0xba, 0x63, 0x8f, 0x43, 0x31, 0x45, + 0xcc, 0x91, 0x07, 0x15, 0x9f, 0x4a, 0x85, 0x76, + 0x37, 0xc0, 0xc4, 0x04, 0x54, 0xc6, 0xce, 0x4f, + 0x8d, 0xce, 0xa8, 0xe6, 0x67, 0x3f, 0xaa, 0xe4, + 0x12, 0x48, 0x92, 0xec, 0x83, 0xf4, 0xe4, 0x6a, + 0x94, 0x85, 0x23, 0xfb, 0x0b, 0xc9, 0x40, 0x57, + 0xb3, 0x5c, 0x92, 0x17, 0xe5, 0x30, 0x35, 0xe1, + 0x5f, 0x98, 0xb5, 0x28, 0x12, 0xce, 0x03, 0xfc, + 0x9e, 0xe6, 0xef, 0x07, 0xf7, 0x72, 0x52, 0xc5, + 0x56, 0xed, 0x80, 0xbd, 0x48, 0xba, 0xec, 0x9d, + 0x12, 0xff, 0x6b, 0x56, 0x32, 0x26, 0x3e, 0xa8, + 0x11, 0x58, 0xd9, 0x84, 0x7b, 0x26, 0x37, 0xff, + 0xfe, 0xb5, 0x38, 0x3a, 0x99, 0xe1, 0xc1, 0x65, + 0x8e, 0xe6, 0x03, 0xdf, 0x68, 0x3b, 0xf8, 0x5c, + 0x8c, 0x41, 0xe4, 0x0f, 0x46, 0x12, 0xaa, 0xa3, + 0xfd, 0xe5, 0x0e, 0x48, 0x70, 0x7d, 0x97, 0x37, + 0xa4, 0x5a, 0x56, 0x76, 0x35, 0xff, 0xca, 0xb7, + 0xf4, 0xbf, 0xb4, 0x53, 0x8f, 0x3e, 0xa8, 0xd6, + 0xb5, 0x0f, 0xe8, 0x1a, 0x07, 0x8e, 0xeb, 0x79, + 0x30, 0x68, 0xbf, 0xd3, 0x20, 0x2f, 0x43, 0x9d, + 0x8f, 0x0f, 0xd3, 0x77, 0x83, 0x18, 0x00, 0x2b, + 0xa2, 0xc8, 0xe7, 0xdf, 0x53, 0x3b, 0xf3, 0x73, + 0x09, 0x83, 0x14, 0x35, 0xda, 0xe9, 0x53, 0x5e, + 0x6e, 0x0d, 0xf4, 0xd3, 0xc1, 0xd5, 0x11, 0x2f, + 0x68, 0xb3, 0x52, 0x61, 0xd3, 0x0b, 0x17, 0xf5, + 0x0a, 0x89, 0xa0, 0x16, 0x17, 0x0c, 0xfe, 0x0f, + 0x01, 0x0c, 0x1f, 0x94, 0xe2, 0xb0, 0x20, 0x72, + 0xe2, 0xc3, 0x1d, 0x22, 0xa7, 0x69, 0x6d, 0x6e, + 0x12, 0xe9, 0xc3, 0x8e, 0xea, 0x84, 0x37, 0xa4, + 0xd2, 0xdf, 0x9e, 0xc0, 0xeb, 0xc2, 0xd2, 0x78, + 0xeb, 0xfa, 0x8e, 0x71, 0x7a, 0xb9, 0xdf, 0x98, + 0x33, 0xf0, 0x6d, 0xd8, 0xcf, 0xb9, 0x55, 0xd9, + 0x37, 0xa7, 0x97, 0x97, 0xb7, 0x7f, 0xcf, 0x88, + 0x33, 0xda, 0xf3, 0xb8, 0xd9, 0x7f, 0x2f, 0xe1, + 0x19, 0xe7, 0xf1, 0xb8, 0xb1, 0xaa, 0x96, 0x34, + 0xde, 0x3b, 0x1e, 0x7c, 0xfb, 0xfc, 0xc2, 0x36, + 0xe7, 0xca, 0xf4, 0xa3, 0x10, 0x18, 0x74, 0xdb, + 0x85, 0xe9, 0xe0, 0xfd, 0x0e, 0x13, 0x9c, 0x54, + 0x93, 0x2d, 0x08, 0x34, 0x76, 0xf2, 0x4f, 0xb8, + 0x7b, 0xb5, 0xc6, 0xee, 0xf3, 0x03, 0xb9, 0xd1, + 0x9f, 0xf8, 0xd0, 0x36, 0x58, 0xee, 0xf1, 0x12, + 0x40, 0x85, 0x01, 0x02, 0x84, 0x95, 0xdc, 0x62, + 0xe4, 0xe2, 0xd3, 0x5c, 0x2b, 0xab, 0x93, 0xcd, + 0x82, 0x93, 0x2d, 0xe8, 0x7b, 0x89, 0x61, 0xbf, + 0xf9, 0xc9, 0x5a, 0xb1, 0x28, 0x99, 0xa6, 0x15, + 0x77, 0x61, 0x64, 0xab, 0xd5, 0xc4, 0x91, 0xb4, + 0x37, 0x91, 0xbc, 0xfa, 0xd9, 0xe7, 0xed, 0x7d, + 0x6d, 0x1a, 0xdf, 0x9a, 0xb0, 0xe1, 0x6f, 0xf3, + 0x4c, 0x2a, 0x3c, 0x42, 0xd0, 0xde, 0x1c, 0x32, + 0x83, 0xbb, 0xa7, 0xdc, 0x09, 0x4c, 0x76, 0xad, + 0xe3, 0x13, 0x1f, 0xab, 0x2e, 0x3b, 0x04, 0x17, + 0x72, 0xcd, 0xd8, 0xc4, 0x73, 0x61, 0x65, 0xec, + 0x38, 0x72, 0xd5, 0x30, 0x74, 0x91, 0xba, 0x2b, + 0x9c, 0xe0, 0xeb, 0x63, 0x2a, 0x59, 0xab, 0x0b, + 0x74, 0x96, 0xc1, 0x0b, 0x73, 0xed, 0x73, 0x27, + 0x7d, 0x6f, 0x0d, 0x82, 0x11, 0xda, 0x6d, 0x7a, + 0xce, 0xea, 0xf7, 0xbf, 0xad, 0x16, 0x07, 0x2c, + 0xb1, 0x07, 0x73, 0x82, 0xc6, 0x88, 0x77, 0xcf, + 0x7c, 0x64, 0x64, 0xc5, 0xba, 0xca, 0x94, 0xe6, + 0x79, 0x39, 0x84, 0xf2, 0x3f, 0xc8, 0x7a, 0x7b, + 0x0e, 0x25, 0xf7, 0xe9, 0xaf, 0xdb, 0x95, 0x76, + 0xc8, 0x97, 0x85, 0xe7, 0xb6, 0xf7, 0x03, 0x19, + 0x0c, 0x10, 0xf7, 0xca, 0x2c, 0xc2, 0xcb, 0x4d, + 0x98, 0x2b, 0x88, 0x89, 0x23, 0x3b, 0x21, 0x55, + 0xc9, 0xf3, 0xfe, 0x98, 0x9b, 0xf4, 0x88, 0x5e, + 0xbb, 0x03, 0xf8, 0x44, 0x3a, 0xd7, 0x58, 0xa7, + 0xde, 0xec, 0x97, 0x0d, 0xc2, 0xe0, 0x11, 0xf1, + 0x86, 0x2b, 0x1d, 0xe2, 0x59, 0x2a, 0x86, 0xe5, + 0x8f, 0x58, 0xd2, 0x37, 0x87, 0x43, 0x1d, 0xeb, + 0xe5, 0x3a, 0xbe, 0xeb, 0x54, 0x81, 0xf3, 0x24, + 0xc9, 0xb6, 0x6e, 0xd5, 0xb8, 0x50, 0x22, 0xc8, + 0x0f, 0x02, 0x1a, 0x6e, 0x77, 0x4d, 0x21, 0x6d, + 0x4c, 0x43, 0x75, 0x62, 0x32, 0xe6, 0x2a, 0x23, + 0xe9, 0x07, 0x87, 0xca, 0x85, 0x52, 0x02, 0xd9, + 0x41, 0x01, 0x39, 0x44, 0x2e, 0x87, 0xbc, 0xfa, + 0x02, 0x29, 0xb6, 0x46, 0xb5, 0x00, 0xb5, 0x0c, + 0x08, 0x61, 0x66, 0xd9, 0xf0, 0x45, 0x19, 0xc2, + 0xac, 0x84, 0x81, 0x5a, 0x17, 0x5c, 0x4e, 0x0c, + 0x7e, 0xa2, 0xd3, 0x1d, 0xd7, 0xc4, 0xa3, 0x7b, + 0x51, 0x2b, 0x61, 0x15, 0x14, 0xa9, 0x6c, 0x33, + 0x30, 0x1b, 0x27, 0xc4, 0xd0, 0x57, 0xda, 0x3d, + 0x85, 0x87, 0xa0, 0xb4, 0x0d, 0x80, 0xc1, 0x8e, + 0x95, 0x23, 0x35, 0xa9, 0xde, 0xa7, 0x6c, 0x8b, + 0x7c, 0xb5, 0xd3, 0xd5, 0x08, 0x05, 0x80, 0x98, + 0xfa, 0x65, 0xef, 0x98, 0xb5, 0x22, 0x7c, 0x30, + 0xf6, 0xf0, 0x5e, 0x1c, 0x53, 0x5e, 0x30, 0x4c, + 0x4c, 0xf8, 0x3a, 0xd4, 0x46, 0x61, 0x88, 0xb0, + 0x22, 0x65, 0xa8, 0xc4, 0x10, 0xbd, 0xf9, 0x27, + 0x39, 0xec, 0x36, 0xe5, 0xe4, 0x19, 0x68, 0x1b, + 0x4b, 0xb5, 0xd3, 0x47, 0x9b, 0x72, 0x6c, 0xa0, + 0x6c, 0x2e, 0xf4, 0xe3, 0xef, 0x99, 0xb9, 0x86, + 0x71, 0x7a, 0x87, 0xa9, 0x36, 0xb3, 0x2e, 0xa3, + 0xad, 0xe3, 0xb6, 0x8d, 0xc8, 0x1b, 0xc0, 0x3e, + 0x82, 0xec, 0xeb, 0xe8, 0x8f, 0xf8, 0x61, 0xed, + 0x7a, 0xe2, 0xd9, 0x6e, 0x87, 0x0e, 0xcf, 0x83, + 0x08, 0x2c, 0xf7, 0x0c, 0x51, 0x5e, 0x06, 0xca, + 0x22, 0xa2, 0x04, 0x5d, 0x31, 0xb5, 0x6d, 0xb5, + 0x2a, 0xed, 0xf9, 0xb7, 0x24, 0xb6, 0x9e, 0xa1, + 0xe2, 0xed, 0x56, 0x29, 0x1f, 0x5e, 0x56, 0xb1, + 0xf6, 0xe2, 0x61, 0x95, 0xdf, 0xdd, 0xe7, 0x6e, + 0x33, 0x1b, 0x38, 0xdd, 0xbb, 0x5c, 0x6c, 0x42, + 0x52, 0x9e, 0x21, 0x20, 0x9e, 0x5b, 0xd5, 0x2b, + 0x22, 0x4a, 0x85, 0xd0, 0x09, 0x7c, 0x47, 0x4b, + 0xdd, 0xe5, 0xd7, 0x26, 0x55, 0x86, 0x98, 0x76, + 0x37, 0xdf, 0x43, 0x7f, 0x3a, 0x54, 0xbc, 0x61, + 0xef, 0x26, 0xfe, 0xc0, 0xe6, 0xc3, 0xc9, 0xca, + 0xd1, 0x46, 0xdf, 0x53, 0xd3, 0xb6, 0xbf, 0x37, + 0x58, 0x8e, 0x2e, 0x02, 0xa4, 0xfc, 0x82, 0xef, + 0x96, 0xfc, 0x07, 0x7a, 0x0f, 0x91, 0xe3, 0xbf, + 0x32, 0x8a, 0xc8, 0xee, 0xf1, 0x6d, 0xac, 0xd4, + 0x3e, 0x58, 0xa9, 0x26, 0x29, 0x8a, 0xdd, 0x5a, + 0x7c, 0xdd, 0xc1, 0x6a, 0x04, 0x52, 0x04, 0x69, + 0x09, 0x53, 0xe1, 0xb2, 0x48, 0x6e, 0xd7, 0x96, + 0xa4, 0x1b, 0xcf, 0xf0, 0x75, 0x11, 0xe0, 0xa3, + 0xca, 0x5d, 0xd9, 0x9a, 0xa7, 0xee, 0xc5, 0x13, + 0x41, 0x2b, 0x3b, 0xed, 0xca, 0xec, 0xc6, 0x7b, + 0x0a, 0x72, 0x56, 0x1a, 0x47, 0x19, 0xc1, 0xf5, + 0x36, 0x37, 0xab, 0x23, 0x8e, 0xed, 0xdc, 0x3d, + 0xf6, 0xc9, 0xb1, 0x17, 0x36, 0xd6, 0xba, 0x63, + 0x62, 0x7e, 0xbd, 0x83, 0xfa, 0xbe, 0x36, 0x26, + 0x3e, 0xb3, 0xec, 0x59, 0xbd, 0xaf, 0xd3, 0x9e, + 0x38, 0xca, 0x62, 0x04, 0x95, 0x77, 0x5c, 0xf4, + 0xb4, 0x2a, 0x4c, 0xcb, 0x91, 0x83, 0xe8, 0xcf, + 0x04, 0x6c, 0x0a, 0x02, 0x41, 0x18, 0x5d, 0x75, + 0xf1, 0xa5, 0x11, 0x38, 0x0e, 0x65, 0x83, 0x76, + 0x83, 0xa5, 0xf3, 0xd7, 0xd1, 0x81, 0xf6, 0xf8, + 0x51, 0xb0, 0xd7, 0x5d, 0x88, 0x3e, 0xe9, 0xcf, + 0xcd, 0xe0, 0x8a, 0x1c, 0x00, 0xb7, 0x40, 0x3d, + 0x55, 0x67, 0xbd, 0x3a, 0x93, 0x16, 0x58, 0xb5, + 0xe0, 0xaa, 0xe3, 0x66, 0x33, 0xe2, 0x25, 0x78, + 0x5c, 0xec, 0x02, 0xd1, 0x7b, 0x2e, 0xea, 0xd0, + 0x4e, 0xe7, 0x5a, 0xc5, 0xc6, 0x15, 0xe5, 0xfe, + 0xad, 0x46, 0x72, 0xd0, 0x57, 0x68, 0x8d, 0x63, + 0xcb, 0x8a, 0x0a, 0x76, 0xa0, 0xd0, 0x71, 0xa1, + 0x49, 0xc6, 0xb8, 0x20, 0x4c, 0x65, 0xee, 0x60, + 0x1c, 0xeb, 0x2a, 0x94, 0xe9, 0x51, 0x13, 0x17, + 0xcc, 0x37, 0xaf, 0x05, 0x4e, 0x0c, 0x97, 0xb9, + 0x6e, 0xae, 0x84, 0x05, 0x44, 0x1f, 0x02, 0xc3, + 0x94, 0x2b, 0xfa, 0x8e, 0xe5, 0xb0, 0x5e, 0x4d, + 0xf8, 0xc0, 0x6b, 0xa5, 0x88, 0x08, 0xc3, 0x39, + 0x7a, 0x06, 0xc0, 0x70, 0xe4, 0xa5, 0x75, 0xa6, + 0xaf, 0x6f, 0x72, 0xc6, 0x01, 0x64, 0xee, 0xf0, + 0xa0, 0xd5, 0x29, 0x2c, 0x98, 0x1e, 0xf9, 0x9a, + 0xfe, 0x26, 0x14, 0xb9, 0xe0, 0x20, 0x07, 0xf9, + 0x79, 0x5a, 0x24, 0xce, 0xe9, 0xe0, 0x24, 0xd6, + 0xc4, 0x66, 0x79, 0x0f, 0x33, 0x83, 0x5f, 0x65, + 0x3e, 0xf8, 0xb3, 0x9c, 0x25, 0x6e, 0xe9, 0x58, + 0x1e, 0x6c, 0xae, 0x97, 0x2d, 0xb0, 0x20, 0x5f, + 0x5b, 0x00, 0x68, 0x2e, 0x5c, 0x02, 0x3d, 0x97, + 0x03, 0x83, 0xb7, 0xae, 0xc5, 0x50, 0x70, 0x7b, + 0xc9, 0x57, 0xa8, 0x8e, 0xc7, 0x89, 0x46, 0xa8, + 0xf4, 0x69, 0x12, 0x82, 0x62, 0x0d, 0x11, 0xe6, + 0x00, 0xc8, 0xd0, 0xdc, 0xe6, 0x0d, 0xb2, 0xa8, + 0x4c, 0xbd, 0xe2, 0x51, 0x07, 0x79, 0x61, 0x50, + 0xa7, 0xb0, 0x08, 0x3c, 0xd3, 0x77, 0xdb, 0x20, + 0xf8, 0x26, 0x81, 0x60, 0xfa, 0xd8, 0xeb, 0x66, + 0x36, 0xce, 0x6c, 0x18, 0x2e, 0xaf, 0x97, 0xa4, + 0xa6, 0x10, 0x06, 0x30, 0x71, 0xee, 0x59, 0x6e, + 0x0c, 0x70, 0x0f, 0x0e, 0x64, 0xf9, 0x8a, 0x54, + 0x66, 0xa8, 0x53, 0xaa, 0x0c, 0x7c, 0xf8, 0xda, + 0x63, 0xd8, 0x0d, 0x04, 0xff, 0xfd, 0xbb, 0x61, + 0x88, 0x65, 0x14, 0xd7, 0x7a, 0x9a, 0x90, 0xdd, + 0x04, 0xe6, 0xf6, 0x15, 0xf8, 0xef, 0xf4, 0x26, + 0x5c, 0xdb, 0x20, 0x5a, 0x65, 0x25, 0x4b, 0x55, + 0xb6, 0x7a, 0x91, 0x9c, 0xb0, 0x24, 0x28, 0x35, + 0xaa, 0xea, 0x02, 0xcc, 0x87, 0x4a, 0x06, 0xd3, + 0xc6, 0x59, 0xd3, 0xfe, 0x35, 0xe6, 0x49, 0xf6, + 0x99, 0x14, 0x99, 0x50, 0xd9, 0x25, 0xc3, 0x01, + 0x47, 0xcd, 0xbc, 0x06, 0x9a, 0xb8, 0x8e, 0x79, + 0xe9, 0xeb, 0xa6, 0x3c, 0x12, 0xf7, 0xca, 0xda, + 0x28, 0x22, 0x85, 0x13, 0xe9, 0x3f, 0x37, 0xc5, + 0x9c, 0x04, 0x54, 0xab, 0x49, 0x73, 0xe7, 0xb4, + 0xd1, 0xf4, 0x22, 0x85, 0x88, 0xb2, 0xdd, 0xb0, + 0x2d, 0xfa, 0xcb, 0xa8, 0xd2, 0xc4, 0x22, 0xda, + 0xb7, 0x9f, 0xf4, 0x8c, 0xf4, 0xac, 0xd6, 0xef, + 0x81, 0x46, 0x68, 0x61, 0x2b, 0xef, 0xab, 0xc3, + 0x9b, 0x99, 0xb0, 0x05, 0x4e, 0xce, 0x92, 0x76, + 0x0c, 0xb3, 0x6f, 0xe6, 0x6b, 0xd8, 0xb0, 0x8f, + 0x0a, 0x23, 0xff, 0x82, 0x91, 0xa0, 0x5f, 0x15, + 0xc6, 0xf9, 0x6e, 0x6a, 0x82, 0x58, 0xbf, 0xbd, + 0xb0, 0x37, 0x18, 0xd8, 0xe5, 0x1a, 0x7d, 0x60, + 0x1a, 0xc3, 0x91, 0xa5, 0xa5, 0x2b, 0x21, 0x71, + 0x7b, 0xa7, 0x4f, 0xb0, 0xfd, 0x7f, 0x6b, 0xaa, + 0x4d, 0xc1, 0x47, 0xf9, 0x9f, 0x41, 0xbe, 0x94, + 0x7c, 0x45, 0x02, 0xb1, 0xb5, 0x01, 0xb2, 0xd3, + 0xaf, 0xcd, 0x98, 0x80, 0x26, 0x9b, 0x6d, 0x87, + 0xd4, 0xe7, 0x6f, 0x34, 0x49, 0x33, 0x4f, 0x62, + 0x06, 0x99, 0x02, 0x82, 0x66, 0x45, 0xaa, 0x9a, + 0x8c, 0x1c, 0x37, 0x1d, 0xfe, 0x32, 0x0f, 0x74, + 0x0f, 0x51, 0x3a, 0x55, 0x9b, 0xcb, 0x9d, 0xb7, + 0x64, 0x49, 0xe9, 0xe9, 0x74, 0xaf, 0x40, 0xde, + 0x0b, 0x8b, 0xb4, 0x8f, 0x6e, 0x3d, 0x4e, 0x04, + 0xd7, 0x1e, 0xb9, 0xee, 0xd1, 0x7e, 0xa9, 0x65, + 0x80, 0x2a, 0xb1, 0x85, 0xec, 0xaa, 0x67, 0x3b, + 0x07, 0x5c, 0xdb, 0x49, 0xd1, 0xbb, 0x4b, 0x56, + 0x3b, 0x3e, 0x48, 0xbf, 0x82, 0xd0, 0x1a, 0xd6, + 0x43, 0xe2, 0xf1, 0x56, 0x32, 0xc1, 0xad, 0x02, + 0xf3, 0xac, 0x5d, 0x5b, 0x30, 0x18, 0xcf, 0x17, + 0x47, 0x72, 0x36, 0x2c, 0x23, 0xed, 0x0f, 0x23, + 0xa4, 0xb5, 0x6f, 0x95, 0x6a, 0xde, 0x62, 0xd8, + 0xeb, 0x33, 0xb0, 0x50, 0x2b, 0x50, 0xcf, 0xab, + 0x5d, 0x0b, 0x43, 0x09, 0x55, 0xb8, 0xe7, 0xba, + 0xb4, 0xa1, 0xae, 0x74, 0x0a, 0x96, 0x15, 0xf8, + 0xe5, 0x67, 0xd0, 0x90, 0xeb, 0x31, 0x65, 0xe9, + 0x5c, 0x9f, 0x84, 0x96, 0xb4, 0x09, 0xad, 0xc1, + 0x61, 0x85, 0x32, 0xe5, 0xcd, 0xfc, 0x3e, 0xf5, + 0xde, 0xe4, 0x37, 0xa4, 0x58, 0xc6, 0xfa, 0xea, + 0xba, 0x4c, 0x93, 0x73, 0xfd, 0x3a, 0x33, 0x9e, + 0x13, 0x36, 0xfd, 0x36, 0x0c, 0x17, 0xc8, 0x78, + 0xee, 0x18, 0xc3, 0x1c, 0xb5, 0x43, 0x04, 0xb5, + 0xa2, 0x45, 0xbd, 0xf6, 0x7e, 0x26, 0xce, 0xa5, + 0x46, 0xc7, 0x3f, 0x9d, 0x80, 0x24, 0x41, 0x45, + 0xd2, 0xa3, 0xec, 0x2d, 0x92, 0xbc, 0x77, 0xd2, + 0x45, 0xc9, 0x7e, 0x89, 0xc7, 0x40, 0xfd, 0xe9, + 0x59, 0x02, 0x28, 0x8c, 0x73, 0x6f, 0xeb, 0x1a, + 0x6a, 0x4e, 0x79, 0x23, 0x92, 0xed, 0xc9, 0x56, + 0x25, 0xb3, 0x13, 0x76, 0x3c, 0xee, 0x7f, 0x14, + 0x2f, 0xa1, 0x8f, 0x28, 0x3d, 0xbe, 0x7f, 0xbe, + 0x1a, 0x10, 0xa7, 0x68, 0xf9, 0x5d, 0x48, 0x71, + 0xaa, 0x1e, 0x42, 0x91, 0x3c, 0x47, 0xb6, 0xf5, + 0x48, 0x1d, 0x8f, 0xa8, 0x8a, 0x9e, 0xa4, 0xea, + 0x4b, 0xcb, 0xea, 0x96, 0xe6, 0x67, 0xa4, 0xf9, + 0x3c, 0xba, 0x7a, 0x5a, 0x9e, 0x5e, 0xee, 0x11, + 0xdd, 0xaa, 0xda, 0xa2, 0xf2, 0xf9, 0xa6, 0x5b, + 0xbd, 0x62, 0x23, 0x2b, 0x7c, 0x7f, 0x23, 0xec, + 0x1a, 0x2c, 0x49, 0x52, 0xa0, 0xd6, 0x08, 0x12, + 0x22, 0x2d, 0x3e, 0x3f, 0x90, 0x99, 0xbf, 0xf2, + 0x40, 0x54, 0x73, 0x7c, 0xe5, 0xf7, 0x1f, 0x43, + 0x92, 0xaf, 0xb3, 0xd7, 0x3d, 0x53, 0x62, 0x68, + 0x79, 0xea, 0x50, 0x7e, 0x82, 0x83, 0xa8, 0xae, + 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x10, 0x16, 0x1c, 0x22, 0x29, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa65", + .pk_len =3D DILITHIUM65_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM65_PUBLICKEYBYTES]){ + 0xe8, 0xd0, 0x2e, 0x36, 0x7d, 0x73, 0x4e, 0xc4, + 0x1c, 0xf6, 0xda, 0x86, 0x13, 0xcf, 0xfd, 0x49, + 0xcd, 0x53, 0xd2, 0x13, 0x5f, 0xfa, 0x28, 0xf0, + 0x49, 0x2d, 0x0c, 0x20, 0x21, 0x02, 0xdc, 0x87, + 0x87, 0x9c, 0x19, 0xe8, 0x97, 0x51, 0x5a, 0x02, + 0x30, 0x57, 0x9c, 0x68, 0xc0, 0x56, 0x0d, 0x2c, + 0x75, 0x36, 0xa4, 0x4d, 0x76, 0x6e, 0x60, 0xb8, + 0x6a, 0x0a, 0x2a, 0xb7, 0x8d, 0x6f, 0x44, 0x0e, + 0xd1, 0xdb, 0xd5, 0x63, 0x87, 0xa4, 0xc2, 0xcb, + 0x7b, 0x46, 0x28, 0x4e, 0xd9, 0xf7, 0x9d, 0x8e, + 0xc4, 0xc0, 0x61, 0x93, 0x2d, 0xa1, 0xf8, 0x56, + 0x10, 0xdf, 0xbb, 0x7a, 0xac, 0x79, 0x9a, 0x2f, + 0xd3, 0xe7, 0x2f, 0xd1, 0x1c, 0xee, 0xa9, 0xe2, + 0x82, 0x45, 0x9e, 0x8a, 0x6b, 0x91, 0xcd, 0x91, + 0x3c, 0xcd, 0x73, 0x85, 0x83, 0x60, 0x57, 0x4e, + 0x86, 0x59, 0x5f, 0x5b, 0xa7, 0xf9, 0x00, 0x2b, + 0xba, 0x4e, 0x4c, 0xc6, 0x0e, 0x7d, 0x1b, 0xef, + 0x11, 0x23, 0x1b, 0x48, 0x4f, 0xba, 0x5a, 0x40, + 0xb2, 0xea, 0x86, 0xcf, 0xc0, 0xb2, 0x69, 0x19, + 0x43, 0x75, 0x95, 0x5b, 0x7f, 0xd7, 0x12, 0x39, + 0xcd, 0xf5, 0x92, 0xad, 0xda, 0xc9, 0xc1, 0x4b, + 0xde, 0xcb, 0x99, 0xbf, 0xa8, 0x19, 0x5b, 0x68, + 0x0d, 0xd1, 0x11, 0xa9, 0x39, 0x0f, 0xb4, 0x00, + 0xa0, 0xf3, 0xd8, 0x51, 0xd0, 0x4d, 0xfe, 0x07, + 0xe4, 0x10, 0x76, 0x24, 0xf5, 0xec, 0x1a, 0xd5, + 0xad, 0x52, 0x13, 0xe7, 0x39, 0xfb, 0x53, 0x0f, + 0x62, 0xff, 0xfd, 0xa0, 0xd4, 0x9b, 0xb2, 0x53, + 0xce, 0xfa, 0xcd, 0x7a, 0xce, 0x8e, 0x65, 0xf1, + 0xcf, 0x9c, 0x97, 0x64, 0xd8, 0x37, 0xfe, 0xa5, + 0xa8, 0x46, 0xdf, 0xba, 0xc6, 0xdb, 0x35, 0xc0, + 0xf4, 0x0b, 0x3b, 0xa7, 0xdd, 0x75, 0x7a, 0x06, + 0x78, 0x53, 0x95, 0xd3, 0x96, 0x89, 0x53, 0x4d, + 0x2c, 0xc6, 0xcf, 0xfa, 0xab, 0x1d, 0xb9, 0x2e, + 0x79, 0x25, 0xe4, 0x30, 0x1d, 0x75, 0x8f, 0x5a, + 0x93, 0x86, 0xd0, 0x2b, 0xb3, 0x0a, 0x7d, 0xec, + 0x46, 0xde, 0x32, 0x3b, 0x61, 0xea, 0xae, 0x93, + 0x94, 0xa3, 0xd2, 0x38, 0xc9, 0x0f, 0x34, 0x5a, + 0xed, 0x84, 0x31, 0xcf, 0x78, 0x9a, 0xcd, 0xf8, + 0xf3, 0x98, 0xf2, 0x4e, 0x89, 0xa2, 0xbb, 0x7b, + 0xdb, 0x1c, 0xa5, 0xcc, 0x37, 0x4a, 0x28, 0xaf, + 0xdc, 0xe7, 0x1c, 0x3c, 0x65, 0x7d, 0xad, 0xb2, + 0xa1, 0x1e, 0x07, 0x22, 0x66, 0x48, 0x89, 0x14, + 0x0c, 0x0e, 0xba, 0xef, 0x54, 0xbc, 0xb5, 0xcb, + 0xa5, 0x2b, 0x3b, 0x59, 0x9e, 0x7c, 0xc9, 0x01, + 0xa8, 0xcb, 0xf4, 0x34, 0x01, 0x33, 0x7d, 0x61, + 0x12, 0x49, 0x63, 0x8b, 0xba, 0x81, 0xf2, 0xd9, + 0x2b, 0x94, 0xdf, 0xbb, 0xe2, 0x7c, 0x22, 0x92, + 0xd3, 0x49, 0xd6, 0x84, 0x28, 0x50, 0x8e, 0xf0, + 0x1d, 0x5a, 0x69, 0xd9, 0x7a, 0xc1, 0x29, 0x83, + 0x89, 0x0e, 0xfc, 0xd0, 0xb0, 0xf1, 0x1d, 0xb6, + 0x92, 0xa4, 0xbb, 0x38, 0x2e, 0x57, 0x44, 0x11, + 0xba, 0x5c, 0x9e, 0xba, 0x56, 0x27, 0xa2, 0xf4, + 0xb5, 0xe6, 0x29, 0x19, 0x05, 0x3b, 0xb1, 0x4e, + 0x42, 0x37, 0x7c, 0x3c, 0xde, 0x7d, 0x57, 0x27, + 0x15, 0x63, 0xf6, 0x9f, 0xa6, 0xdd, 0x6c, 0xfb, + 0xde, 0x86, 0xa3, 0x40, 0xbf, 0xf0, 0x37, 0xcf, + 0x8a, 0x65, 0x5c, 0x95, 0xdb, 0x0c, 0x9d, 0xf7, + 0x8d, 0x8f, 0xe1, 0x21, 0x9b, 0x5e, 0x99, 0xba, + 0xb0, 0x95, 0x71, 0x4c, 0x83, 0x0b, 0x53, 0x21, + 0xee, 0x17, 0x3f, 0x9e, 0xf7, 0x88, 0x29, 0x68, + 0x22, 0x8f, 0xd2, 0x68, 0x47, 0x8c, 0x4d, 0x6e, + 0xf8, 0x4d, 0xc2, 0x6d, 0xcd, 0x46, 0x99, 0x4c, + 0x97, 0xe7, 0x57, 0x39, 0xfb, 0x80, 0x49, 0x4a, + 0x44, 0x8d, 0x54, 0x2e, 0x8e, 0x22, 0x24, 0x3f, + 0x98, 0x64, 0x34, 0x1d, 0x49, 0xa9, 0xe1, 0x2a, + 0x64, 0x40, 0xde, 0x06, 0x9b, 0xf6, 0x3f, 0x9d, + 0x34, 0x5b, 0x39, 0x54, 0x45, 0x08, 0x78, 0x88, + 0xd7, 0x1c, 0x72, 0xe0, 0xe3, 0x0d, 0x12, 0x4e, + 0x11, 0x2c, 0xe2, 0xe4, 0xa8, 0x53, 0xd1, 0x6a, + 0x81, 0x71, 0x80, 0x8a, 0xde, 0x47, 0x62, 0x22, + 0x54, 0x8a, 0x87, 0xf8, 0x31, 0xb9, 0x3e, 0x38, + 0x9e, 0xfc, 0xc0, 0xc7, 0x67, 0x5c, 0x1f, 0xa0, + 0xff, 0xc1, 0x43, 0xa2, 0xc6, 0x8e, 0xfd, 0xde, + 0x0b, 0xde, 0xb3, 0xd8, 0xb4, 0xd2, 0xfd, 0xc6, + 0x9c, 0x81, 0xe9, 0x00, 0xc0, 0x46, 0x98, 0x09, + 0xdb, 0x73, 0xfe, 0x97, 0xd1, 0x4d, 0xff, 0x3a, + 0xbf, 0xd4, 0xd7, 0x2b, 0x4f, 0x90, 0xf6, 0xd5, + 0x12, 0x49, 0xbc, 0xb9, 0xab, 0x8f, 0x44, 0xf1, + 0xaa, 0xef, 0x6b, 0x6f, 0x68, 0x05, 0x96, 0x1c, + 0x09, 0x83, 0x3c, 0x76, 0xa9, 0xe4, 0x22, 0x00, + 0x9c, 0x76, 0xa6, 0x9d, 0xe5, 0xdb, 0xb5, 0x91, + 0xa2, 0x67, 0x8c, 0xb6, 0xda, 0xb0, 0xe2, 0xb5, + 0x80, 0x42, 0x23, 0x3a, 0x8d, 0xca, 0x8f, 0x77, + 0xf3, 0x13, 0x18, 0x4f, 0xc7, 0x68, 0xaf, 0x5e, + 0x68, 0x04, 0xc7, 0x6b, 0xa9, 0x88, 0x03, 0x3d, + 0xb4, 0x0f, 0x2d, 0x60, 0x0d, 0x5b, 0xa4, 0x03, + 0xd8, 0x97, 0x1a, 0x38, 0x24, 0x05, 0x1b, 0x6a, + 0xd8, 0x25, 0x34, 0xe4, 0x53, 0xab, 0x80, 0xcc, + 0x71, 0x17, 0x82, 0x3f, 0xa8, 0x67, 0xb8, 0x84, + 0xde, 0xab, 0x2f, 0xf7, 0x5d, 0x63, 0xba, 0xd6, + 0x1b, 0x94, 0xae, 0x06, 0x93, 0xea, 0x7e, 0xc6, + 0x7c, 0x22, 0x6d, 0xaa, 0xc6, 0xf2, 0xee, 0x38, + 0x1b, 0x24, 0x7e, 0x6e, 0x7d, 0xcf, 0x68, 0xcd, + 0x30, 0xb1, 0x8e, 0x42, 0x8b, 0xd8, 0x97, 0xb2, + 0xfb, 0x03, 0x99, 0x07, 0xf6, 0x13, 0x0e, 0xda, + 0x3f, 0x50, 0x4b, 0x94, 0x7f, 0x41, 0x63, 0x1d, + 0xa6, 0xcc, 0x8e, 0xff, 0xf7, 0x7d, 0x05, 0x1f, + 0x73, 0x7e, 0xaf, 0xbc, 0x14, 0xdd, 0x3c, 0x61, + 0xbd, 0x96, 0xa1, 0x12, 0xd5, 0xb0, 0xc2, 0xeb, + 0x27, 0x3b, 0x97, 0x0d, 0xc6, 0x78, 0xfa, 0x97, + 0x63, 0xee, 0xce, 0xfe, 0xe2, 0x33, 0x66, 0x36, + 0xd6, 0x41, 0x52, 0xfa, 0xd1, 0x6a, 0xb3, 0x62, + 0x01, 0x07, 0xd8, 0x12, 0xc3, 0xc0, 0xe3, 0xd7, + 0x40, 0x86, 0xe3, 0x13, 0xa1, 0x11, 0xc6, 0x05, + 0xe3, 0x84, 0xa3, 0x76, 0xa2, 0x0c, 0x60, 0xca, + 0x42, 0xbe, 0x0c, 0x3d, 0x04, 0x91, 0xe3, 0xc2, + 0xd3, 0xbd, 0x0c, 0xd3, 0x0d, 0x24, 0x7b, 0x5f, + 0x19, 0xe4, 0x79, 0x59, 0xf1, 0x47, 0x1a, 0xd4, + 0x4c, 0xc6, 0x23, 0x5e, 0x4f, 0x3e, 0x54, 0x0d, + 0x06, 0x70, 0xb4, 0x50, 0x7e, 0xe8, 0xfb, 0x78, + 0x5c, 0x09, 0x26, 0x1a, 0x3f, 0xf7, 0x24, 0x70, + 0x9c, 0x54, 0xc7, 0xdd, 0x27, 0x5f, 0x11, 0x75, + 0x96, 0x5c, 0xad, 0xfe, 0x5f, 0x7c, 0x42, 0x4f, + 0x3d, 0xa7, 0x1e, 0x6f, 0x7e, 0x6f, 0xdc, 0xd7, + 0xad, 0x0f, 0xf9, 0x6f, 0xb1, 0xfd, 0xca, 0xdf, + 0xcf, 0x59, 0xe4, 0x86, 0x69, 0x37, 0x34, 0xaa, + 0xc8, 0xe2, 0xca, 0x3b, 0xcc, 0x48, 0x86, 0xe3, + 0xee, 0xea, 0x25, 0x54, 0x94, 0x1b, 0x30, 0xbd, + 0x39, 0xb0, 0xe3, 0x41, 0xa5, 0xab, 0x03, 0x7b, + 0x12, 0xfb, 0x1f, 0x6e, 0x4e, 0xaa, 0xf5, 0x41, + 0xa0, 0x5c, 0xa2, 0xaa, 0xc4, 0x6b, 0xc9, 0xa6, + 0xca, 0x61, 0x78, 0xcb, 0xcd, 0x2a, 0x47, 0x31, + 0xf8, 0x8a, 0x90, 0x4f, 0x88, 0xb3, 0x3e, 0x4d, + 0x6b, 0x75, 0x74, 0x4d, 0x00, 0x7c, 0xc8, 0x29, + 0x9b, 0xe9, 0xf7, 0x6f, 0xec, 0xa3, 0xf0, 0x43, + 0x10, 0x05, 0x88, 0xee, 0x3a, 0x5f, 0x96, 0x31, + 0xfa, 0xe3, 0xca, 0x31, 0x38, 0x48, 0x9b, 0x9d, + 0xe9, 0x4e, 0x5f, 0x45, 0xc1, 0xc0, 0x70, 0x70, + 0xec, 0x1b, 0x95, 0x77, 0x14, 0xda, 0xe2, 0xf1, + 0x0c, 0xba, 0xf5, 0x38, 0xc5, 0x0e, 0x07, 0xbe, + 0x54, 0x1f, 0x70, 0x22, 0x79, 0x88, 0xc8, 0x4b, + 0xd7, 0xae, 0x5b, 0x5a, 0x15, 0xbc, 0xa5, 0x1c, + 0x5d, 0xee, 0xcf, 0x9a, 0xa2, 0xde, 0x79, 0x77, + 0x40, 0xb3, 0x32, 0xd5, 0x31, 0x50, 0x91, 0x30, + 0x56, 0xbc, 0x26, 0xa2, 0x50, 0x44, 0x1d, 0xdc, + 0xa8, 0x5c, 0xbf, 0x7b, 0x19, 0xfb, 0x0f, 0xc3, + 0x78, 0x12, 0x29, 0xbe, 0xc0, 0x74, 0xd5, 0xc2, + 0xac, 0xce, 0xf9, 0x34, 0xb3, 0x6d, 0x9b, 0xfd, + 0x55, 0x10, 0x3d, 0xa5, 0x05, 0xee, 0x03, 0x52, + 0xc8, 0x05, 0xd0, 0x22, 0xc0, 0xee, 0x7a, 0x19, + 0x17, 0x19, 0x28, 0x01, 0xfc, 0x08, 0x04, 0x27, + 0x62, 0x61, 0xf8, 0xc3, 0x91, 0x68, 0xd9, 0xb6, + 0x9d, 0x9f, 0xa4, 0x40, 0xd2, 0x5d, 0xfe, 0xb5, + 0xae, 0x94, 0xee, 0x07, 0x52, 0x59, 0xf6, 0x63, + 0x23, 0xb9, 0xf0, 0xc9, 0xd3, 0x55, 0xca, 0xbc, + 0xfa, 0x80, 0x5f, 0x96, 0x5b, 0x5e, 0x64, 0x0e, + 0x1c, 0x47, 0x56, 0xc6, 0xee, 0x75, 0x7c, 0x90, + 0xd4, 0x2f, 0x97, 0xce, 0x85, 0x9a, 0x84, 0x37, + 0xb6, 0x0d, 0x79, 0x65, 0x3f, 0xb5, 0xa3, 0xe8, + 0xff, 0xac, 0xeb, 0x2b, 0x11, 0x40, 0xb3, 0xb3, + 0x9c, 0xf6, 0x0e, 0xde, 0xb1, 0x76, 0x63, 0x84, + 0xd3, 0x29, 0x52, 0x69, 0x6a, 0x3a, 0xc0, 0x7f, + 0x81, 0xf0, 0x87, 0xc6, 0x92, 0xd3, 0x5f, 0xb1, + 0x48, 0x92, 0x98, 0x25, 0xc0, 0x43, 0x19, 0x1c, + 0x68, 0xf1, 0x2a, 0x5b, 0xfb, 0x3c, 0xd3, 0xc6, + 0x19, 0x7b, 0x9e, 0x66, 0xe0, 0xbe, 0x74, 0x57, + 0x35, 0x6e, 0x6e, 0xf9, 0x03, 0x76, 0x7c, 0x1c, + 0xce, 0x44, 0x5f, 0x6d, 0xd5, 0xea, 0x8f, 0x4a, + 0x0c, 0x85, 0x3b, 0xa2, 0xf7, 0x51, 0x27, 0x41, + 0x95, 0x5d, 0x00, 0x06, 0x44, 0x9f, 0x98, 0x61, + 0x7b, 0x48, 0x36, 0xa5, 0xb4, 0xb6, 0x0f, 0x27, + 0x1a, 0xac, 0x63, 0x24, 0xf6, 0x46, 0x51, 0xc5, + 0x44, 0xba, 0x39, 0x71, 0x69, 0x33, 0x20, 0x1f, + 0xc3, 0x50, 0xbe, 0xc3, 0xd3, 0x55, 0x59, 0x43, + 0xc9, 0x4e, 0x68, 0xdf, 0x1d, 0xca, 0x0b, 0xe2, + 0x11, 0x61, 0x01, 0xe2, 0x5a, 0xd5, 0xed, 0x6b, + 0xbf, 0x76, 0x02, 0x88, 0x9e, 0xf0, 0x1c, 0x57, + 0x1c, 0xb0, 0x99, 0x89, 0x4d, 0xd9, 0xcf, 0x10, + 0x49, 0x9b, 0x26, 0x0f, 0xfb, 0xf8, 0x10, 0x6c, + 0x3f, 0x41, 0x78, 0x0d, 0xa3, 0xdc, 0x5d, 0x18, + 0xe7, 0x3c, 0xa8, 0x4f, 0x70, 0xf7, 0x82, 0xef, + 0x15, 0xcf, 0x5c, 0x00, 0x15, 0x41, 0x38, 0x56, + 0x3c, 0x4c, 0x2e, 0xbc, 0xb1, 0x34, 0x35, 0xce, + 0x18, 0xc4, 0xa2, 0xb4, 0xea, 0xc2, 0xac, 0x0e, + 0x63, 0x23, 0x20, 0xa1, 0x72, 0x19, 0x6a, 0x21, + 0x75, 0xcd, 0xab, 0xcc, 0xdb, 0x92, 0xc9, 0x55, + 0x1c, 0x60, 0xcc, 0xcd, 0xa1, 0x33, 0x28, 0x4a, + 0x83, 0x79, 0x14, 0x0a, 0x79, 0x40, 0x15, 0x4b, + 0x13, 0x1b, 0x50, 0x95, 0x4b, 0x78, 0x0f, 0x9d, + 0x56, 0x18, 0xa1, 0x4e, 0x5f, 0x82, 0x85, 0x2f, + 0xa0, 0x54, 0x11, 0xad, 0x58, 0xe0, 0x2d, 0x37, + 0x87, 0x2c, 0xec, 0x35, 0xe2, 0xa4, 0xf1, 0x53, + 0x31, 0xbb, 0xa9, 0xd4, 0x86, 0x2f, 0x80, 0xe9, + 0x03, 0x1e, 0xe4, 0x72, 0x98, 0x1a, 0x98, 0x83, + 0xf4, 0x27, 0x64, 0xf5, 0xc7, 0x8c, 0x9e, 0xec, + 0x22, 0xe4, 0x37, 0x6a, 0xef, 0x3e, 0x7f, 0x11, + 0x0e, 0xdd, 0x32, 0xf9, 0xf5, 0x43, 0x21, 0x27, + 0x7d, 0x6d, 0xa3, 0xe8, 0x75, 0xf4, 0x06, 0x9e, + 0xda, 0x53, 0x49, 0x07, 0x87, 0x91, 0xbe, 0xe9, + 0xf2, 0xae, 0xa3, 0x26, 0x1a, 0xc2, 0x35, 0x07, + 0x21, 0x9b, 0x60, 0x56, 0xfb, 0xce, 0xf8, 0x9f, + 0x8b, 0x46, 0xef, 0x2d, 0x24, 0x70, 0x12, 0xb2, + 0x9d, 0x3c, 0x6b, 0xed, 0xa4, 0xe4, 0x74, 0x98, + 0xc0, 0xd2, 0x49, 0xea, 0x52, 0x91, 0x47, 0x5d, + 0x60, 0xf5, 0x5c, 0x81, 0x86, 0xe6, 0x70, 0xcb, + 0x6c, 0xe4, 0xa3, 0x0d, 0x1f, 0xe7, 0xd0, 0x90, + 0xb0, 0xe7, 0x8a, 0xa6, 0x87, 0x96, 0xaa, 0xd2, + 0xf4, 0x3b, 0xaa, 0x3b, 0xfc, 0xf3, 0x29, 0xdd, + 0xd3, 0xce, 0x4c, 0xfa, 0x52, 0x7a, 0xef, 0xf0, + 0x27, 0x16, 0x15, 0x23, 0x9b, 0x40, 0x01, 0x4c, + 0x66, 0x80, 0xc1, 0xdd, 0x00, 0x31, 0xfa, 0x23, + 0xa2, 0x24, 0x72, 0xa7, 0xd2, 0x50, 0xf4, 0x26, + 0x83, 0x31, 0xd1, 0x7d, 0xeb, 0xef, 0x4f, 0x1d, + 0xa5, 0xf4, 0xde, 0x8e, 0x45, 0x48, 0x3c, 0x62, + 0xde, 0x86, 0x40, 0x1b, 0xbe, 0xd1, 0xa4, 0xb7, + 0xa7, 0x5b, 0x6d, 0xe9, 0x26, 0x68, 0x0d, 0xc8, + 0x22, 0xa8, 0x62, 0x90, 0x33, 0xce, 0x9d, 0xaf, + 0x58, 0x6b, 0x4d, 0x14, 0x5b, 0x09, 0xfb, 0xfc, + 0x14, 0xc8, 0xa8, 0xbf, 0xb9, 0x4c, 0xc3, 0x7d, + 0x0c, 0x89, 0x2d, 0x37, 0xca, 0x65, 0x12, 0x83, + 0xb4, 0x6c, 0x08, 0x46, 0x28, 0x86, 0x07, 0x2c, + 0x37, 0x1a, 0xaf, 0xf4, 0xfc, 0x6d, 0x71, 0x4c, + 0xbd, 0x1f, 0xec, 0xe0, 0x2a, 0xbd, 0x11, 0xdd, + 0x41, 0xff, 0x85, 0xe0, 0x18, 0xf0, 0x5c, 0x54, + 0x29, 0x98, 0x24, 0xb0, 0x3d, 0x93, 0xc0, 0xe9, + 0x7f, 0x42, 0x22, 0x08, 0x5c, 0x61, 0xc8, 0x00, + 0x66, 0xa9, 0x1f, 0x20, 0xf1, 0xa7, 0xf4, 0x4d, + 0x91, 0xb9, 0xbe, 0xdb, 0x98, 0x42, 0xfc, 0xfb, + 0xe8, 0x23, 0xdc, 0x2a, 0x93, 0x4c, 0xdf, 0xd2, + 0x12, 0x14, 0x56, 0xe7, 0x13, 0x23, 0xf3, 0x5f, + 0x3c, 0x3f, 0xa4, 0x09, 0x0a, 0x3f, 0xe1, 0x86, + 0x87, 0x7f, 0x7a, 0xbd, 0xda, 0x97, 0x1b, 0x71, + 0x1d, 0xd6, 0x9e, 0xe0, 0x13, 0x72, 0x8b, 0x5a, + 0x62, 0x1c, 0xb1, 0x6e, 0xbb, 0x58, 0xac, 0x6e, + 0x0c, 0x0f, 0xe7, 0x56, 0xb0, 0xeb, 0x38, 0x23, + 0x9c, 0xd9, 0x3b, 0x09, 0xf1, 0xd4, 0xb0, 0xef, + 0x79, 0xb1, 0x2d, 0xf1, 0x53, 0xc7, 0xe1, 0xc5, + 0xb0, 0x6e, 0x82, 0x70, 0x56, 0xd2, 0x99, 0x0c, + 0x5d, 0x65, 0x7f, 0x6d, 0xb1, 0x41, 0x8b, 0xb1, + 0xa5, 0x8d, 0x02, 0xf4, 0x5a, 0x9d, 0x48, 0x10, + 0x11, 0xa4, 0xc8, 0x11, 0x5a, 0xfb, 0x68, 0x58, + 0x9d, 0xef, 0x13, 0xdd, 0x61, 0x63, 0x14, 0xba, + 0x4d, 0xd8, 0x05, 0x0e, 0x13, 0xe8, 0x60, 0xf3, + 0x2b, 0x44, 0xea, 0x3f, 0x37, 0x6b, 0x10, 0x32, + 0x16, 0x3c, 0xbf, 0xf1, 0x4a, 0xf3, 0x4d, 0xe1, + 0x6c, 0xcf, 0xb0, 0xbe, 0xc1, 0x67, 0xf8, 0x6d, + 0xcd, 0xda, 0x1e, 0x32, 0x0b, 0xc0, 0x92, 0x7b, + 0x65, 0xf3, 0x22, 0x1a, 0xb7, 0xbe, 0xaf, 0xeb, + 0xf1, 0x83, 0x84, 0x9c, 0x6e, 0xc6, 0xd8, 0x22, + 0xb0, 0xbb, 0x74, 0x9f, 0xe8, 0x53, 0x50, 0x75, + 0xf4, 0x0a, 0xfc, 0x89, 0x70, 0x0b, 0xc4, 0x4e, + 0x2b, 0x0b, 0xce, 0xbc, 0x31, 0xe7, 0xb6, 0x41, + 0x8c, 0xcb, 0x7d, 0x92, 0x13, 0x01, 0xf0, 0x1f, + 0x2f, 0x54, 0xb3, 0xa8, 0x78, 0xb5, 0x49, 0xb1, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x54, 0x5e, 0x06, 0xb5, 0x8a, 0xf2, 0x75, 0x69, + 0x99, 0x4a, 0x48, 0x31, 0x65, 0x6e, 0xd1, 0x74, + 0x71, 0x15, 0x24, 0x9f, 0x88, 0x74, 0xec, 0x97, + 0x99, 0x29, 0x41, 0x37, 0xea, 0xff, 0x40, 0xf5, + 0xe8, 0x1e, 0x4c, 0x13, 0x4f, 0x30, 0x6c, 0x5a, + 0x3d, 0x45, 0x06, 0x9f, 0xf1, 0x45, 0x7e, 0xd9, + 0xac, 0x30, 0x4b, 0x05, 0x41, 0xf1, 0x40, 0xd4, + 0x32, 0xcb, 0x1d, 0x0b, 0x9a, 0x1d, 0x83, 0xb2, + }, + .sig_len =3D DILITHIUM65_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM65_CRYPTO_BYTES]){ + 0x70, 0x83, 0xff, 0x2b, 0xe7, 0x9f, 0x04, 0x25, + 0xa4, 0xd2, 0xeb, 0x78, 0x1f, 0x60, 0x16, 0xc2, + 0xa5, 0x65, 0x3c, 0x2f, 0x6f, 0x0f, 0xbb, 0x07, + 0x9b, 0xe5, 0x13, 0xe2, 0xaa, 0x3f, 0x7a, 0xa9, + 0xfc, 0xc7, 0x5a, 0x5d, 0xb6, 0x86, 0xd7, 0xdd, + 0xb6, 0x26, 0xac, 0xb3, 0x43, 0x54, 0x35, 0x5d, + 0x8f, 0x3f, 0xd3, 0xc5, 0xf3, 0x2b, 0x7b, 0xc1, + 0xf8, 0x47, 0x67, 0x33, 0x25, 0x59, 0x8d, 0x19, + 0x5e, 0xd8, 0xb1, 0x9f, 0x07, 0x47, 0xc8, 0x48, + 0x88, 0x68, 0x75, 0x2c, 0x58, 0xd2, 0xc0, 0xc9, + 0x4a, 0x5c, 0xc1, 0x4e, 0xa2, 0xa1, 0x2d, 0x1f, + 0x1f, 0xa4, 0x7f, 0x64, 0x73, 0x11, 0xe2, 0xac, + 0xb4, 0xf1, 0x90, 0xcb, 0xbf, 0xac, 0x3c, 0x76, + 0x4d, 0x7f, 0x4c, 0x3a, 0x75, 0x3c, 0xa9, 0x41, + 0xf2, 0xee, 0x5c, 0x38, 0x5c, 0xaa, 0x54, 0x83, + 0x46, 0xb1, 0x42, 0xf5, 0xc0, 0x85, 0xea, 0xcd, + 0x49, 0x81, 0xc1, 0x51, 0x3e, 0x01, 0x03, 0xe3, + 0x33, 0x3f, 0x93, 0xc3, 0x8b, 0xb6, 0x62, 0xe6, + 0x8b, 0x54, 0xc5, 0xee, 0x49, 0x4d, 0x63, 0x52, + 0xa5, 0xd7, 0x51, 0x7a, 0x41, 0x87, 0x71, 0xdc, + 0x87, 0xce, 0xbe, 0x6e, 0xc1, 0xf4, 0xf2, 0x48, + 0x3e, 0x16, 0xab, 0x7c, 0xd8, 0xd6, 0x26, 0x8f, + 0x2a, 0x90, 0x6b, 0x9f, 0x01, 0x0f, 0x2d, 0xdb, + 0x5f, 0x41, 0x18, 0x6d, 0x59, 0x27, 0xa1, 0x3d, + 0xe8, 0x7e, 0x56, 0x82, 0x32, 0x1c, 0x44, 0x2f, + 0x6d, 0x6a, 0x62, 0x5e, 0xbf, 0x4c, 0x72, 0x2d, + 0xaa, 0x03, 0x49, 0xd9, 0xda, 0xcb, 0x21, 0xc0, + 0xa0, 0x95, 0x6f, 0xc9, 0x6c, 0x4f, 0x86, 0x1c, + 0x77, 0x41, 0x0d, 0xd6, 0xd7, 0xac, 0x6e, 0x05, + 0xbc, 0x94, 0x24, 0x6c, 0xd0, 0x91, 0x68, 0xfd, + 0xfc, 0x61, 0x83, 0x46, 0x9c, 0xb0, 0xbb, 0x6a, + 0x6e, 0xc6, 0xf1, 0x71, 0x44, 0xc5, 0x05, 0x87, + 0x99, 0x16, 0x0c, 0xc3, 0xf9, 0x69, 0xc5, 0xb5, + 0x53, 0x60, 0x5c, 0x0c, 0x7e, 0xff, 0x84, 0x1f, + 0xc5, 0xea, 0x15, 0x1d, 0xea, 0xa0, 0xe3, 0x64, + 0x58, 0x81, 0x67, 0xa2, 0x7c, 0x37, 0x17, 0x7d, + 0xaf, 0x75, 0xbb, 0x22, 0x9b, 0x55, 0x7b, 0x34, + 0x83, 0x8d, 0x52, 0xf6, 0xf7, 0x7d, 0x29, 0xc6, + 0x68, 0x71, 0xf3, 0x5c, 0x23, 0x6e, 0x6c, 0x13, + 0xf3, 0x07, 0x52, 0x49, 0x54, 0xde, 0x89, 0x5a, + 0x58, 0x9e, 0xa4, 0x87, 0xd4, 0x9b, 0xb1, 0x5b, + 0x44, 0xc0, 0xc9, 0x7c, 0x33, 0x90, 0x9c, 0x11, + 0x52, 0x67, 0x51, 0xe8, 0x31, 0x99, 0x6d, 0x49, + 0x93, 0xf4, 0xc7, 0x93, 0xca, 0x5b, 0x39, 0x2a, + 0xae, 0x47, 0x94, 0x8a, 0xf5, 0x07, 0xe2, 0x21, + 0x1e, 0xcc, 0xdd, 0x7a, 0x0d, 0xa1, 0x30, 0xda, + 0x9c, 0xb6, 0x2b, 0x8c, 0x2f, 0xe6, 0xa6, 0xea, + 0xe9, 0x11, 0x03, 0x05, 0x1c, 0x17, 0x71, 0xaa, + 0x26, 0x3c, 0x26, 0x7c, 0xce, 0xe1, 0x4c, 0x96, + 0xf7, 0xba, 0xa5, 0x56, 0x17, 0x07, 0x30, 0xca, + 0x8a, 0x24, 0xdd, 0x2c, 0xeb, 0xbf, 0x3f, 0x41, + 0xe5, 0xdf, 0xd5, 0xfe, 0x57, 0x6e, 0xd6, 0x2b, + 0xc5, 0x4a, 0x4e, 0xb3, 0xe2, 0x71, 0xce, 0x76, + 0x8a, 0x6f, 0xdb, 0xe6, 0x04, 0xf6, 0xe1, 0xe1, + 0xaa, 0x5b, 0x22, 0x76, 0xde, 0x77, 0xae, 0x0c, + 0x5d, 0xe0, 0xd1, 0x98, 0xd3, 0xf5, 0xd0, 0x03, + 0x29, 0x53, 0xd3, 0xe6, 0x9a, 0xcd, 0x3e, 0xd3, + 0x4a, 0x7e, 0x82, 0x1b, 0x4f, 0xdf, 0x0c, 0x73, + 0x54, 0xee, 0x4d, 0x1f, 0xb2, 0xef, 0x89, 0xb5, + 0xd8, 0x60, 0xa8, 0x60, 0x23, 0x6d, 0x5c, 0xbe, + 0xf6, 0xa5, 0x39, 0xbb, 0x38, 0xff, 0x29, 0xfe, + 0x6b, 0xed, 0xca, 0xbe, 0xf9, 0x48, 0xef, 0xf0, + 0xb1, 0xb6, 0x3a, 0x38, 0xa3, 0x09, 0x48, 0x6a, + 0xb4, 0x66, 0x25, 0xcc, 0xeb, 0xbd, 0x5e, 0x22, + 0xf5, 0xc8, 0xe5, 0x81, 0xc2, 0xfd, 0x45, 0x2a, + 0x2d, 0x62, 0x0d, 0x6f, 0xcd, 0x18, 0x86, 0x45, + 0xb4, 0x94, 0x96, 0x48, 0xa8, 0x42, 0x14, 0xb7, + 0xc2, 0x3d, 0x21, 0x02, 0xc2, 0xec, 0x53, 0xcb, + 0x76, 0xab, 0x3c, 0x56, 0x55, 0x8c, 0xa6, 0x1f, + 0x6a, 0xf5, 0x61, 0xbf, 0xc2, 0x72, 0x28, 0xb6, + 0xce, 0x38, 0x7c, 0xb4, 0xbe, 0x71, 0x0b, 0x4d, + 0x0a, 0x0e, 0x13, 0x33, 0x2e, 0x97, 0x3a, 0x2b, + 0x9f, 0x7e, 0x92, 0xf6, 0x11, 0x93, 0xf6, 0x30, + 0x1a, 0x9d, 0x2b, 0x89, 0x7c, 0x61, 0x24, 0x7b, + 0x0f, 0xa6, 0xd7, 0x78, 0x59, 0xd3, 0x12, 0xe8, + 0x73, 0x1d, 0xb5, 0x54, 0x89, 0xcf, 0x4b, 0x2c, + 0xe6, 0xa8, 0x10, 0x08, 0xe2, 0x28, 0x93, 0xa0, + 0xa8, 0x7a, 0x16, 0xdc, 0x41, 0x54, 0x49, 0x83, + 0xd9, 0x3e, 0x42, 0xf9, 0x34, 0x00, 0xcd, 0x22, + 0xdb, 0xec, 0x96, 0xa7, 0xbb, 0xd0, 0x6e, 0x17, + 0xa2, 0x1c, 0x00, 0xf5, 0xd8, 0x0d, 0x04, 0xf8, + 0x71, 0x9c, 0x66, 0x26, 0xe9, 0xbc, 0x33, 0xdb, + 0x3f, 0x99, 0xd4, 0x37, 0x9c, 0xfa, 0x98, 0x2b, + 0xc9, 0x34, 0x14, 0xd2, 0x4d, 0x36, 0x27, 0x4a, + 0xf8, 0x05, 0xfb, 0x86, 0xfb, 0xd8, 0x48, 0xf2, + 0x00, 0x55, 0x4c, 0xe0, 0x8c, 0x17, 0xb8, 0xfc, + 0x26, 0x37, 0x82, 0x89, 0x32, 0xcc, 0x5b, 0xf9, + 0xdb, 0x8c, 0xe8, 0x56, 0x64, 0x53, 0x9b, 0xeb, + 0xb2, 0xdd, 0xc0, 0x3f, 0x82, 0x63, 0xaf, 0x75, + 0x51, 0xfc, 0xa2, 0xd8, 0x73, 0x5f, 0xf9, 0x3e, + 0xc3, 0x4a, 0x62, 0x1d, 0x72, 0x45, 0x87, 0xc2, + 0x56, 0x2f, 0x84, 0x80, 0x91, 0x26, 0xcc, 0x3d, + 0xb6, 0x2a, 0x23, 0xd0, 0x44, 0x54, 0xaa, 0x57, + 0x70, 0x2c, 0xe6, 0xa0, 0x52, 0x72, 0x22, 0xad, + 0x72, 0xa1, 0x8c, 0x76, 0x25, 0x94, 0x9e, 0xad, + 0x04, 0x3c, 0x2b, 0x91, 0x04, 0xd7, 0xd7, 0xd2, + 0x52, 0xcb, 0x2b, 0x47, 0x0c, 0x72, 0xa6, 0x76, + 0x60, 0xf2, 0xdf, 0x3a, 0xa5, 0xb5, 0x26, 0x70, + 0xd8, 0x5c, 0xd4, 0xce, 0x8a, 0xd5, 0x20, 0x9d, + 0x88, 0x92, 0xac, 0x88, 0x70, 0x03, 0x3c, 0x75, + 0x65, 0x1c, 0xd6, 0xba, 0x4f, 0x60, 0xa5, 0x43, + 0xa6, 0x56, 0x02, 0x46, 0xe0, 0x62, 0xfe, 0xde, + 0x2d, 0xe1, 0x2c, 0x9a, 0xfc, 0x17, 0xa1, 0x6d, + 0x17, 0xa1, 0x1e, 0xd5, 0x0a, 0x9c, 0xa1, 0x6e, + 0x7d, 0x6d, 0x30, 0x2f, 0x31, 0xcf, 0xe5, 0xd0, + 0x9a, 0xae, 0xc0, 0x8e, 0x95, 0xea, 0xe8, 0xef, + 0xd1, 0x56, 0x1d, 0xe4, 0x7f, 0x93, 0x89, 0xab, + 0x05, 0x29, 0x08, 0xd5, 0x05, 0x67, 0x6a, 0xf3, + 0x7a, 0x81, 0x01, 0x2e, 0xca, 0xe7, 0xc1, 0xd2, + 0xf9, 0x20, 0xcf, 0xcd, 0xb7, 0xc1, 0x83, 0x7d, + 0xdb, 0x12, 0x2b, 0x4a, 0x76, 0xef, 0xd3, 0x40, + 0xa5, 0xb4, 0xca, 0x18, 0xde, 0xbd, 0xb8, 0x4d, + 0xb8, 0x77, 0xb4, 0xb6, 0x06, 0x50, 0xc4, 0x15, + 0x5f, 0x08, 0x5a, 0x19, 0x21, 0xdf, 0x3b, 0xa9, + 0x07, 0xe9, 0x2c, 0xa3, 0x86, 0xfd, 0x94, 0xba, + 0x77, 0x54, 0x65, 0xc1, 0x19, 0x27, 0xcc, 0x51, + 0xa6, 0x27, 0x1b, 0x24, 0x10, 0x44, 0x07, 0x64, + 0xc3, 0xd5, 0xfe, 0x97, 0xcd, 0xa6, 0x78, 0x89, + 0xa4, 0x49, 0xde, 0xa7, 0xaa, 0x2a, 0x9e, 0x38, + 0x3e, 0xfe, 0x15, 0x20, 0x0f, 0x0a, 0x4f, 0x2e, + 0xcb, 0xab, 0xfd, 0xe6, 0x54, 0x6c, 0x77, 0x0a, + 0xad, 0x7a, 0x45, 0x86, 0xf9, 0xb7, 0xfe, 0x7c, + 0xe9, 0x51, 0x9e, 0x9e, 0x2b, 0x05, 0xff, 0x38, + 0xf1, 0x44, 0x3a, 0x20, 0x41, 0xdd, 0xad, 0x9c, + 0x5b, 0x06, 0xfe, 0x33, 0xfe, 0x19, 0x0a, 0x0d, + 0x6a, 0x9c, 0x6f, 0x69, 0xbb, 0x36, 0x82, 0xa7, + 0x8f, 0xe9, 0x57, 0x6b, 0xe6, 0x8a, 0xad, 0xe7, + 0xbb, 0x12, 0xed, 0xd0, 0xc5, 0x29, 0xad, 0xc8, + 0x32, 0xa5, 0x90, 0x21, 0xce, 0x37, 0x26, 0x84, + 0x14, 0xd8, 0xa2, 0x4d, 0x0a, 0xba, 0x16, 0xae, + 0x20, 0x1d, 0xa6, 0x5c, 0x07, 0xcd, 0x05, 0x7b, + 0x83, 0xe8, 0x42, 0xf6, 0xf6, 0x9c, 0x80, 0xa7, + 0xa1, 0x45, 0xd1, 0x09, 0x4c, 0x0b, 0x9e, 0x1e, + 0xf8, 0x3a, 0xe8, 0x62, 0x95, 0x7b, 0xfa, 0x71, + 0x3d, 0x07, 0x95, 0xdc, 0x13, 0x8e, 0xb1, 0x55, + 0xf1, 0xc5, 0x31, 0x2f, 0xf9, 0x60, 0x35, 0x7d, + 0x49, 0xef, 0x24, 0xc1, 0x6c, 0x4b, 0x97, 0xd8, + 0xaf, 0x83, 0x43, 0x99, 0x77, 0x37, 0xf5, 0x01, + 0x22, 0x47, 0xa0, 0x9b, 0xa1, 0x66, 0xc0, 0x92, + 0xc9, 0x83, 0xb2, 0x97, 0xc1, 0xc5, 0xc2, 0x64, + 0x8a, 0x3a, 0xdb, 0x3d, 0x85, 0xdf, 0x79, 0xf4, + 0x29, 0xd0, 0x31, 0x51, 0xc1, 0x3b, 0xde, 0xa8, + 0xad, 0xb7, 0x52, 0x14, 0xbd, 0x1a, 0xe6, 0xae, + 0x2d, 0x1a, 0x60, 0x99, 0x37, 0xd3, 0x02, 0x81, + 0x29, 0x39, 0xd8, 0xf8, 0xf0, 0xab, 0x53, 0x45, + 0x87, 0x41, 0x83, 0x85, 0x29, 0xc1, 0xea, 0xc6, + 0x73, 0x06, 0xe9, 0x67, 0x08, 0xcf, 0x10, 0x2a, + 0xd0, 0xe8, 0x18, 0xd1, 0x13, 0x0e, 0xa7, 0xd2, + 0xcb, 0xd7, 0x15, 0x86, 0x4c, 0x8c, 0x3f, 0x5b, + 0x55, 0x46, 0x02, 0xbc, 0x42, 0xd4, 0x15, 0x01, + 0xdf, 0xbd, 0x62, 0x79, 0xc6, 0x1d, 0x0c, 0xbf, + 0x76, 0x58, 0x86, 0x41, 0x03, 0xb9, 0x5a, 0xf7, + 0xde, 0xa5, 0xcb, 0x46, 0x04, 0x1a, 0x00, 0x52, + 0xc8, 0x6c, 0x7f, 0xbd, 0xb7, 0x2b, 0xfd, 0xda, + 0x9e, 0x98, 0xe0, 0x92, 0x99, 0xbb, 0x4f, 0xf1, + 0x05, 0x49, 0x6c, 0xc4, 0x7d, 0xe6, 0x4b, 0x28, + 0x8c, 0x44, 0x11, 0x31, 0x42, 0x0f, 0xba, 0x13, + 0x1e, 0x5f, 0x12, 0xeb, 0xbf, 0x03, 0x0d, 0x9f, + 0xfe, 0x2e, 0x35, 0x50, 0x54, 0xe5, 0xb9, 0xfb, + 0x1f, 0xa9, 0xf0, 0xd1, 0xc5, 0x16, 0x5c, 0x89, + 0x59, 0x62, 0x34, 0xe1, 0x8c, 0x7b, 0x7c, 0x77, + 0x11, 0x6a, 0x4d, 0x77, 0xf1, 0xcc, 0x61, 0xde, + 0x6b, 0xa0, 0x4b, 0x50, 0x01, 0xcc, 0xba, 0x8a, + 0x6f, 0xc7, 0x6d, 0xdb, 0x04, 0x74, 0x52, 0xe9, + 0xbb, 0x1f, 0xe0, 0xcb, 0x18, 0x62, 0x42, 0xfb, + 0xa5, 0xaf, 0x6f, 0x65, 0x14, 0x01, 0xea, 0x01, + 0x1d, 0xd4, 0xa1, 0x98, 0x44, 0x91, 0x19, 0x9e, + 0xe3, 0x45, 0x1d, 0x95, 0x5b, 0xb1, 0x88, 0xf7, + 0x12, 0xf1, 0xf7, 0xc5, 0x1f, 0x50, 0x19, 0x0b, + 0x29, 0x9b, 0x9e, 0xce, 0x18, 0xd5, 0xdf, 0xa1, + 0x5d, 0xe0, 0x70, 0x8e, 0x82, 0x75, 0xfa, 0x8d, + 0x7d, 0x5f, 0x60, 0x7d, 0xb5, 0xf3, 0xa0, 0xe4, + 0x0c, 0x69, 0xc3, 0x83, 0x5f, 0x49, 0xe4, 0x9f, + 0xde, 0xdb, 0x93, 0x44, 0x43, 0xf7, 0xaa, 0x11, + 0x8c, 0x46, 0xa8, 0x32, 0x1a, 0x93, 0xc9, 0xe6, + 0xb8, 0x4e, 0xe9, 0x5c, 0x93, 0x99, 0xb7, 0x40, + 0xf6, 0x8f, 0x56, 0xbd, 0x3f, 0x33, 0x63, 0x3d, + 0x21, 0x61, 0xec, 0x83, 0xf5, 0xb4, 0x97, 0x74, + 0x63, 0x13, 0x9a, 0x4e, 0x5b, 0xf8, 0x67, 0xd3, + 0x04, 0xca, 0xff, 0x69, 0xfa, 0x9d, 0x43, 0xa8, + 0xb9, 0x3a, 0xda, 0xe1, 0x40, 0x8f, 0x05, 0x57, + 0xc6, 0xc5, 0x78, 0x73, 0xfe, 0xae, 0x93, 0xa9, + 0x65, 0xc0, 0xf3, 0x2b, 0x1e, 0x66, 0x0c, 0x19, + 0x35, 0x78, 0xfa, 0xbc, 0x91, 0xa9, 0xa6, 0xf2, + 0xaf, 0x6b, 0x93, 0xd0, 0x6c, 0xd2, 0xd8, 0x0d, + 0xe6, 0x61, 0x5d, 0x44, 0x9e, 0x94, 0xac, 0x9e, + 0x19, 0xad, 0xfa, 0xe2, 0xc3, 0xa3, 0x46, 0x30, + 0xf2, 0xb8, 0x90, 0xe7, 0x1b, 0xc6, 0x4b, 0xbb, + 0xe6, 0xf3, 0x47, 0x54, 0x4d, 0x4c, 0xe4, 0xbc, + 0xf8, 0x69, 0x90, 0x39, 0xab, 0x03, 0x43, 0xf4, + 0x64, 0x55, 0x9b, 0xec, 0x95, 0x8b, 0x13, 0x03, + 0xdf, 0x58, 0x5e, 0x2c, 0xf8, 0x53, 0xe5, 0x42, + 0x9c, 0x5f, 0x9d, 0x36, 0x4b, 0xad, 0x5f, 0x2c, + 0xc4, 0x2b, 0x07, 0x43, 0xc4, 0xa3, 0x91, 0xf1, + 0xf4, 0xf6, 0x3a, 0xef, 0xe7, 0x0b, 0x43, 0xc5, + 0xc5, 0xef, 0x3f, 0xf7, 0x29, 0xf2, 0x74, 0xae, + 0x47, 0x0c, 0x7f, 0x6a, 0x75, 0x56, 0x48, 0x06, + 0x56, 0x4e, 0x73, 0x14, 0x91, 0xd7, 0x27, 0x2b, + 0x64, 0xe1, 0xd3, 0x68, 0x84, 0x9d, 0x56, 0xc6, + 0xac, 0xa9, 0xf7, 0x8f, 0x2e, 0xa2, 0x12, 0x48, + 0xad, 0x28, 0xa7, 0x1a, 0x58, 0x44, 0xcc, 0x69, + 0xa8, 0x42, 0x32, 0x79, 0xd7, 0x77, 0xee, 0xeb, + 0x97, 0x13, 0x82, 0x4d, 0xac, 0xb0, 0x08, 0x64, + 0x34, 0x59, 0xfa, 0xe8, 0x48, 0x12, 0x11, 0x93, + 0x8d, 0x7d, 0x94, 0x9f, 0x14, 0xd0, 0x06, 0x62, + 0x4b, 0x51, 0x74, 0x5d, 0x7b, 0x1c, 0x70, 0x68, + 0x82, 0xab, 0xf2, 0x41, 0xdc, 0xc9, 0x19, 0x64, + 0x71, 0xa0, 0xcf, 0xd0, 0x16, 0x46, 0x9a, 0x93, + 0x40, 0x87, 0xa3, 0x7e, 0x1a, 0x19, 0x25, 0x6b, + 0xe1, 0x72, 0xd4, 0x4a, 0xf2, 0x8a, 0xdf, 0x96, + 0x9d, 0xfc, 0xb2, 0xe1, 0x53, 0xd1, 0x31, 0x3e, + 0xeb, 0xd0, 0xdf, 0xde, 0x3f, 0xb1, 0xc3, 0x92, + 0xdb, 0xd1, 0x7e, 0x0f, 0x4b, 0xac, 0x09, 0x28, + 0xa4, 0xaf, 0x3c, 0x74, 0x67, 0x19, 0xf0, 0xe5, + 0xe6, 0x44, 0x3e, 0x47, 0x44, 0x51, 0x31, 0x9e, + 0xda, 0x3e, 0x4b, 0xd8, 0xd1, 0xba, 0x93, 0x6f, + 0x62, 0x59, 0xdc, 0x25, 0x35, 0x2c, 0x0c, 0xa6, + 0xca, 0x28, 0x0a, 0xd5, 0x4c, 0x96, 0x72, 0xd9, + 0x89, 0xbd, 0xd1, 0x49, 0x70, 0xe1, 0xc6, 0xe7, + 0x7f, 0xf8, 0x45, 0x39, 0xe3, 0xa5, 0x9d, 0xd2, + 0xae, 0xf7, 0xd6, 0x19, 0x57, 0x17, 0x57, 0x76, + 0x31, 0x29, 0xdf, 0x3b, 0xa9, 0x89, 0x72, 0xb0, + 0x45, 0xea, 0xc9, 0xcf, 0x6d, 0x8e, 0xf7, 0xf1, + 0x94, 0x98, 0x6a, 0x8b, 0xf7, 0x83, 0xe9, 0xa9, + 0xda, 0x34, 0xf1, 0x58, 0x90, 0xe5, 0xaf, 0x98, + 0x42, 0x72, 0xe4, 0x87, 0xff, 0x5d, 0xb6, 0x26, + 0x35, 0x40, 0x3b, 0xe6, 0x8f, 0xc8, 0x43, 0xe2, + 0xe7, 0xf9, 0x35, 0x03, 0x27, 0xdb, 0xfc, 0xc1, + 0x2b, 0x8b, 0xed, 0x3c, 0xaa, 0x1a, 0xb5, 0xc9, + 0x98, 0xea, 0x58, 0x5c, 0x12, 0x27, 0xc8, 0x6d, + 0xc8, 0xea, 0x40, 0x01, 0x5c, 0x28, 0x3e, 0x2d, + 0x4a, 0x98, 0x03, 0x0b, 0xfb, 0xc1, 0x04, 0x0e, + 0x15, 0x55, 0x5d, 0x9c, 0x19, 0x2d, 0x7d, 0x85, + 0x0b, 0x33, 0x22, 0x93, 0x11, 0x07, 0x22, 0x66, + 0x76, 0x3e, 0x49, 0x5d, 0xdf, 0xb7, 0x3e, 0x49, + 0x3a, 0x27, 0x4b, 0xdd, 0x4d, 0x71, 0xe7, 0x75, + 0x69, 0xc4, 0xfc, 0x59, 0x26, 0xdf, 0xa8, 0x59, + 0x9f, 0xff, 0x86, 0xed, 0x25, 0x89, 0x51, 0xae, + 0x42, 0x62, 0x41, 0x08, 0x42, 0x1f, 0x20, 0x0a, + 0x0e, 0x50, 0x56, 0xb5, 0x54, 0xb8, 0xd7, 0x59, + 0xe1, 0x3a, 0x57, 0x63, 0x45, 0x2d, 0xcd, 0x3f, + 0x10, 0xb8, 0xfd, 0xd8, 0xb0, 0xd4, 0xe4, 0x90, + 0x96, 0x9a, 0x5b, 0x8d, 0x1e, 0x6c, 0x6f, 0x7d, + 0x78, 0x2b, 0x13, 0x51, 0xfd, 0xbc, 0x9e, 0xc2, + 0x05, 0x2a, 0x08, 0xa2, 0x4d, 0x5c, 0x81, 0xec, + 0xdd, 0x15, 0xba, 0xa1, 0x27, 0x60, 0xa0, 0x92, + 0x34, 0x6a, 0x33, 0x7c, 0xf2, 0x6f, 0xdc, 0xce, + 0x5d, 0x20, 0x27, 0x32, 0xcd, 0xa2, 0x71, 0x46, + 0xc5, 0x1c, 0x90, 0xd1, 0x56, 0x4b, 0xe7, 0xe8, + 0x3f, 0x08, 0x91, 0x2f, 0x3c, 0x01, 0x9d, 0x15, + 0x50, 0x2c, 0x9b, 0x6e, 0xfb, 0xc5, 0x75, 0x3b, + 0xdc, 0x90, 0x9e, 0xf0, 0x8e, 0x15, 0x3c, 0x33, + 0x0f, 0x52, 0x53, 0x4f, 0x0f, 0xdc, 0x63, 0xc6, + 0xa7, 0x0d, 0x99, 0x76, 0xef, 0x8c, 0x34, 0x13, + 0x3d, 0xdf, 0xc3, 0x5b, 0xea, 0x70, 0x7b, 0x67, + 0x90, 0xed, 0xfb, 0x3c, 0x3d, 0xf9, 0x71, 0x62, + 0xae, 0x45, 0x00, 0xb1, 0x22, 0x45, 0x23, 0xd7, + 0x5e, 0xdf, 0xfb, 0xb3, 0x55, 0x37, 0x5c, 0x40, + 0xda, 0x83, 0xc1, 0x0f, 0x75, 0x39, 0xc3, 0xd0, + 0x9e, 0x49, 0xa7, 0x2b, 0xf5, 0xc1, 0x56, 0xc1, + 0x9a, 0x90, 0x94, 0x81, 0x9b, 0xd6, 0x97, 0x43, + 0x96, 0x5b, 0x37, 0xf5, 0x70, 0x75, 0x82, 0xbc, + 0x55, 0xe6, 0x90, 0xc7, 0x98, 0x93, 0x0f, 0xfb, + 0xde, 0x8c, 0xc8, 0x72, 0x93, 0xb5, 0xdb, 0xc6, + 0xef, 0x34, 0xf9, 0xcd, 0x17, 0x73, 0xc8, 0xb5, + 0xba, 0x75, 0x70, 0xd5, 0x41, 0xb3, 0xac, 0x60, + 0x3f, 0xa5, 0x27, 0xcf, 0x0a, 0x17, 0x6d, 0x8f, + 0xcd, 0xf7, 0x33, 0x29, 0xf6, 0x37, 0xdd, 0x81, + 0x71, 0x75, 0xb2, 0x71, 0x95, 0x28, 0x36, 0x76, + 0x7d, 0xb0, 0xaa, 0x19, 0xa9, 0xfb, 0xb6, 0xd2, + 0xec, 0xf6, 0x13, 0xaf, 0x40, 0x8a, 0x23, 0x89, + 0x2f, 0x8f, 0xe0, 0x83, 0xcd, 0xa7, 0x3d, 0x0a, + 0xeb, 0x64, 0x07, 0xcc, 0x2a, 0x2d, 0xe7, 0x1f, + 0x77, 0x65, 0x3b, 0xf1, 0xb7, 0xfb, 0x31, 0x32, + 0xa3, 0x2b, 0xf5, 0xb2, 0x5c, 0x6b, 0xf7, 0x64, + 0xaa, 0xd5, 0xe7, 0x14, 0x32, 0xbf, 0x3c, 0xec, + 0xe0, 0x63, 0xb4, 0x9c, 0x44, 0xed, 0x4b, 0x96, + 0x03, 0xc0, 0x8c, 0x99, 0x62, 0xcb, 0xe1, 0xd5, + 0xa3, 0x16, 0x5f, 0x95, 0x78, 0x4a, 0x98, 0x19, + 0x4b, 0x4e, 0x74, 0x92, 0x12, 0x41, 0x4f, 0xd0, + 0xf3, 0x4b, 0x24, 0x68, 0xd3, 0xcb, 0xda, 0x35, + 0x61, 0xda, 0x6f, 0xa6, 0x80, 0x93, 0x82, 0xd0, + 0xd3, 0x11, 0x9a, 0xb4, 0xbf, 0xb8, 0x8f, 0x68, + 0x84, 0x7b, 0x27, 0x96, 0xce, 0x7c, 0x11, 0x06, + 0x44, 0x2b, 0x6e, 0x39, 0x37, 0x36, 0x55, 0xe6, + 0x21, 0x44, 0x63, 0xce, 0x80, 0x0f, 0xdc, 0xad, + 0xef, 0xc9, 0x30, 0x05, 0x3a, 0x40, 0x1f, 0x8e, + 0x5b, 0x79, 0x41, 0xcd, 0x6a, 0x57, 0xd0, 0xf2, + 0xee, 0x65, 0xdf, 0xb0, 0xac, 0x89, 0xd9, 0x4b, + 0xe5, 0xf2, 0xce, 0x85, 0xdf, 0x80, 0x7f, 0x9b, + 0x86, 0xd4, 0x00, 0x7a, 0x3e, 0xfa, 0xcd, 0xbd, + 0xe2, 0xcb, 0xa2, 0x5f, 0x1d, 0x04, 0xa2, 0x1e, + 0xf5, 0xc7, 0x07, 0x5b, 0x17, 0xd3, 0xfb, 0xd1, + 0x95, 0x8e, 0xe3, 0x6e, 0xbc, 0xff, 0xd4, 0xe0, + 0x97, 0xd6, 0x8c, 0xab, 0x11, 0x1e, 0x53, 0x16, + 0x40, 0x0a, 0x06, 0x23, 0x50, 0x15, 0x82, 0x87, + 0x19, 0xcf, 0xee, 0x44, 0x5b, 0x3c, 0x60, 0x78, + 0xe7, 0xcd, 0x13, 0xf6, 0x03, 0x9f, 0x23, 0xa0, + 0x74, 0x0b, 0x4c, 0xfe, 0x7f, 0x21, 0xa4, 0x11, + 0xf9, 0x62, 0xeb, 0xe3, 0xe3, 0x5d, 0x5a, 0x7b, + 0x54, 0xc5, 0x10, 0x5c, 0x42, 0x2a, 0x10, 0x7e, + 0x82, 0x3c, 0x9a, 0x8f, 0xa1, 0x75, 0xac, 0x4c, + 0xe7, 0x2b, 0xfc, 0xd7, 0xd0, 0x7b, 0x05, 0x42, + 0xc6, 0xa3, 0x8e, 0x9b, 0x68, 0xfd, 0x45, 0x4e, + 0xec, 0x25, 0x01, 0x0e, 0x45, 0x26, 0x31, 0x5a, + 0x7b, 0x8b, 0xe1, 0x69, 0xd0, 0x80, 0xc9, 0xb8, + 0xd0, 0xc2, 0x6c, 0xb6, 0x76, 0xff, 0x1f, 0xa8, + 0x26, 0xed, 0x51, 0xa6, 0xde, 0x93, 0x18, 0x8c, + 0x21, 0xf1, 0x58, 0x9d, 0x58, 0xfd, 0xaa, 0x95, + 0x98, 0xbd, 0x4c, 0xe6, 0xe8, 0xa6, 0x0a, 0x2d, + 0x9e, 0x0e, 0x1b, 0x58, 0x72, 0xe6, 0xe4, 0xdd, + 0x38, 0x69, 0x8e, 0x87, 0x05, 0x41, 0x40, 0xd6, + 0x63, 0xab, 0xef, 0x52, 0x39, 0x5e, 0x13, 0xc2, + 0x5a, 0x70, 0x27, 0x17, 0xb7, 0x3f, 0x93, 0x85, + 0x0d, 0x7c, 0x20, 0x7c, 0xc3, 0xdb, 0xfe, 0x8e, + 0x33, 0x11, 0x2c, 0x6e, 0x73, 0xb0, 0x6b, 0xfb, + 0xa8, 0x87, 0xaa, 0x1b, 0x07, 0xfd, 0x43, 0x7e, + 0x87, 0xe8, 0xb9, 0xca, 0x44, 0x8c, 0xc2, 0x01, + 0xfa, 0xa6, 0x9a, 0x48, 0x44, 0xd7, 0x60, 0x1c, + 0x62, 0x5b, 0xa0, 0xe9, 0xaf, 0xf5, 0x1f, 0xad, + 0xa7, 0x2d, 0x68, 0xbc, 0xcb, 0x24, 0xa2, 0x5d, + 0x5d, 0x87, 0x0a, 0x9b, 0xae, 0x77, 0x73, 0xf8, + 0x7b, 0x91, 0x31, 0x23, 0x29, 0xd4, 0x1f, 0xb7, + 0xf1, 0xfb, 0x75, 0x84, 0x09, 0xd6, 0xc2, 0x7d, + 0x11, 0x8b, 0x69, 0xae, 0xdc, 0x83, 0xb7, 0xb4, + 0xbd, 0xc3, 0x97, 0x59, 0xac, 0xf5, 0x25, 0x6d, + 0xd1, 0x00, 0x6a, 0xb8, 0xf3, 0xf6, 0x7e, 0x62, + 0x29, 0x56, 0xe3, 0x5b, 0xa2, 0x5b, 0xb1, 0x66, + 0xb6, 0x6f, 0x2f, 0x6c, 0xdc, 0xf2, 0x7d, 0x6a, + 0x96, 0x45, 0x8a, 0x88, 0x0d, 0x47, 0x65, 0xe3, + 0x53, 0xb0, 0x54, 0x3b, 0xa2, 0xd9, 0xe5, 0x4b, + 0x1d, 0xde, 0xf4, 0xac, 0xbf, 0xb5, 0x2f, 0xcc, + 0x68, 0x06, 0x77, 0x14, 0xfb, 0x95, 0x69, 0x65, + 0x77, 0xf4, 0xa6, 0xa0, 0x5c, 0x45, 0x18, 0xc3, + 0x10, 0x74, 0x22, 0x4a, 0xe3, 0x78, 0xce, 0x75, + 0x82, 0xf6, 0x89, 0x85, 0x11, 0x60, 0x8e, 0xa8, + 0x80, 0x39, 0x7b, 0xd2, 0xde, 0xe6, 0x4d, 0x92, + 0xdc, 0xbf, 0x1e, 0x78, 0x58, 0xde, 0xfc, 0xe7, + 0x0f, 0x16, 0x6d, 0xbd, 0xa6, 0x61, 0x98, 0x8b, + 0x2b, 0xd3, 0xeb, 0xa7, 0x5a, 0xb6, 0x94, 0x8b, + 0xdf, 0xf8, 0x65, 0x4f, 0x4d, 0xd2, 0x43, 0xdb, + 0x16, 0x44, 0x08, 0xc7, 0x58, 0xca, 0x50, 0xdd, + 0x0d, 0xe3, 0xc6, 0x96, 0x8c, 0x02, 0xb5, 0xcc, + 0x0c, 0x5b, 0x28, 0x95, 0x03, 0x00, 0x13, 0xa7, + 0x9a, 0x65, 0xad, 0xdd, 0x11, 0x18, 0x99, 0x2f, + 0xd4, 0x45, 0x38, 0x4e, 0x37, 0x82, 0x29, 0x70, + 0x6a, 0x3b, 0xaf, 0x9a, 0x89, 0x66, 0x79, 0x57, + 0xfe, 0x73, 0x71, 0x56, 0x92, 0xc9, 0x76, 0x02, + 0x63, 0x1e, 0xa8, 0x24, 0x1a, 0xeb, 0x9e, 0xac, + 0x0a, 0xd8, 0x86, 0x5c, 0x75, 0xb1, 0x05, 0x9c, + 0xd3, 0x4f, 0x4b, 0x90, 0x76, 0xb3, 0xf1, 0x91, + 0x76, 0xb4, 0x77, 0xee, 0x4c, 0x10, 0x49, 0x20, + 0xc8, 0x9f, 0x80, 0xd0, 0xbd, 0x78, 0xa8, 0xc9, + 0x92, 0x6c, 0x66, 0x77, 0x1a, 0xe2, 0x62, 0x0c, + 0x71, 0x32, 0xd9, 0xf9, 0x83, 0x8b, 0x3c, 0xbd, + 0x22, 0xb6, 0xf9, 0xe8, 0x72, 0xf4, 0xab, 0x17, + 0x50, 0x92, 0xf2, 0xf6, 0x8c, 0x6c, 0x09, 0x03, + 0x68, 0xfc, 0x6a, 0x31, 0x9f, 0x62, 0xeb, 0x4b, + 0xb5, 0x4a, 0xfa, 0xd9, 0xe3, 0x9e, 0xfb, 0x90, + 0xa4, 0x52, 0xe4, 0x43, 0xb3, 0x2d, 0x82, 0x66, + 0x85, 0x45, 0x00, 0x51, 0x3f, 0x36, 0x08, 0x37, + 0x1e, 0x72, 0xa1, 0xf3, 0x1c, 0x86, 0xdf, 0xd9, + 0x49, 0x64, 0xa3, 0xf4, 0x46, 0x86, 0xae, 0x62, + 0x3a, 0x26, 0x7b, 0x22, 0xfb, 0xef, 0x06, 0xb5, + 0x2d, 0x86, 0xc6, 0xd4, 0x71, 0x76, 0x8c, 0xfd, + 0xf8, 0x9f, 0x2d, 0xe2, 0xf5, 0x1c, 0x01, 0x98, + 0xd9, 0xfb, 0xbd, 0xd1, 0xd6, 0x28, 0xc9, 0xe8, + 0x7c, 0x2c, 0x19, 0xfa, 0x7e, 0x68, 0x0d, 0x92, + 0x84, 0x0f, 0xb2, 0xca, 0xbb, 0x44, 0x9c, 0xf2, + 0xd6, 0x6f, 0xa8, 0x00, 0xe9, 0xac, 0x54, 0x93, + 0x59, 0x17, 0x48, 0x35, 0xba, 0xfb, 0x13, 0x1b, + 0x78, 0x47, 0x08, 0x9b, 0x22, 0x66, 0xbf, 0x6a, + 0xef, 0xfb, 0xd5, 0xe9, 0x59, 0xe6, 0x41, 0xd9, + 0x62, 0x3b, 0xfa, 0x48, 0x1a, 0x18, 0xf7, 0x20, + 0x64, 0x34, 0xbc, 0xa6, 0x60, 0x2b, 0xbf, 0xad, + 0x84, 0x8c, 0x9c, 0x79, 0xb7, 0x99, 0xc4, 0xd0, + 0xf7, 0xe7, 0x30, 0x86, 0xe7, 0xc7, 0x41, 0xcb, + 0x25, 0x47, 0x47, 0x5a, 0x94, 0x3d, 0x6d, 0x18, + 0x72, 0xdb, 0xdd, 0x0f, 0x07, 0xd3, 0x4c, 0x3e, + 0x30, 0x36, 0xa8, 0x81, 0x02, 0xe0, 0x55, 0xc2, + 0xbc, 0x06, 0xc9, 0x78, 0x82, 0xd4, 0xc8, 0x99, + 0x77, 0x0b, 0x5d, 0xd4, 0x6c, 0x56, 0x08, 0x1c, + 0x80, 0x5d, 0x80, 0x30, 0x7b, 0x82, 0xa1, 0x38, + 0xf8, 0x96, 0xdf, 0xc2, 0xd9, 0xe8, 0x76, 0xc6, + 0xa9, 0x62, 0xa8, 0x7e, 0xc2, 0x5a, 0x03, 0x66, + 0xc0, 0x22, 0x20, 0x81, 0xd9, 0xec, 0x62, 0x1d, + 0x06, 0x58, 0x88, 0x23, 0xfb, 0x84, 0x32, 0x99, + 0x1e, 0x2d, 0xd2, 0xe2, 0xed, 0x4f, 0x85, 0xbb, + 0x36, 0xfc, 0x98, 0x34, 0xa7, 0x44, 0x30, 0x29, + 0x53, 0xbe, 0x24, 0x40, 0x87, 0xc9, 0xd5, 0xbf, + 0x1a, 0xe4, 0x35, 0x19, 0x66, 0x70, 0x3b, 0xc6, + 0x3c, 0x2a, 0x12, 0x11, 0xbf, 0xa3, 0x59, 0x58, + 0x07, 0x1a, 0xdc, 0x94, 0x04, 0xf2, 0xbc, 0xd7, + 0xf4, 0xeb, 0x07, 0xbb, 0x1a, 0x64, 0x76, 0xd4, + 0xa1, 0x4a, 0xbe, 0xca, 0xbf, 0x7d, 0xba, 0xa4, + 0x16, 0x24, 0xf3, 0xc2, 0x66, 0xa2, 0x03, 0xc9, + 0x59, 0xaa, 0xd1, 0x5b, 0xa7, 0xd5, 0x52, 0x7b, + 0x50, 0x72, 0x97, 0xa7, 0x74, 0x0c, 0xc6, 0xde, + 0xe5, 0x7c, 0xc6, 0x48, 0x2d, 0x68, 0x26, 0x38, + 0x2d, 0x08, 0x3c, 0xf5, 0x1d, 0xcb, 0x45, 0x06, + 0x5b, 0xaa, 0xe0, 0x87, 0x0c, 0x45, 0xd3, 0x5a, + 0xe4, 0xab, 0x22, 0xa4, 0xe5, 0x38, 0xda, 0xbf, + 0x89, 0x4b, 0x39, 0xa0, 0x65, 0xe1, 0x7f, 0xcb, + 0x82, 0xd1, 0xb8, 0xe4, 0x66, 0xdf, 0xeb, 0x8c, + 0xbb, 0xa5, 0x2a, 0x4d, 0x85, 0x3a, 0xef, 0xab, + 0x66, 0x13, 0x55, 0xa9, 0x9b, 0x2f, 0xb6, 0x7e, + 0x03, 0x3e, 0x45, 0x63, 0xda, 0x25, 0x39, 0x3f, + 0x8a, 0x8d, 0x9a, 0xd6, 0x01, 0x64, 0x7f, 0x93, + 0x9c, 0xa3, 0xb6, 0x06, 0x18, 0x3b, 0x43, 0x5b, + 0x76, 0x7b, 0xb8, 0xb9, 0xf4, 0x38, 0x3d, 0x3e, + 0x4e, 0x51, 0x66, 0x9a, 0xb3, 0xc3, 0x05, 0xa2, + 0xbc, 0xca, 0xce, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0x0c, 0x13, 0x1d, 0x26, 0x2c, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa65", + .pk_len =3D DILITHIUM65_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM65_PUBLICKEYBYTES]){ + 0xba, 0x4a, 0xf9, 0x35, 0xb4, 0x45, 0x33, 0x86, + 0xd2, 0xb6, 0xc1, 0x3a, 0x55, 0x85, 0xc1, 0xff, + 0xca, 0xe0, 0x0e, 0x26, 0x01, 0x6b, 0x1d, 0x88, + 0x7d, 0x67, 0x6c, 0xa8, 0xac, 0x6d, 0x90, 0xdb, + 0x60, 0xf2, 0x21, 0xe8, 0x24, 0x95, 0x8c, 0x0d, + 0x16, 0x41, 0x46, 0x59, 0x08, 0x24, 0xbe, 0x15, + 0x50, 0x63, 0xf6, 0xe2, 0x2a, 0x36, 0xf4, 0x55, + 0x2e, 0xb0, 0xab, 0x5b, 0xe0, 0xc0, 0x82, 0x98, + 0xe3, 0x2f, 0x40, 0x99, 0x4e, 0x8f, 0x1c, 0x08, + 0x0c, 0xfc, 0x6b, 0x32, 0xbb, 0x5a, 0x28, 0xd1, + 0xdd, 0xab, 0xc4, 0xf5, 0x04, 0x01, 0x68, 0x26, + 0x02, 0xb9, 0x76, 0x87, 0x32, 0xed, 0xfc, 0x4c, + 0x5e, 0x4c, 0xa0, 0x87, 0x87, 0xdb, 0x58, 0x95, + 0x11, 0x5c, 0x38, 0x42, 0x17, 0xed, 0x16, 0xe2, + 0xaf, 0x4e, 0x91, 0x4c, 0x3e, 0xe0, 0x57, 0x24, + 0x60, 0x19, 0x67, 0x39, 0xb9, 0x45, 0x2e, 0x9e, + 0x20, 0xeb, 0x66, 0x0b, 0xd9, 0xd3, 0x70, 0x82, + 0x1f, 0xf9, 0xff, 0xe1, 0x5e, 0x1b, 0x83, 0x4d, + 0x12, 0x3e, 0xe8, 0xdc, 0x33, 0xec, 0x11, 0x3e, + 0x2b, 0x37, 0x4f, 0xaf, 0x2a, 0x3d, 0x18, 0x63, + 0x14, 0x8a, 0x8e, 0xfd, 0xd4, 0x75, 0x0a, 0x12, + 0xb3, 0x02, 0x3f, 0x64, 0x36, 0xfa, 0x4e, 0x9a, + 0xed, 0x95, 0x37, 0x3c, 0x0d, 0x21, 0x7c, 0xd3, + 0x90, 0x44, 0xc9, 0xfb, 0x19, 0x19, 0x98, 0xd8, + 0x5a, 0xe0, 0x74, 0xad, 0x0e, 0xa6, 0xda, 0x2f, + 0x09, 0xba, 0xe2, 0x77, 0x54, 0xa8, 0xbc, 0xe8, + 0x13, 0xb2, 0xc3, 0x46, 0x45, 0x9b, 0xc3, 0x08, + 0x73, 0xf1, 0x53, 0x82, 0xfd, 0x81, 0xca, 0x3e, + 0xe2, 0x09, 0xa1, 0x73, 0x27, 0x94, 0xd5, 0x76, + 0xf2, 0xe8, 0x09, 0x0d, 0xaf, 0xe5, 0x4c, 0xa9, + 0xa3, 0x13, 0x9a, 0xe6, 0xd2, 0x04, 0x87, 0x3d, + 0x5e, 0x34, 0x65, 0xbf, 0xdc, 0x4b, 0x4b, 0xf5, + 0xab, 0x28, 0x44, 0x28, 0x76, 0x4a, 0xe4, 0xd2, + 0x71, 0x03, 0xd3, 0xc2, 0x97, 0x29, 0x19, 0xcf, + 0xfd, 0x16, 0xad, 0x52, 0x07, 0x50, 0x65, 0x07, + 0xc6, 0x7e, 0x69, 0x0d, 0xec, 0x26, 0x81, 0x13, + 0xbf, 0x7c, 0x5e, 0x8a, 0xf0, 0xee, 0xbd, 0x97, + 0xe5, 0xce, 0x3d, 0x17, 0x9f, 0x38, 0xcf, 0x30, + 0xe2, 0xf9, 0xd9, 0xc5, 0x1f, 0xf5, 0x20, 0x81, + 0x79, 0x10, 0x9b, 0xee, 0x8f, 0xed, 0x0c, 0x9b, + 0x96, 0x87, 0x89, 0x4d, 0xc5, 0x01, 0x19, 0x38, + 0x11, 0x11, 0x36, 0x71, 0x0f, 0x9f, 0x0f, 0xfb, + 0x9b, 0x1e, 0xf1, 0x26, 0x3b, 0x10, 0x43, 0xe9, + 0x4f, 0x14, 0xef, 0xef, 0x34, 0xfc, 0x59, 0xfe, + 0x82, 0x9e, 0xaa, 0x31, 0x6d, 0x0b, 0xae, 0xb6, + 0x9e, 0xef, 0xe2, 0xcc, 0x19, 0x27, 0xf0, 0xe9, + 0xf5, 0xab, 0x03, 0xeb, 0x1f, 0xef, 0x42, 0x75, + 0x5d, 0xf2, 0x9f, 0x7f, 0xdd, 0xf8, 0x07, 0x45, + 0x27, 0x8b, 0x6e, 0xb8, 0x25, 0x86, 0xc7, 0xe8, + 0x4e, 0x1e, 0x60, 0x08, 0xf9, 0x90, 0x9e, 0xf2, + 0xad, 0xca, 0xdf, 0x56, 0x4f, 0xf6, 0x0a, 0xc3, + 0x53, 0x2c, 0xf9, 0x2c, 0xdd, 0xd6, 0xf2, 0x9d, + 0x6d, 0x33, 0x61, 0x2e, 0xb0, 0x3f, 0x16, 0xa0, + 0x18, 0x8e, 0xcb, 0x33, 0x32, 0x0f, 0x51, 0x6d, + 0xfe, 0x8a, 0x07, 0x0d, 0x06, 0x42, 0x66, 0x6d, + 0x67, 0x36, 0xb7, 0x8c, 0x26, 0x27, 0x90, 0xd8, + 0xe8, 0xd9, 0xc1, 0x97, 0x0f, 0xe3, 0x73, 0x0d, + 0xa8, 0x47, 0xa8, 0xea, 0x46, 0x8e, 0x52, 0x12, + 0x2a, 0x67, 0xeb, 0x90, 0xb7, 0x78, 0x47, 0x0c, + 0x78, 0x22, 0xed, 0xe0, 0xac, 0xdd, 0x9b, 0x2b, + 0xf1, 0x4c, 0x7d, 0xfb, 0x7f, 0x33, 0xc9, 0xcd, + 0x73, 0x6d, 0x65, 0x7a, 0xe9, 0xf8, 0xdc, 0xd0, + 0x09, 0x49, 0x1d, 0x03, 0xed, 0x24, 0xa4, 0xdd, + 0x0f, 0x68, 0xff, 0x08, 0xe8, 0x01, 0x43, 0xf9, + 0x42, 0x59, 0x21, 0xf0, 0x21, 0xc5, 0x1b, 0xc4, + 0x84, 0x8b, 0x5f, 0x6c, 0x31, 0xe7, 0x44, 0x92, + 0x42, 0xe0, 0xc5, 0x4c, 0x01, 0x05, 0x87, 0xb8, + 0xda, 0xad, 0x57, 0xb8, 0xb8, 0x55, 0xf5, 0x44, + 0xac, 0xea, 0xd3, 0xd1, 0x46, 0xe2, 0x89, 0xe2, + 0x7c, 0x16, 0x25, 0x9a, 0xca, 0x9a, 0xdb, 0x10, + 0xf1, 0x73, 0x6e, 0xef, 0xca, 0x71, 0x86, 0xeb, + 0xe3, 0xd6, 0x95, 0xc0, 0xc0, 0x9b, 0xb5, 0x47, + 0x12, 0x75, 0x27, 0x7c, 0x65, 0xfe, 0x5d, 0x62, + 0xaa, 0x55, 0x47, 0x8a, 0x9b, 0xbf, 0x18, 0xcb, + 0x52, 0x57, 0x5e, 0x2c, 0xda, 0xd1, 0x49, 0x1f, + 0x8f, 0x75, 0x6a, 0x38, 0x75, 0x7a, 0x82, 0x41, + 0x46, 0x1c, 0xd4, 0xf3, 0xdb, 0xf8, 0x4a, 0x0c, + 0x55, 0x21, 0x87, 0xfc, 0xf4, 0x71, 0x0a, 0x3d, + 0x07, 0xea, 0x79, 0x18, 0x89, 0xdd, 0x97, 0x9f, + 0x52, 0x30, 0x78, 0xb0, 0x54, 0x7f, 0xfc, 0x6c, + 0x8c, 0x4f, 0xc9, 0xbd, 0x22, 0x00, 0xef, 0xd8, + 0x27, 0x26, 0xb3, 0x5f, 0x60, 0x14, 0xad, 0x69, + 0x46, 0x84, 0xdc, 0x38, 0xbd, 0xfb, 0x4e, 0x46, + 0xec, 0xa6, 0x90, 0x25, 0xe5, 0x31, 0xff, 0xd5, + 0xce, 0x74, 0x1f, 0xca, 0xae, 0x4b, 0x5a, 0x2f, + 0x53, 0x13, 0xd7, 0x6f, 0x32, 0x25, 0x57, 0xb1, + 0x88, 0x0b, 0x9c, 0xad, 0x54, 0x00, 0xcd, 0x2c, + 0xec, 0x5d, 0x46, 0x4c, 0xbc, 0x93, 0x5b, 0xb1, + 0xde, 0xf3, 0x05, 0x96, 0x60, 0x4a, 0xd1, 0xa9, + 0x52, 0xd5, 0xfd, 0x0a, 0xd0, 0x84, 0x06, 0x91, + 0x00, 0xf9, 0xf4, 0x47, 0x1c, 0xc8, 0x46, 0x99, + 0xcb, 0x25, 0x23, 0x64, 0x9c, 0xa2, 0x79, 0xe3, + 0x04, 0xe9, 0x90, 0x83, 0xb6, 0xe6, 0x3f, 0xac, + 0x1a, 0x46, 0xa3, 0x9b, 0x07, 0xeb, 0xbd, 0xf8, + 0x3d, 0xc0, 0xd1, 0x2c, 0x35, 0x29, 0x58, 0xf9, + 0x24, 0x49, 0xef, 0xff, 0x33, 0x84, 0x21, 0xb0, + 0x71, 0x67, 0x4a, 0xb8, 0xa6, 0x81, 0x9f, 0xe8, + 0x1a, 0x27, 0xf6, 0x8e, 0xfa, 0xda, 0xda, 0x0a, + 0xdf, 0xd8, 0x96, 0x9e, 0xd2, 0x09, 0x82, 0x09, + 0x5b, 0x39, 0xcd, 0x92, 0x24, 0xf8, 0xea, 0x60, + 0x7c, 0x84, 0x51, 0x62, 0x00, 0xc1, 0xc9, 0x29, + 0x75, 0xa5, 0x53, 0x5c, 0x19, 0xe1, 0xdd, 0x21, + 0xd8, 0x9a, 0xa5, 0x42, 0x85, 0xd6, 0x03, 0x92, + 0x13, 0x68, 0x09, 0x11, 0xae, 0x60, 0xb4, 0x61, + 0xf5, 0xf0, 0x72, 0xc6, 0xb8, 0x02, 0x1e, 0xb6, + 0xa1, 0xd5, 0x52, 0xfa, 0xde, 0xf9, 0x41, 0xc3, + 0x45, 0xb9, 0xe1, 0x1b, 0xa8, 0xb9, 0xff, 0xff, + 0x05, 0x38, 0xef, 0x61, 0x97, 0x87, 0x18, 0x4f, + 0x65, 0x77, 0xef, 0x70, 0xfe, 0x14, 0x21, 0xd6, + 0x1a, 0x39, 0x92, 0xbf, 0x66, 0xfa, 0xb8, 0xf4, + 0x3d, 0xba, 0x86, 0x92, 0x13, 0xfe, 0x43, 0x4f, + 0x92, 0xc0, 0x3d, 0x17, 0x47, 0x19, 0xe6, 0xfc, + 0xa0, 0x6e, 0x6b, 0x6a, 0xb3, 0x44, 0x03, 0x3b, + 0x43, 0xe3, 0x4c, 0x9a, 0x0f, 0xb9, 0xbe, 0x71, + 0xc4, 0x87, 0x0c, 0xdb, 0xa3, 0x87, 0xf6, 0x33, + 0x35, 0x12, 0xa1, 0x78, 0xda, 0x9b, 0x46, 0x9f, + 0x1b, 0x3a, 0x61, 0x49, 0x60, 0xab, 0x72, 0x88, + 0x43, 0x82, 0xe5, 0x2d, 0xc9, 0xa9, 0x13, 0xb2, + 0xd6, 0x01, 0xf1, 0xa9, 0xd3, 0x33, 0xca, 0xcd, + 0x03, 0x1b, 0x2c, 0x8b, 0x42, 0xb7, 0x4d, 0xba, + 0x6c, 0x03, 0xc9, 0x64, 0x8f, 0xe0, 0xd0, 0x4f, + 0xa4, 0x0c, 0xad, 0x8a, 0x49, 0x45, 0x95, 0x9d, + 0xcb, 0x50, 0x30, 0x82, 0x01, 0x9c, 0xf2, 0x71, + 0xfd, 0xf3, 0x71, 0xfb, 0xe6, 0xa2, 0x2e, 0xd2, + 0xe4, 0x69, 0x2e, 0x66, 0x48, 0x86, 0xd1, 0x49, + 0xf7, 0xa8, 0x31, 0x61, 0xa7, 0xe0, 0xfd, 0x09, + 0xa8, 0x04, 0x6c, 0x2f, 0xdf, 0xdd, 0x15, 0x21, + 0xd9, 0x4f, 0xaa, 0x7e, 0x29, 0xd8, 0x54, 0x6b, + 0xf1, 0x12, 0x96, 0x52, 0x73, 0x23, 0xbd, 0x63, + 0xaa, 0xb0, 0xb5, 0x6c, 0x6b, 0x21, 0x00, 0xa0, + 0xc8, 0x13, 0xd4, 0xe1, 0xab, 0x0b, 0xf9, 0x79, + 0xe8, 0x53, 0x2b, 0x1f, 0x57, 0xc4, 0x4d, 0x7d, + 0x85, 0x30, 0xb4, 0x6a, 0x04, 0x2b, 0x56, 0x21, + 0xd5, 0xd1, 0x3d, 0x86, 0xf0, 0x53, 0xbe, 0x89, + 0x00, 0xdc, 0x84, 0x3e, 0x4b, 0x65, 0xb2, 0x30, + 0x24, 0xa3, 0x57, 0x42, 0x77, 0x33, 0x5d, 0xc7, + 0x8c, 0xa7, 0x89, 0xf2, 0xa8, 0x2c, 0x0c, 0xf5, + 0x15, 0xd4, 0xe6, 0x89, 0x69, 0x9b, 0xb0, 0x9b, + 0x72, 0xd7, 0x1c, 0xc0, 0xaf, 0x35, 0x31, 0x0d, + 0xee, 0x92, 0x7b, 0x90, 0x32, 0x3a, 0x93, 0x0a, + 0xd1, 0x73, 0x39, 0x37, 0x4f, 0xd0, 0x7d, 0x9f, + 0x40, 0x2e, 0x86, 0xff, 0xb5, 0xf6, 0x02, 0x32, + 0x39, 0x0a, 0x1f, 0x1a, 0x4e, 0xcc, 0xf2, 0xae, + 0x74, 0x46, 0x76, 0xc7, 0xef, 0xff, 0xf2, 0xf7, + 0x05, 0x30, 0xc4, 0xa6, 0x84, 0x0f, 0x8d, 0x4b, + 0xfd, 0x63, 0x84, 0x82, 0x3f, 0xdb, 0x2f, 0x9c, + 0x58, 0x81, 0xc5, 0x5c, 0x92, 0x5a, 0x3d, 0x6b, + 0xf1, 0x26, 0xc6, 0xc4, 0xaa, 0x10, 0x99, 0x63, + 0xe5, 0x66, 0xf7, 0x14, 0xfc, 0xed, 0x51, 0xce, + 0x0e, 0x59, 0x83, 0xd6, 0xc7, 0x9a, 0xe4, 0xeb, + 0x8a, 0x5e, 0x84, 0xd1, 0x51, 0xd9, 0xc4, 0x34, + 0xe7, 0x21, 0x68, 0x34, 0x04, 0xb4, 0x9b, 0x4f, + 0x8b, 0xa6, 0xd6, 0x19, 0x83, 0x68, 0xd4, 0x12, + 0xac, 0xf9, 0xad, 0xb2, 0x4f, 0x42, 0x7d, 0xe2, + 0x57, 0x00, 0x94, 0xf8, 0xdb, 0xeb, 0xe9, 0xcb, + 0xb2, 0x24, 0x61, 0x28, 0x99, 0x80, 0x06, 0x50, + 0x20, 0x87, 0xd9, 0x71, 0xc6, 0xcb, 0x11, 0x8c, + 0x3f, 0x41, 0xdb, 0x17, 0xa6, 0xd0, 0x3c, 0x42, + 0xbe, 0x31, 0x83, 0xe8, 0x3e, 0x09, 0x1d, 0xb3, + 0x42, 0x51, 0xcf, 0x8e, 0x13, 0xc0, 0xed, 0x0f, + 0x73, 0x13, 0x3c, 0x19, 0x99, 0xd7, 0xe4, 0x61, + 0x13, 0x23, 0x8f, 0x77, 0x20, 0xcc, 0x4b, 0xf1, + 0x0c, 0xc2, 0xc6, 0xef, 0xad, 0x1f, 0x29, 0xa6, + 0x34, 0x73, 0xc5, 0x12, 0x5a, 0x7c, 0x6b, 0x2f, + 0x69, 0x4d, 0xb5, 0x75, 0xf6, 0x67, 0xb5, 0x06, + 0x2c, 0xed, 0x32, 0xd1, 0x78, 0xd4, 0x9a, 0xdb, + 0x47, 0x40, 0xe7, 0xa9, 0x8b, 0xd6, 0x8a, 0xd2, + 0xf1, 0x70, 0xe3, 0xa8, 0xe1, 0x66, 0xa0, 0xe7, + 0x18, 0x65, 0x5f, 0xe7, 0x0c, 0xf9, 0xd7, 0x90, + 0x28, 0xf0, 0x5e, 0x9c, 0x80, 0x69, 0xac, 0x2b, + 0x65, 0x09, 0xe6, 0xde, 0x32, 0xf1, 0x5e, 0xa3, + 0x6d, 0xb0, 0x49, 0xe0, 0x45, 0xcf, 0xaa, 0xd2, + 0x06, 0x6b, 0x97, 0x5c, 0xb7, 0xb3, 0x40, 0x3c, + 0xb8, 0x86, 0x5f, 0x21, 0x82, 0xf4, 0x01, 0x24, + 0x11, 0xa9, 0x35, 0x37, 0x09, 0x66, 0xa6, 0x1f, + 0x85, 0xc5, 0x7a, 0xb9, 0xf9, 0xfe, 0x1c, 0x47, + 0x47, 0xfe, 0xa2, 0x9b, 0x65, 0xd4, 0x68, 0xe3, + 0x32, 0x23, 0x84, 0x2c, 0x17, 0x8e, 0x24, 0x2e, + 0x1e, 0xd3, 0xbb, 0xd1, 0x3a, 0x8b, 0xe8, 0x08, + 0xf0, 0x0c, 0x78, 0xdc, 0x51, 0xf0, 0x6a, 0xdd, + 0xa4, 0xf9, 0x89, 0x07, 0x06, 0xf5, 0x10, 0xd2, + 0x6b, 0x4a, 0xfd, 0x38, 0xb0, 0x72, 0xe4, 0xb1, + 0xd2, 0x92, 0x96, 0xe6, 0xc9, 0xae, 0xab, 0xee, + 0x5d, 0x64, 0xa0, 0x60, 0xf5, 0x48, 0x0a, 0xab, + 0x59, 0x68, 0xc7, 0x3c, 0x0c, 0x56, 0xad, 0x6d, + 0xc3, 0x2c, 0xed, 0xcf, 0x5d, 0xbd, 0xd7, 0xf3, + 0x7d, 0x8d, 0x6a, 0x8d, 0x28, 0xbc, 0x4f, 0x0c, + 0xab, 0x06, 0xc6, 0x32, 0xe6, 0x8a, 0xba, 0xa8, + 0xba, 0x2a, 0x5d, 0xc7, 0xbf, 0xc8, 0xf5, 0x69, + 0x7b, 0x37, 0x38, 0xe8, 0x4d, 0xf6, 0xb8, 0xe3, + 0x94, 0x84, 0xba, 0x76, 0x3a, 0x2c, 0xa4, 0x06, + 0xdd, 0xbd, 0xbc, 0x2b, 0x26, 0x8f, 0x92, 0x7a, + 0x7e, 0xa4, 0x3a, 0xb1, 0xf6, 0x5f, 0x38, 0x85, + 0xd3, 0xf6, 0x95, 0x6d, 0xb9, 0x1d, 0xe8, 0x5f, + 0xda, 0x22, 0x22, 0xcc, 0x1f, 0x5e, 0x79, 0xd9, + 0xab, 0x03, 0x5c, 0xb9, 0x16, 0xcd, 0x3c, 0x16, + 0xcd, 0x2e, 0x49, 0xe3, 0x94, 0x58, 0x05, 0x2c, + 0xd7, 0x6c, 0x10, 0xd6, 0x40, 0x4f, 0xa4, 0x7c, + 0xec, 0xac, 0x2b, 0xb2, 0xef, 0x39, 0x2e, 0x6b, + 0x01, 0x6d, 0x13, 0x07, 0x46, 0x31, 0xe6, 0xf7, + 0x33, 0xdd, 0x5b, 0x58, 0x62, 0x84, 0xc2, 0xdf, + 0xf0, 0x83, 0xcb, 0xa3, 0x87, 0xdb, 0x31, 0x70, + 0x48, 0x8c, 0xd0, 0xcf, 0xa8, 0x94, 0x21, 0x6a, + 0xe6, 0xb9, 0x18, 0xdb, 0x3a, 0x44, 0x79, 0x92, + 0x6d, 0xec, 0x25, 0xa9, 0xde, 0x32, 0xa2, 0x70, + 0x0a, 0x65, 0x96, 0x35, 0x7f, 0xde, 0xe5, 0xc4, + 0x80, 0xb8, 0x78, 0x4b, 0x95, 0xff, 0xf6, 0xe7, + 0x2f, 0x44, 0x52, 0x49, 0x98, 0x1c, 0x8a, 0xe2, + 0x76, 0x62, 0x28, 0x96, 0x87, 0xde, 0xce, 0xef, + 0x43, 0xf8, 0x04, 0x2f, 0xdf, 0x4a, 0x04, 0xfd, + 0xb3, 0x83, 0xcd, 0xd4, 0x60, 0xa8, 0xcc, 0x94, + 0x0d, 0x30, 0xe7, 0x79, 0xfd, 0x93, 0xe0, 0x1e, + 0xc9, 0xd6, 0x34, 0x3a, 0x1f, 0x52, 0x50, 0x14, + 0xc9, 0x97, 0xc0, 0xad, 0x78, 0xa2, 0x47, 0xcc, + 0x7c, 0xb2, 0xb6, 0x17, 0xee, 0x37, 0xcc, 0x9a, + 0x14, 0xc2, 0x27, 0xf8, 0xf9, 0x28, 0x5e, 0xfb, + 0x44, 0xf7, 0xe0, 0x75, 0x19, 0xb7, 0x0f, 0x96, + 0xb2, 0xef, 0x51, 0xac, 0x2e, 0x50, 0xbb, 0x93, + 0x44, 0x69, 0xcc, 0x1c, 0xa5, 0xc5, 0xa2, 0x39, + 0xa3, 0x00, 0x5e, 0x72, 0x20, 0x77, 0x1d, 0x6c, + 0x46, 0x41, 0xe6, 0x89, 0x70, 0x2d, 0xfd, 0x4c, + 0xe5, 0xc4, 0xce, 0xbf, 0x94, 0x01, 0xbd, 0x34, + 0xd2, 0x9d, 0xea, 0xe7, 0x75, 0xcf, 0x3b, 0x0a, + 0xf2, 0x58, 0x7b, 0x6a, 0x16, 0xef, 0x98, 0xae, + 0x52, 0x57, 0xd5, 0x4a, 0x4d, 0xc1, 0xb3, 0xb9, + 0x17, 0x96, 0x1d, 0xa8, 0xe0, 0x91, 0x07, 0xea, + 0x50, 0xc1, 0x00, 0x0a, 0xa0, 0xa5, 0x5e, 0x45, + 0x5a, 0xe4, 0xa8, 0x96, 0xc7, 0x8a, 0x70, 0xea, + 0x88, 0x8d, 0x25, 0xef, 0xec, 0xd8, 0x88, 0x81, + 0xa7, 0xa3, 0xbc, 0x5a, 0x4f, 0xc1, 0x7a, 0x91, + 0x41, 0x8c, 0x01, 0xdf, 0x30, 0xda, 0x29, 0x5d, + 0xdb, 0x46, 0xe3, 0x23, 0x61, 0x61, 0x91, 0x76, + 0x42, 0xce, 0xb7, 0xdb, 0xe1, 0xb3, 0x9b, 0xbc, + 0x74, 0x05, 0x03, 0x07, 0x97, 0xaf, 0x27, 0x3a, + 0x82, 0x2a, 0xcc, 0x8d, 0x01, 0xae, 0x79, 0x0b, + 0x8c, 0xdc, 0x24, 0x81, 0x3c, 0xe1, 0xbf, 0xc3, + 0x89, 0xad, 0x6d, 0x8f, 0x22, 0xd6, 0x11, 0x77, + 0xc4, 0xf7, 0x2f, 0x51, 0xe0, 0x00, 0x5c, 0x80, + 0x76, 0x97, 0x0c, 0xd9, 0xd4, 0x98, 0xd6, 0x34, + 0x42, 0x9c, 0xd6, 0x48, 0x62, 0x05, 0x81, 0x10, + 0x86, 0x6e, 0xd5, 0x84, 0x29, 0x87, 0xf0, 0x43, + 0x09, 0x13, 0x0f, 0x81, 0x1b, 0x60, 0xfc, 0xac, + 0x99, 0x90, 0xea, 0xa1, 0x54, 0x84, 0x3b, 0x4e, + 0xa6, 0xe4, 0xf6, 0xf9, 0xa6, 0x7d, 0x7c, 0xfe, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x16, 0x02, 0xe1, 0xd5, 0xb2, 0x06, 0x9b, 0x7c, + 0x7c, 0x48, 0xd3, 0x12, 0x2a, 0xc3, 0xa0, 0x1f, + 0x88, 0xef, 0xfa, 0x08, 0x15, 0x37, 0xcd, 0x04, + 0x1d, 0x13, 0x67, 0x03, 0x94, 0xa5, 0x78, 0x2c, + 0xfb, 0xb6, 0xd6, 0x62, 0x59, 0x47, 0x1c, 0x7a, + 0xba, 0xf2, 0x88, 0x3c, 0x45, 0x93, 0xa8, 0x8d, + 0x3d, 0x8d, 0x4b, 0x09, 0x6d, 0x66, 0x9a, 0x6a, + 0xee, 0xec, 0x6e, 0x31, 0x42, 0xff, 0xcf, 0x38, + }, + .sig_len =3D DILITHIUM65_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM65_CRYPTO_BYTES]){ + 0x3d, 0x5e, 0x39, 0x2c, 0xd1, 0x70, 0x40, 0x56, + 0x81, 0x94, 0x18, 0xae, 0x2d, 0xc8, 0x5e, 0x56, + 0x69, 0x3b, 0x55, 0xcd, 0x09, 0xf2, 0x8f, 0xf6, + 0xdc, 0xff, 0x95, 0xd2, 0x9c, 0xff, 0x3a, 0xd8, + 0xcc, 0x3e, 0x2f, 0x77, 0x25, 0xb8, 0xd1, 0x50, + 0xc3, 0x96, 0x5b, 0x78, 0xb3, 0x25, 0x7c, 0x53, + 0x58, 0xb9, 0x3a, 0x56, 0x4b, 0xeb, 0x31, 0x7c, + 0x8f, 0xd4, 0xc8, 0xd2, 0x9e, 0xe7, 0xe5, 0x0d, + 0x33, 0xff, 0xf2, 0xb8, 0x78, 0xf0, 0x6c, 0xa4, + 0xb4, 0xec, 0xe9, 0xc8, 0x93, 0xcd, 0xc0, 0xde, + 0x85, 0xcf, 0x2d, 0x07, 0xdd, 0xee, 0xd7, 0xff, + 0x23, 0xb7, 0x13, 0x96, 0x63, 0xbf, 0x18, 0xce, + 0x84, 0x4f, 0x68, 0x88, 0xc0, 0x65, 0x97, 0x1e, + 0x6e, 0x95, 0xff, 0xbe, 0xed, 0xaa, 0x93, 0xa3, + 0x8e, 0xd0, 0x14, 0xbc, 0x6f, 0x11, 0x66, 0x69, + 0x75, 0x90, 0x4f, 0x81, 0xbf, 0xa2, 0x64, 0x39, + 0x78, 0x56, 0x9a, 0xa9, 0x92, 0xe6, 0x56, 0x2a, + 0xa1, 0x15, 0xf9, 0xdc, 0xc9, 0x0d, 0xf5, 0x7a, + 0x70, 0x82, 0x2c, 0x9d, 0xde, 0x73, 0x2e, 0x0c, + 0xc9, 0x2a, 0x41, 0x64, 0xee, 0x4c, 0xe7, 0xb8, + 0xc6, 0x76, 0xab, 0xb0, 0xab, 0xec, 0x11, 0x7f, + 0x19, 0xdf, 0x49, 0x6e, 0x7e, 0x35, 0x47, 0x3f, + 0x16, 0x08, 0x75, 0x30, 0x18, 0x1f, 0x55, 0x96, + 0x46, 0xb7, 0x31, 0x54, 0xa8, 0x8f, 0xa8, 0x61, + 0xc4, 0x45, 0xec, 0x54, 0x09, 0xe1, 0x52, 0xf7, + 0x71, 0x29, 0x11, 0xb8, 0xea, 0x81, 0xd9, 0x55, + 0x03, 0xea, 0x73, 0x4a, 0x3b, 0x55, 0x23, 0x0e, + 0x65, 0x85, 0xed, 0x8f, 0x76, 0xda, 0x73, 0x50, + 0x69, 0x44, 0xa4, 0xae, 0x0c, 0x6c, 0x4e, 0x3a, + 0x70, 0x7b, 0x8c, 0xee, 0xef, 0x6c, 0x9a, 0x6b, + 0xca, 0x96, 0x4e, 0x77, 0x8a, 0x02, 0xa0, 0x28, + 0x6c, 0xab, 0x4b, 0xe1, 0x5e, 0x88, 0x4b, 0x47, + 0x9a, 0x9b, 0x8c, 0x93, 0xa9, 0x78, 0x38, 0xff, + 0x42, 0x36, 0xe8, 0xd9, 0xcc, 0x9f, 0xf4, 0x34, + 0xa7, 0xb4, 0x2d, 0xe0, 0x2c, 0xd6, 0x2a, 0xf8, + 0x48, 0xe8, 0xbb, 0x0b, 0x82, 0xa7, 0xb8, 0xc2, + 0x51, 0xdc, 0x29, 0x3c, 0x76, 0x16, 0x81, 0xdd, + 0xfa, 0x15, 0x7c, 0xc3, 0xd5, 0xd2, 0x8f, 0xde, + 0xcd, 0x40, 0x14, 0x65, 0x21, 0x79, 0x9c, 0x71, + 0x81, 0xf6, 0x37, 0x2b, 0x75, 0xf7, 0x33, 0xb4, + 0x98, 0xe9, 0x02, 0xa7, 0xb5, 0xd7, 0xa4, 0xbe, + 0xeb, 0x98, 0xbb, 0x5a, 0x37, 0x69, 0x5e, 0xb6, + 0x11, 0x5c, 0xef, 0xef, 0xf8, 0x2e, 0xb0, 0x1d, + 0x3f, 0xc6, 0x4a, 0xe6, 0x1a, 0x9a, 0xcd, 0xe9, + 0x89, 0x93, 0x3f, 0xbd, 0x89, 0xeb, 0x7f, 0xbb, + 0x9a, 0x8d, 0x8e, 0xd6, 0x5a, 0xe9, 0x45, 0xfd, + 0xf1, 0x20, 0x56, 0x5c, 0x60, 0x89, 0x60, 0x79, + 0xaa, 0x96, 0x70, 0xa6, 0xf8, 0xf3, 0xd5, 0x79, + 0xf4, 0x3d, 0xfb, 0xe0, 0xa3, 0x3b, 0x17, 0x14, + 0xf7, 0xe8, 0x21, 0x20, 0x02, 0xf3, 0x9d, 0x09, + 0x5b, 0xc3, 0xb4, 0xe8, 0x47, 0x6e, 0xab, 0xc9, + 0xd1, 0x8c, 0xba, 0x58, 0x45, 0x2a, 0x38, 0x9b, + 0xdb, 0xb9, 0xf7, 0x67, 0x9d, 0x44, 0x5b, 0x95, + 0xdd, 0x13, 0x1a, 0x27, 0x1b, 0xf7, 0xfb, 0x6b, + 0xb7, 0x53, 0x44, 0x23, 0x06, 0x69, 0x55, 0x05, + 0x82, 0xd2, 0xcf, 0x04, 0xe2, 0x85, 0x3d, 0x5c, + 0xdf, 0xfd, 0xcb, 0xa3, 0x74, 0x51, 0x1a, 0x93, + 0xc2, 0x64, 0x22, 0xae, 0x7c, 0x85, 0x09, 0xca, + 0xb2, 0xe2, 0x9f, 0xaf, 0xde, 0x69, 0xc8, 0x44, + 0xdf, 0x78, 0x49, 0x01, 0x3d, 0xbf, 0x99, 0x29, + 0x81, 0x31, 0x54, 0x03, 0x99, 0x2f, 0x14, 0x75, + 0x02, 0x8a, 0x77, 0x71, 0x3d, 0xb7, 0x6c, 0x12, + 0x26, 0x08, 0x9a, 0x59, 0x59, 0xc0, 0x77, 0xd0, + 0xc1, 0x63, 0xb9, 0x41, 0xf8, 0x90, 0x02, 0xdb, + 0x0e, 0x00, 0xa9, 0xa7, 0xfd, 0xa7, 0x31, 0x2e, + 0x14, 0xee, 0xd8, 0x69, 0x0a, 0x60, 0x01, 0xca, + 0x11, 0x91, 0x1a, 0xd1, 0x40, 0x03, 0x2f, 0x43, + 0xaf, 0x09, 0xe7, 0x65, 0x47, 0x6e, 0x14, 0xff, + 0x36, 0xdc, 0x1d, 0xd8, 0xaf, 0x5e, 0xff, 0x47, + 0x4f, 0x2c, 0x81, 0x7c, 0xa5, 0x1e, 0x3a, 0x31, + 0xce, 0xea, 0x2b, 0x5a, 0x42, 0x06, 0x0b, 0x3c, + 0xc1, 0x12, 0x0e, 0x14, 0xcc, 0xc7, 0x45, 0xe5, + 0x44, 0x96, 0x41, 0x23, 0x1e, 0x31, 0xa1, 0xd3, + 0xfc, 0x54, 0x47, 0x3a, 0xa6, 0xbe, 0x7b, 0x00, + 0x23, 0x28, 0x32, 0x7d, 0x76, 0xfb, 0x98, 0xad, + 0xbc, 0x96, 0x57, 0xdf, 0xfe, 0x28, 0xdd, 0x16, + 0x95, 0xd2, 0x8f, 0x1f, 0x74, 0x02, 0x05, 0xd2, + 0x9f, 0x83, 0xf0, 0xf4, 0xc1, 0xd6, 0x31, 0x3d, + 0x03, 0xe6, 0xec, 0xc7, 0x53, 0xba, 0x21, 0x18, + 0x88, 0x61, 0x00, 0x98, 0x74, 0x25, 0xde, 0x75, + 0xc1, 0xd9, 0xf7, 0x36, 0xa2, 0xbd, 0x1d, 0xe3, + 0xe2, 0x0b, 0xb1, 0xf6, 0xeb, 0xea, 0x03, 0x5c, + 0xfd, 0x98, 0x97, 0xdd, 0x7e, 0x9f, 0xcf, 0x8f, + 0x76, 0x37, 0xc1, 0x1f, 0xbd, 0x69, 0x77, 0x9c, + 0xd9, 0xa9, 0xc6, 0xf1, 0x25, 0xbe, 0x85, 0xde, + 0x3c, 0x08, 0xda, 0x88, 0xeb, 0xcd, 0xcb, 0x91, + 0xb1, 0x83, 0x79, 0xa8, 0x9b, 0x1f, 0xd8, 0x5d, + 0x06, 0xee, 0x16, 0x63, 0xc4, 0x4c, 0xdb, 0xc3, + 0x9c, 0x49, 0x9e, 0xb8, 0x90, 0x4f, 0x0c, 0x59, + 0x34, 0xe0, 0x6d, 0x8d, 0x91, 0x24, 0x9b, 0x7d, + 0xa3, 0xa4, 0xb9, 0xa5, 0xc9, 0x77, 0x0b, 0x9c, + 0x6e, 0xfa, 0x76, 0x43, 0x8b, 0x41, 0x88, 0x6d, + 0x5e, 0x74, 0x64, 0x6c, 0xd8, 0x4e, 0xe0, 0x78, + 0x9d, 0x52, 0x85, 0xd7, 0x8a, 0x90, 0xec, 0xe8, + 0x55, 0x54, 0x8e, 0x99, 0xc0, 0xa3, 0xad, 0x31, + 0x26, 0x9a, 0x29, 0x2a, 0xef, 0xf2, 0xac, 0x9e, + 0x84, 0xd8, 0x9d, 0xcf, 0x9e, 0x36, 0xd0, 0x3d, + 0xcd, 0x69, 0x1f, 0x49, 0x91, 0xc3, 0xea, 0xd5, + 0xd4, 0xde, 0x70, 0x67, 0xe9, 0x92, 0x90, 0xd3, + 0x41, 0x76, 0xc2, 0xf6, 0x78, 0xcf, 0x3d, 0x9c, + 0xac, 0xdf, 0x47, 0xd3, 0x80, 0x4f, 0x03, 0xa4, + 0x04, 0x70, 0x9a, 0xd8, 0x96, 0xc2, 0x28, 0xd9, + 0x4b, 0xe4, 0xc6, 0x2b, 0x91, 0x1b, 0x96, 0xe8, + 0x29, 0x87, 0xcc, 0x82, 0x2e, 0xbb, 0xb0, 0xd6, + 0x3a, 0xc0, 0xa8, 0xbc, 0xf8, 0x28, 0x75, 0x1f, + 0xf8, 0x99, 0x12, 0xb5, 0x85, 0xa0, 0x15, 0x6c, + 0x89, 0x24, 0x97, 0xec, 0x8d, 0x4f, 0xcc, 0x95, + 0x8a, 0x81, 0x9c, 0xb8, 0x3d, 0x15, 0x16, 0x7b, + 0x3c, 0x30, 0x9a, 0xba, 0x00, 0xfa, 0x37, 0x8c, + 0x6c, 0x89, 0x07, 0x6c, 0x68, 0x67, 0xea, 0x7e, + 0xa3, 0x66, 0x82, 0x96, 0x92, 0x63, 0x92, 0x3a, + 0x50, 0xc7, 0xe2, 0xb0, 0xd5, 0x76, 0xda, 0xa3, + 0xa0, 0xa3, 0x28, 0x35, 0x68, 0x11, 0xe9, 0xcb, + 0xdd, 0xa2, 0xbe, 0x56, 0x83, 0xa1, 0x90, 0x17, + 0x6d, 0x16, 0x0f, 0x67, 0xfa, 0xd8, 0xef, 0x69, + 0x97, 0xdc, 0xbd, 0xaa, 0x66, 0xcd, 0x8e, 0x4b, + 0x8d, 0x5e, 0x7c, 0xb2, 0x13, 0x22, 0x09, 0xce, + 0x93, 0x7e, 0x01, 0xa1, 0x2b, 0x0c, 0x94, 0x68, + 0x1e, 0xa4, 0x64, 0x8f, 0x8f, 0x75, 0x9b, 0xa6, + 0x0f, 0x6e, 0x52, 0x09, 0x3b, 0x56, 0x97, 0x25, + 0x2c, 0x94, 0x0c, 0xc2, 0xdb, 0x37, 0x0e, 0x9b, + 0xac, 0x57, 0x49, 0x36, 0xd5, 0x13, 0x18, 0xd9, + 0xf4, 0x76, 0xf6, 0x2b, 0xaf, 0x07, 0xd0, 0x0d, + 0x94, 0xc9, 0xf9, 0x0c, 0xd5, 0x7f, 0x76, 0xe1, + 0x88, 0xc6, 0xce, 0xdb, 0x98, 0x2b, 0x18, 0xa8, + 0x42, 0x8f, 0x74, 0x9e, 0x51, 0x00, 0xf8, 0x06, + 0x06, 0x2d, 0xcc, 0x89, 0xb4, 0xec, 0x53, 0xba, + 0xee, 0x4b, 0x42, 0x8d, 0x6f, 0x7c, 0xca, 0x35, + 0xb9, 0x53, 0xc0, 0x65, 0xb0, 0x86, 0x97, 0xbd, + 0xf6, 0x33, 0x54, 0x16, 0xfb, 0x92, 0x61, 0x60, + 0xf0, 0xfd, 0x90, 0x13, 0xa6, 0xb8, 0x94, 0x35, + 0x6a, 0xd7, 0x0b, 0xe4, 0x37, 0x1e, 0x12, 0x44, + 0x1b, 0xb3, 0xda, 0x65, 0x08, 0x1c, 0x22, 0x3a, + 0x0e, 0x72, 0x7e, 0xec, 0x57, 0x4d, 0x8d, 0x1f, + 0x7d, 0xb8, 0xf8, 0x37, 0x67, 0x93, 0xc2, 0x9a, + 0xac, 0x17, 0xd3, 0xfe, 0x10, 0x7c, 0xe9, 0xcb, + 0x3e, 0x79, 0xba, 0x0e, 0x61, 0xe7, 0x6b, 0xb2, + 0x97, 0x6f, 0xe1, 0x37, 0x8c, 0x45, 0x50, 0xd7, + 0x0f, 0x26, 0x5c, 0xee, 0xa4, 0xf3, 0x90, 0xe2, + 0x72, 0xf6, 0x4b, 0x5e, 0x6c, 0x44, 0x90, 0x2b, + 0xbd, 0x7e, 0x25, 0xaf, 0xfc, 0xc4, 0xe7, 0xb4, + 0x25, 0xac, 0x68, 0x01, 0x72, 0x38, 0x31, 0xfe, + 0x02, 0x29, 0xaf, 0x90, 0x68, 0x2f, 0xbf, 0xe8, + 0xc4, 0x81, 0x77, 0xc2, 0xe0, 0xd3, 0xe9, 0x5b, + 0xb8, 0x21, 0xbf, 0xb2, 0xe5, 0x4f, 0x14, 0xcd, + 0x93, 0xee, 0x0e, 0x8a, 0x24, 0x9e, 0x95, 0x01, + 0x5b, 0x76, 0xc7, 0x9f, 0x04, 0xdb, 0x6e, 0x00, + 0xbe, 0x5a, 0xe0, 0x77, 0xde, 0xa5, 0xe4, 0x16, + 0xec, 0xbb, 0xc7, 0xd7, 0xd2, 0xd4, 0x65, 0xc2, + 0xc1, 0xa3, 0x36, 0x7e, 0x8a, 0x40, 0xb8, 0x7f, + 0xb3, 0x5c, 0x17, 0x2e, 0xcd, 0xeb, 0xf8, 0x8b, + 0x0c, 0x01, 0xf8, 0x3d, 0x33, 0x6b, 0x81, 0x9e, + 0x19, 0x89, 0x22, 0x41, 0x88, 0x32, 0x1a, 0xa7, + 0x14, 0xbc, 0x4a, 0x45, 0xca, 0x06, 0x9c, 0xe4, + 0x72, 0x64, 0x74, 0xcc, 0x29, 0xeb, 0x06, 0x1e, + 0xe2, 0x74, 0x82, 0xd5, 0xc6, 0x3c, 0x11, 0xe1, + 0xa6, 0x91, 0x78, 0xe4, 0xef, 0xd1, 0xd3, 0xc0, + 0xbf, 0xdc, 0x08, 0xa8, 0xdb, 0x45, 0xb6, 0x8e, + 0x32, 0x69, 0x37, 0xbc, 0x26, 0xdf, 0xb0, 0x57, + 0xa5, 0x11, 0xa7, 0x06, 0x5b, 0x4c, 0xe0, 0xda, + 0x62, 0x8b, 0xe0, 0x29, 0x16, 0x4e, 0x69, 0x80, + 0xe5, 0x40, 0x15, 0xb6, 0xda, 0xcd, 0xf4, 0xcc, + 0x40, 0xd5, 0x8d, 0x4d, 0x18, 0x33, 0x67, 0xd9, + 0xf8, 0xc5, 0x5d, 0x7a, 0xae, 0xb1, 0xe3, 0xa4, + 0x3d, 0x46, 0x7d, 0x53, 0xf1, 0xb9, 0x3b, 0x0e, + 0xa2, 0xa8, 0x89, 0x14, 0x82, 0x3f, 0x3a, 0x8d, + 0xda, 0x95, 0xfd, 0x96, 0x5b, 0x4a, 0xa5, 0xab, + 0x48, 0xa9, 0x27, 0x19, 0xb6, 0x67, 0xdd, 0xcd, + 0x04, 0xb1, 0x88, 0xb6, 0x41, 0xba, 0x85, 0xa2, + 0x8e, 0x30, 0x4c, 0x71, 0x07, 0xf6, 0x72, 0x58, + 0x4c, 0x7f, 0x98, 0xfa, 0xd7, 0x02, 0xb8, 0xe8, + 0x10, 0xaf, 0xca, 0xc4, 0xc7, 0x77, 0x50, 0x70, + 0xf3, 0xc6, 0x76, 0xae, 0xc3, 0xc1, 0xa4, 0x67, + 0xd2, 0xef, 0xd4, 0x99, 0xc5, 0xf5, 0x0a, 0x99, + 0x1b, 0x01, 0xd6, 0xa2, 0xb9, 0xb4, 0x82, 0x33, + 0x97, 0x00, 0x68, 0xf9, 0x66, 0xa5, 0x83, 0xd9, + 0x57, 0x1f, 0x1a, 0xdd, 0xc3, 0x00, 0x32, 0xd4, + 0x2c, 0xbe, 0x85, 0x5d, 0xbf, 0x37, 0xef, 0x7b, + 0xe1, 0x44, 0x27, 0xa3, 0xa2, 0x67, 0x86, 0xed, + 0x17, 0x2a, 0xc1, 0x06, 0x9a, 0x99, 0x97, 0xfb, + 0x12, 0x6f, 0xe0, 0x62, 0x70, 0xe5, 0x7c, 0x8c, + 0xc8, 0x1d, 0x30, 0x94, 0xbc, 0x94, 0xef, 0x19, + 0x6b, 0x07, 0xb4, 0x6a, 0xe3, 0x24, 0x56, 0x0b, + 0x6f, 0xbb, 0x4f, 0x8f, 0xb8, 0x22, 0x9e, 0xaf, + 0xef, 0x0d, 0x3c, 0x40, 0x31, 0xfa, 0xc2, 0x60, + 0xfa, 0x9e, 0xea, 0xef, 0x61, 0x88, 0x4c, 0x0c, + 0xba, 0xcb, 0xa8, 0x90, 0x6d, 0xd5, 0xef, 0x95, + 0xaa, 0x4d, 0x85, 0x64, 0x1a, 0x64, 0xac, 0x91, + 0x58, 0x08, 0xee, 0x37, 0xce, 0x3c, 0x4a, 0xe7, + 0x25, 0x54, 0x57, 0xa5, 0x59, 0xab, 0xdf, 0x24, + 0x9f, 0x89, 0x15, 0x1d, 0x9c, 0xce, 0x7b, 0xe7, + 0xb6, 0xc9, 0xc7, 0x4b, 0xfc, 0x5c, 0x25, 0xa2, + 0xba, 0x2e, 0x3e, 0x19, 0x82, 0x20, 0x57, 0x52, + 0xa0, 0x3f, 0x93, 0xce, 0x20, 0x85, 0xf0, 0x4e, + 0x0d, 0x4b, 0x53, 0xb7, 0x6b, 0x66, 0x1a, 0xae, + 0x45, 0x47, 0xdf, 0xbc, 0x39, 0x83, 0x8a, 0xe4, + 0xdb, 0x97, 0x72, 0xcb, 0x83, 0xbf, 0x8e, 0x47, + 0x55, 0xbf, 0x1a, 0x5b, 0x66, 0xe4, 0x76, 0xc7, + 0xb4, 0xf1, 0xc6, 0x3e, 0x84, 0x5d, 0x74, 0x6d, + 0x7b, 0xab, 0x80, 0x89, 0xda, 0x8d, 0x4a, 0x1e, + 0x5c, 0x31, 0xc2, 0x26, 0xce, 0x69, 0x29, 0xc3, + 0x87, 0xe1, 0x3b, 0x1c, 0x42, 0xff, 0xef, 0x8c, + 0x4d, 0x5c, 0x52, 0xac, 0x6e, 0x60, 0x49, 0xb6, + 0xe1, 0x09, 0x12, 0xa7, 0xd0, 0x19, 0x0c, 0x5d, + 0x8b, 0xf2, 0xfe, 0x3b, 0x40, 0xf2, 0xaa, 0x4b, + 0x71, 0xc0, 0xf4, 0xe3, 0x7e, 0x83, 0xf9, 0xfb, + 0x00, 0x23, 0x33, 0x84, 0x0c, 0x88, 0x52, 0x30, + 0x3b, 0x29, 0x6d, 0x95, 0x86, 0xf5, 0x67, 0xfe, + 0x84, 0x26, 0x56, 0x57, 0x50, 0x7f, 0x1a, 0x8b, + 0x53, 0xfa, 0xf6, 0x64, 0xa2, 0x57, 0xc2, 0x69, + 0xa2, 0x18, 0xd1, 0xc1, 0xab, 0xfc, 0xb9, 0x8e, + 0x21, 0x20, 0x0b, 0x4d, 0xff, 0xf7, 0x28, 0x0b, + 0xf8, 0xd5, 0x7d, 0xe7, 0xbf, 0x15, 0x0e, 0x58, + 0x2b, 0xdd, 0xe0, 0xec, 0x9f, 0x25, 0x02, 0xf7, + 0x43, 0x69, 0x66, 0x79, 0x0b, 0x89, 0xcb, 0x72, + 0x03, 0x48, 0xdf, 0xe2, 0xcc, 0x93, 0x47, 0x5f, + 0x61, 0x34, 0x41, 0xcb, 0x23, 0x88, 0xca, 0xcb, + 0xc3, 0x72, 0xe3, 0x28, 0xdf, 0x73, 0x63, 0x06, + 0x1c, 0x82, 0x7d, 0x5b, 0x8b, 0x63, 0x09, 0x11, + 0x03, 0x59, 0xc6, 0xac, 0x18, 0x8a, 0xa1, 0x66, + 0x2d, 0x26, 0xd9, 0x95, 0x3f, 0x7d, 0x82, 0x59, + 0xdf, 0x36, 0xb5, 0x8d, 0x5e, 0x59, 0xec, 0x9a, + 0xee, 0x25, 0x8d, 0x3e, 0x3c, 0x62, 0x6f, 0xc8, + 0x0a, 0x19, 0x4c, 0xa7, 0x1b, 0xf8, 0xcd, 0x08, + 0x7e, 0xf1, 0xf2, 0xf1, 0x76, 0x15, 0x4c, 0xf8, + 0x1e, 0xb6, 0x58, 0xac, 0xe7, 0x86, 0xd2, 0xac, + 0x36, 0x38, 0xb0, 0x60, 0x08, 0x8a, 0x4a, 0x42, + 0xcc, 0xf8, 0x03, 0x0a, 0xf6, 0xa9, 0xa9, 0x38, + 0x63, 0xb9, 0x68, 0x69, 0xd3, 0x21, 0x6c, 0x19, + 0x00, 0x93, 0x46, 0xd5, 0x6e, 0x4b, 0x5c, 0x69, + 0xa9, 0x74, 0xf3, 0xb8, 0xec, 0x14, 0x29, 0x8c, + 0x25, 0x2d, 0xf2, 0x2f, 0x2a, 0x1c, 0xcc, 0x57, + 0x76, 0x74, 0x8e, 0x6a, 0xcf, 0x93, 0x62, 0x93, + 0x24, 0x03, 0x24, 0x09, 0xa3, 0xa5, 0x1a, 0x95, + 0x99, 0xe5, 0x52, 0x82, 0x1d, 0x22, 0x65, 0x30, + 0x47, 0x27, 0x0e, 0xf9, 0xe4, 0xce, 0xb8, 0xad, + 0x34, 0x61, 0x21, 0x77, 0xf5, 0x17, 0xcb, 0x70, + 0xa9, 0x72, 0x22, 0x49, 0x16, 0x4c, 0xb4, 0x35, + 0x76, 0x97, 0x99, 0x66, 0xff, 0x2e, 0x81, 0x46, + 0xbe, 0x56, 0xad, 0x70, 0xf2, 0x9a, 0x44, 0xe8, + 0x3a, 0x2d, 0x6c, 0xbb, 0x89, 0x28, 0x76, 0x49, + 0x25, 0xf6, 0x49, 0x8b, 0x67, 0xe7, 0xb4, 0xed, + 0x28, 0x21, 0x0c, 0xb0, 0xe9, 0x23, 0xc6, 0xd1, + 0x29, 0x5c, 0xe4, 0xc4, 0x97, 0xc6, 0x04, 0xc3, + 0xd8, 0x6c, 0xb6, 0x73, 0x13, 0x20, 0x0c, 0x98, + 0xde, 0x28, 0xe0, 0x74, 0x75, 0x58, 0xff, 0x67, + 0xe8, 0x6d, 0x03, 0x41, 0xb4, 0xe3, 0xda, 0xe4, + 0xc7, 0x54, 0x66, 0x8c, 0x02, 0x8c, 0x10, 0xbe, + 0x6c, 0xac, 0x92, 0xe9, 0x73, 0x57, 0x89, 0xc6, + 0x8d, 0xa0, 0x61, 0xe3, 0x5c, 0x30, 0x92, 0xa8, + 0xc3, 0xf7, 0xb3, 0xf2, 0x86, 0xd3, 0xae, 0x5d, + 0x91, 0xba, 0x06, 0x51, 0x54, 0xd9, 0x83, 0xf5, + 0xd9, 0x9b, 0xd9, 0x8b, 0x73, 0xbf, 0x9a, 0x94, + 0x45, 0x39, 0xc4, 0x3a, 0x35, 0xea, 0xf9, 0x25, + 0x7d, 0x6a, 0xee, 0x78, 0xa7, 0x50, 0x50, 0x1d, + 0x7e, 0xaf, 0x09, 0xf1, 0x86, 0xae, 0x93, 0x69, + 0xd5, 0x41, 0x1e, 0x87, 0xc3, 0x41, 0xb8, 0xc5, + 0x4f, 0x2d, 0x90, 0x4f, 0xa8, 0xe6, 0xbc, 0xc6, + 0xbf, 0x59, 0x32, 0x97, 0xc7, 0x30, 0x2d, 0xea, + 0xdd, 0x25, 0x5a, 0x1e, 0x38, 0x93, 0x58, 0x12, + 0x2f, 0x98, 0x31, 0x30, 0xa8, 0xfa, 0x35, 0x61, + 0x11, 0x63, 0x4c, 0xf8, 0x72, 0x3f, 0xaf, 0xd5, + 0xa7, 0xf3, 0x92, 0x35, 0xb5, 0x17, 0x15, 0x3d, + 0x78, 0x4a, 0x47, 0xf7, 0xfa, 0xa2, 0xff, 0x36, + 0x61, 0x5b, 0x18, 0x77, 0xf0, 0xd5, 0x76, 0xee, + 0x2b, 0x8a, 0x18, 0xe3, 0x54, 0xb3, 0x1f, 0x29, + 0x0e, 0xa7, 0x3d, 0x75, 0x5b, 0x2b, 0x68, 0x13, + 0x89, 0xb3, 0xc7, 0x42, 0x13, 0x3d, 0x72, 0x6c, + 0xb5, 0xc9, 0x0b, 0xea, 0xbe, 0xc2, 0x0e, 0x44, + 0xcd, 0x22, 0x63, 0x01, 0xd0, 0x1c, 0x93, 0x82, + 0x3f, 0x7b, 0xa9, 0x72, 0xd5, 0x90, 0xe6, 0xac, + 0x9c, 0x3d, 0x56, 0x3a, 0x8d, 0x0e, 0xd6, 0x8e, + 0x8e, 0x52, 0xd0, 0x81, 0x15, 0xca, 0xf2, 0x09, + 0xc0, 0xfe, 0x94, 0x1d, 0x22, 0x55, 0x11, 0xb5, + 0x2c, 0x48, 0x22, 0xa2, 0x60, 0xf2, 0xc2, 0xa2, + 0x0b, 0x0c, 0x4b, 0xac, 0xbf, 0x40, 0x6e, 0xfd, + 0x97, 0x10, 0xcb, 0x04, 0x3b, 0xc4, 0x5f, 0x7c, + 0x6c, 0xf2, 0xb5, 0x48, 0xb8, 0xfa, 0x5f, 0x32, + 0xe4, 0xef, 0xc9, 0xad, 0x2d, 0xb5, 0xac, 0xc5, + 0xee, 0xf7, 0xb2, 0x81, 0xa7, 0xe9, 0x9c, 0xf9, + 0xc9, 0xd1, 0x14, 0xc0, 0xa9, 0x1e, 0xd8, 0x50, + 0x44, 0x8a, 0x02, 0xf2, 0xad, 0x6d, 0xe4, 0xa1, + 0x7e, 0x88, 0xd3, 0x2d, 0xad, 0x75, 0x17, 0x35, + 0xe6, 0x8a, 0xf5, 0xd7, 0x35, 0x1a, 0xb4, 0x13, + 0x36, 0x8a, 0x0f, 0xa3, 0x99, 0x57, 0x7f, 0x85, + 0x99, 0x6c, 0xae, 0xc5, 0xe7, 0x85, 0xff, 0xb5, + 0xb0, 0xad, 0x87, 0x03, 0x41, 0x11, 0xc5, 0x16, + 0x2d, 0x95, 0x1d, 0x26, 0xaf, 0x43, 0xa6, 0x76, + 0xae, 0x17, 0xca, 0x10, 0x65, 0x64, 0xc6, 0x43, + 0x4a, 0x2c, 0x7b, 0x55, 0xde, 0x3d, 0x93, 0xc5, + 0x46, 0x17, 0xc1, 0xc2, 0xd7, 0xcb, 0xec, 0xc7, + 0x8e, 0xce, 0x0c, 0x65, 0x27, 0x0d, 0x0e, 0xaf, + 0x76, 0x65, 0xea, 0xcd, 0xe9, 0x39, 0xe3, 0xd4, + 0xbc, 0x6f, 0xc3, 0x87, 0xca, 0x9c, 0x4c, 0xc9, + 0xbb, 0x38, 0xa8, 0xc7, 0xea, 0xc0, 0xcf, 0x9b, + 0x33, 0xfd, 0xfe, 0x50, 0x1b, 0x86, 0xeb, 0x1f, + 0x75, 0xb0, 0x61, 0xd9, 0xb4, 0xfc, 0xb2, 0x5a, + 0x2f, 0xcb, 0x11, 0xd0, 0x2a, 0xa2, 0x7b, 0x4b, + 0x65, 0x0c, 0x2f, 0x43, 0xea, 0xe2, 0x4d, 0xd4, + 0x11, 0xf9, 0x94, 0x24, 0xbd, 0x89, 0x1a, 0xb9, + 0x86, 0x81, 0xca, 0x39, 0x66, 0xc3, 0xdb, 0x7a, + 0x72, 0xd8, 0xe2, 0x5e, 0x80, 0xf9, 0x19, 0x0b, + 0x7c, 0xb3, 0xfe, 0xeb, 0x81, 0x93, 0x7e, 0x54, + 0xd1, 0xdd, 0x0d, 0x74, 0x43, 0x8b, 0x0d, 0x11, + 0xd4, 0xe8, 0x32, 0xf1, 0xf4, 0x02, 0xcc, 0xac, + 0x2f, 0x1e, 0xd7, 0x68, 0xf1, 0x30, 0xbd, 0xe2, + 0x58, 0xf4, 0x97, 0xe5, 0x0f, 0xb6, 0x38, 0xd1, + 0xa3, 0x49, 0x4b, 0x0e, 0x4e, 0x88, 0x3f, 0x2b, + 0x0e, 0xb6, 0x96, 0xc9, 0x14, 0xb5, 0x8d, 0xd3, + 0xc8, 0xaa, 0xe0, 0x2c, 0x11, 0x83, 0x09, 0x9b, + 0xfe, 0x91, 0x5f, 0xfc, 0xc5, 0x01, 0x36, 0x20, + 0x44, 0x89, 0x5d, 0x2a, 0x40, 0x62, 0xd3, 0x0d, + 0x2a, 0x2d, 0x05, 0xca, 0xce, 0xf1, 0x25, 0x79, + 0x5d, 0x8b, 0xe8, 0x54, 0x97, 0x9a, 0x2a, 0x7d, + 0x0d, 0x38, 0x2e, 0x37, 0xf1, 0xf8, 0xe9, 0xf3, + 0x11, 0xe9, 0x94, 0x31, 0x2a, 0x7b, 0x9f, 0xa7, + 0xfe, 0x9b, 0x3f, 0x04, 0xf0, 0x22, 0xec, 0xc7, + 0x6c, 0x6e, 0x6f, 0x1f, 0x8b, 0xb7, 0xd0, 0xdc, + 0xec, 0xe5, 0xbd, 0xe0, 0x3e, 0x18, 0x20, 0x2a, + 0x55, 0xe7, 0xf4, 0xcb, 0xaf, 0x48, 0x39, 0x36, + 0x4d, 0xa2, 0xac, 0x41, 0x32, 0x12, 0x7b, 0x29, + 0xdc, 0x28, 0x3d, 0x05, 0xa7, 0x32, 0xbe, 0x67, + 0x03, 0x26, 0x4f, 0x5a, 0x3f, 0x4b, 0xf4, 0xf4, + 0x17, 0x67, 0xb9, 0x21, 0x18, 0x36, 0xf7, 0x63, + 0xa7, 0x7e, 0x4f, 0x5f, 0x43, 0x83, 0x6f, 0x70, + 0x01, 0xec, 0x0c, 0x15, 0x28, 0x14, 0x49, 0xc3, + 0xf8, 0xa1, 0xa0, 0xed, 0x04, 0x59, 0x22, 0xbd, + 0xdc, 0x8b, 0xe2, 0x7e, 0x43, 0xf3, 0x46, 0x7b, + 0x5c, 0xa7, 0x91, 0xf7, 0xb0, 0xd4, 0x6d, 0x81, + 0x23, 0x46, 0xdc, 0x3a, 0x23, 0x99, 0x3f, 0x02, + 0xce, 0x4f, 0x9a, 0xfc, 0x50, 0x6d, 0x2c, 0x80, + 0xf0, 0xc6, 0x5e, 0x60, 0x48, 0x7b, 0x40, 0x0b, + 0xca, 0x1e, 0xef, 0x36, 0xf0, 0xfa, 0x5d, 0xcd, + 0x83, 0x8d, 0x53, 0xb8, 0xa8, 0x6c, 0x5f, 0x68, + 0xcc, 0xb7, 0x77, 0x05, 0xaa, 0x02, 0xec, 0x32, + 0x8b, 0xe9, 0xb5, 0xdf, 0xd1, 0xab, 0x03, 0x90, + 0xec, 0x5d, 0x0c, 0xea, 0xf5, 0xa4, 0xc7, 0x48, + 0xbf, 0x54, 0xc0, 0xb6, 0xaf, 0x3a, 0x3c, 0xe9, + 0xcb, 0x87, 0xde, 0x75, 0xf2, 0xbb, 0x12, 0x6c, + 0xdf, 0x62, 0x36, 0xca, 0x27, 0x6c, 0x6e, 0xfd, + 0x8e, 0xad, 0xf0, 0x38, 0x22, 0x61, 0xbf, 0xbd, + 0x14, 0x4d, 0x17, 0xf1, 0xb6, 0x16, 0x12, 0xce, + 0x43, 0x3b, 0xc8, 0x35, 0x7b, 0x09, 0x7d, 0x3f, + 0x8e, 0xdd, 0xdd, 0x89, 0x0d, 0x55, 0xec, 0xad, + 0x79, 0x50, 0xfb, 0x08, 0x53, 0x9d, 0x08, 0x2d, + 0xb3, 0x4b, 0xd7, 0x2a, 0xbf, 0xb5, 0xa2, 0xa4, + 0x6f, 0x9c, 0x04, 0x41, 0xe3, 0xe4, 0xaf, 0xc3, + 0xec, 0xcf, 0xa0, 0xc0, 0x06, 0xc2, 0x3e, 0x24, + 0x95, 0x37, 0x11, 0xaf, 0x98, 0xa7, 0x98, 0x22, + 0x68, 0x00, 0xe7, 0x66, 0xf4, 0xf2, 0x56, 0x6b, + 0x6b, 0x6b, 0x6c, 0x7c, 0x58, 0x00, 0xa4, 0x69, + 0xe3, 0xd5, 0x65, 0x88, 0x04, 0xc6, 0xd6, 0x10, + 0xb3, 0x6e, 0xdf, 0x16, 0xb3, 0x5f, 0x40, 0x38, + 0xf3, 0x68, 0x61, 0xd8, 0x97, 0x4b, 0x0f, 0x6a, + 0xc0, 0x47, 0x4f, 0xeb, 0xd3, 0xda, 0x16, 0xdf, + 0xf5, 0x4e, 0xc1, 0x0e, 0xcf, 0x27, 0xf2, 0x3d, + 0x35, 0xfc, 0x70, 0xfd, 0x52, 0xb8, 0x56, 0xcf, + 0x8b, 0x14, 0x30, 0x17, 0x2e, 0x1e, 0x65, 0x0e, + 0xc9, 0x3d, 0x52, 0xcf, 0xef, 0x4b, 0x94, 0xa0, + 0x80, 0x3e, 0x7e, 0x55, 0xaf, 0x06, 0x8a, 0x13, + 0xef, 0x34, 0x11, 0x95, 0xf8, 0x6f, 0x6b, 0xde, + 0xc6, 0x75, 0x17, 0x10, 0x5e, 0x73, 0x14, 0x14, + 0x7b, 0xad, 0xa0, 0xe6, 0x52, 0xce, 0xfd, 0xf1, + 0x20, 0x42, 0x22, 0x98, 0x00, 0x5c, 0x5a, 0xa1, + 0x47, 0x5e, 0xa3, 0x59, 0x16, 0x43, 0x45, 0x8d, + 0xa5, 0x3b, 0x25, 0x65, 0xdc, 0xeb, 0xb7, 0xbf, + 0x03, 0x77, 0xf7, 0xca, 0x7f, 0x6e, 0xd0, 0x8c, + 0xf5, 0xf9, 0x8e, 0x87, 0x71, 0x9d, 0x82, 0xc5, + 0x5e, 0x97, 0x12, 0x3d, 0x6e, 0x95, 0xca, 0xe2, + 0xdf, 0x87, 0xa3, 0x05, 0x7f, 0x72, 0x88, 0xc2, + 0xbd, 0xfa, 0x44, 0xde, 0x86, 0x67, 0xed, 0xbf, + 0x53, 0x98, 0xd5, 0xb6, 0x01, 0xc1, 0x75, 0x58, + 0x6f, 0x16, 0x0d, 0x78, 0x8f, 0x8d, 0x95, 0x95, + 0x44, 0x46, 0x6d, 0x93, 0xfb, 0xfa, 0x59, 0xd6, + 0x9d, 0x9b, 0x02, 0x1e, 0xf7, 0xdb, 0xfd, 0x0f, + 0x48, 0xa5, 0xaa, 0x76, 0xc3, 0xfd, 0xd3, 0x4d, + 0x0f, 0x70, 0x2e, 0x01, 0x1a, 0x55, 0xe8, 0x25, + 0xed, 0x73, 0xe8, 0x44, 0xee, 0x32, 0x1f, 0xfc, + 0x7e, 0xd5, 0xc4, 0x17, 0x42, 0x59, 0x34, 0xac, + 0x44, 0x68, 0x4b, 0x64, 0x6e, 0xc2, 0xec, 0x5a, + 0x16, 0x11, 0xe8, 0xc0, 0x06, 0x03, 0xcf, 0xc9, + 0x90, 0xe9, 0x6e, 0xae, 0xe7, 0x62, 0x5c, 0x08, + 0x39, 0x59, 0xf8, 0xc3, 0x83, 0xa1, 0xde, 0xcd, + 0xc9, 0x65, 0x83, 0x1c, 0x80, 0x3e, 0x98, 0x05, + 0xe1, 0x0f, 0x4e, 0x0f, 0xf8, 0x62, 0x51, 0x42, + 0x01, 0xd0, 0x86, 0x17, 0xc2, 0x44, 0xef, 0x01, + 0xfd, 0xe5, 0x6c, 0x6a, 0x04, 0xd1, 0x2d, 0x38, + 0x49, 0xf0, 0xe3, 0xd6, 0x2e, 0x0b, 0xe0, 0xe4, + 0xd9, 0x1b, 0xb3, 0xc6, 0x6a, 0x3e, 0x2d, 0x7c, + 0xc2, 0x86, 0x20, 0x46, 0x1d, 0xef, 0x14, 0xe9, + 0xea, 0x8e, 0x9c, 0x45, 0xd0, 0x3f, 0x80, 0x0b, + 0x24, 0x5f, 0x1c, 0xa4, 0x3b, 0xdb, 0xbf, 0xa2, + 0x6c, 0xeb, 0x7f, 0x3c, 0x5d, 0x23, 0x08, 0x6c, + 0x21, 0xc5, 0xba, 0xc0, 0x98, 0xd2, 0x46, 0x5a, + 0x32, 0x52, 0x58, 0x3f, 0x23, 0xfd, 0xeb, 0x89, + 0x3e, 0x12, 0x9a, 0xa6, 0x8e, 0x17, 0x01, 0xa1, + 0x0f, 0x26, 0x1a, 0x4a, 0x16, 0x0e, 0x29, 0x55, + 0xb3, 0xb6, 0x85, 0xd9, 0x38, 0x42, 0x70, 0x8d, + 0x0a, 0xd5, 0x9e, 0x3c, 0xf7, 0x1d, 0x40, 0x45, + 0x39, 0x6c, 0x4c, 0x78, 0xc4, 0xe7, 0x7c, 0x1c, + 0x35, 0x0a, 0x1f, 0xc7, 0x2a, 0x5a, 0x7b, 0x37, + 0xf6, 0xa2, 0x97, 0x1f, 0x93, 0xa2, 0x9f, 0x8e, + 0xf4, 0xd2, 0xd3, 0x94, 0x9e, 0x33, 0xa4, 0xf8, + 0x79, 0x79, 0xab, 0xd0, 0x03, 0x16, 0x6b, 0xd8, + 0x06, 0xac, 0x0c, 0x20, 0x28, 0xff, 0x98, 0xa1, + 0xa1, 0x9b, 0x0f, 0x73, 0x31, 0xdd, 0x32, 0xee, + 0x0d, 0x4a, 0x73, 0x4e, 0xf9, 0x35, 0x3d, 0x5b, + 0x9e, 0xbe, 0xde, 0xe3, 0xed, 0x20, 0x2d, 0x53, + 0x83, 0x86, 0xd6, 0xde, 0x17, 0x60, 0x62, 0x65, + 0x76, 0x8e, 0xa9, 0xaa, 0xb6, 0xcf, 0xde, 0xe3, + 0xec, 0xfd, 0x43, 0x5a, 0x97, 0xa2, 0xcc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x05, 0x0d, 0x14, 0x22, 0x27, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa65", + .pk_len =3D DILITHIUM65_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM65_PUBLICKEYBYTES]){ + 0x25, 0x5b, 0x8f, 0x59, 0xb9, 0x03, 0xe7, 0x6d, + 0x1b, 0x3d, 0xa3, 0x94, 0xea, 0x35, 0x79, 0x55, + 0x3f, 0xed, 0x5c, 0xfc, 0x93, 0x5d, 0x95, 0x30, + 0x2c, 0x68, 0xee, 0xc5, 0x24, 0x7e, 0xec, 0xb9, + 0x70, 0xf5, 0xd9, 0x76, 0xbb, 0x65, 0x90, 0xef, + 0xcf, 0xf1, 0xb4, 0x69, 0xae, 0xf0, 0xcd, 0xbd, + 0xf0, 0x2f, 0x69, 0xda, 0xec, 0xf7, 0x6a, 0x36, + 0xba, 0x86, 0xf6, 0x22, 0xa5, 0x9d, 0x49, 0x02, + 0xc2, 0x34, 0xd5, 0xdc, 0x0f, 0xa2, 0x44, 0x0d, + 0x37, 0x21, 0x29, 0xa5, 0x88, 0xd9, 0x19, 0xdd, + 0x2f, 0x6e, 0x39, 0x37, 0xe5, 0x53, 0x03, 0x22, + 0xc4, 0xde, 0xd6, 0xe9, 0xa8, 0x36, 0x28, 0xa2, + 0x13, 0x9f, 0x76, 0x8f, 0x2d, 0xc2, 0xe7, 0x3f, + 0x3a, 0x48, 0x07, 0x17, 0x4d, 0x39, 0xfd, 0x7b, + 0xa4, 0x85, 0x55, 0x6a, 0x0c, 0xfd, 0xcb, 0x3e, + 0xab, 0x95, 0x1a, 0x7d, 0xda, 0xf9, 0x75, 0xc9, + 0x43, 0x86, 0xba, 0xf8, 0xae, 0xae, 0xee, 0x27, + 0x1e, 0x08, 0x0e, 0x8d, 0x55, 0xaa, 0xc6, 0x96, + 0xe3, 0xa2, 0x40, 0x7b, 0x8f, 0xe3, 0x59, 0x46, + 0xa9, 0x3a, 0x38, 0xa6, 0x01, 0x8f, 0xae, 0xdb, + 0xa3, 0x3b, 0x09, 0xb2, 0x6b, 0x05, 0x18, 0x13, + 0xf5, 0xd8, 0xca, 0x51, 0x2b, 0xb5, 0x28, 0x36, + 0xe2, 0xa6, 0x53, 0x52, 0x41, 0x47, 0xd7, 0x4a, + 0xa1, 0x1a, 0x1d, 0x91, 0x8b, 0x61, 0x86, 0x7e, + 0x22, 0x76, 0xcb, 0x30, 0x6c, 0x67, 0xb3, 0x8e, + 0x2e, 0xaf, 0x93, 0xe2, 0x3b, 0x0a, 0xd4, 0x22, + 0xc7, 0xa5, 0xbc, 0x4c, 0xec, 0xd3, 0x38, 0x86, + 0x22, 0x78, 0xdf, 0xa1, 0xa7, 0x2b, 0x80, 0xfa, + 0x43, 0xd5, 0x47, 0xb9, 0x6a, 0xaf, 0xc6, 0x7e, + 0x9a, 0x2d, 0xb8, 0x17, 0x58, 0x2f, 0xfd, 0x77, + 0x37, 0x18, 0xf3, 0x9f, 0x84, 0xca, 0x6e, 0x00, + 0x4b, 0xba, 0xa5, 0xe7, 0x0f, 0x87, 0x86, 0x31, + 0xe9, 0xd1, 0x41, 0x53, 0x28, 0x8f, 0x2f, 0x46, + 0x96, 0x0b, 0x6d, 0x3e, 0x6d, 0x20, 0x4c, 0xb0, + 0x43, 0x74, 0x44, 0xdd, 0xe9, 0x33, 0x94, 0x1c, + 0x3b, 0x69, 0x49, 0x15, 0x36, 0xbd, 0x6c, 0xb7, + 0x0d, 0xb5, 0xf5, 0xfb, 0x23, 0x19, 0x0e, 0x6a, + 0x45, 0x65, 0x1c, 0xa7, 0x66, 0x48, 0xb5, 0xa2, + 0x52, 0x91, 0x43, 0x7b, 0x20, 0x21, 0x5e, 0x16, + 0xc2, 0xba, 0x78, 0xfa, 0xd3, 0x88, 0xb8, 0x64, + 0x08, 0x17, 0x89, 0x9c, 0x4f, 0xfa, 0xb9, 0xfe, + 0x3e, 0x39, 0x6a, 0x28, 0xd2, 0x28, 0x95, 0xab, + 0x54, 0xde, 0xfb, 0x76, 0x32, 0x96, 0xb3, 0xbb, + 0x9f, 0xef, 0x0b, 0x6b, 0xe8, 0xd7, 0x17, 0x4d, + 0x5e, 0x9b, 0x25, 0x3f, 0x3e, 0x6a, 0x93, 0xa1, + 0xe9, 0x09, 0xc2, 0x34, 0x8e, 0x2f, 0xe9, 0x19, + 0x69, 0xc2, 0xcb, 0x5c, 0x29, 0x8d, 0x4d, 0x81, + 0x01, 0xff, 0xde, 0x02, 0x7d, 0xeb, 0xc2, 0x6e, + 0x15, 0x78, 0xe8, 0x10, 0x0a, 0x1a, 0x91, 0x96, + 0x56, 0x24, 0x35, 0x74, 0x3d, 0x02, 0x50, 0x13, + 0xd8, 0x1b, 0x94, 0xcd, 0xc8, 0x60, 0xc8, 0x6f, + 0x28, 0x77, 0x3b, 0x76, 0x86, 0xa0, 0x39, 0xaa, + 0x3a, 0x3e, 0x15, 0x47, 0xa0, 0x3b, 0xc3, 0xec, + 0xe2, 0x15, 0x84, 0xba, 0xdf, 0x1d, 0x42, 0x5b, + 0xcd, 0x97, 0x51, 0x92, 0x15, 0x64, 0xd7, 0x5c, + 0xe2, 0xe2, 0x60, 0xe9, 0xbe, 0xdc, 0x1c, 0x12, + 0x62, 0x15, 0x6b, 0xe6, 0xf1, 0x23, 0xb8, 0x81, + 0x87, 0x15, 0xf4, 0x9a, 0x35, 0xd7, 0x18, 0x64, + 0x92, 0xc4, 0xec, 0xcf, 0x5c, 0xd4, 0xf7, 0x6a, + 0xf9, 0xe6, 0x7e, 0x71, 0x3d, 0x3e, 0xd0, 0x17, + 0x72, 0x28, 0xd3, 0x22, 0x97, 0x14, 0x5d, 0x90, + 0xca, 0x0b, 0x4f, 0x2c, 0x18, 0xc0, 0x45, 0x39, + 0x87, 0x4f, 0xd9, 0x74, 0xef, 0x9f, 0xc7, 0xc7, + 0x59, 0x04, 0x62, 0x31, 0xcc, 0x37, 0x78, 0x76, + 0xdd, 0xc6, 0x9b, 0xff, 0xf7, 0x77, 0x87, 0x6a, + 0xfb, 0x7b, 0xb0, 0xdf, 0x64, 0x75, 0xdb, 0xee, + 0x2b, 0x45, 0x45, 0x45, 0x5b, 0xed, 0x89, 0xd9, + 0xfe, 0x71, 0xc6, 0xd5, 0xc7, 0x75, 0xe7, 0x2f, + 0x4e, 0x5b, 0xa2, 0xcf, 0x07, 0xbe, 0x4b, 0x5e, + 0x3a, 0x76, 0x9b, 0x59, 0x8f, 0x1e, 0xac, 0x21, + 0xf8, 0x90, 0x57, 0x3e, 0x25, 0x4b, 0x8c, 0x9d, + 0x4f, 0xe8, 0x14, 0xfd, 0xcb, 0xaa, 0x86, 0x6a, + 0x0c, 0x5c, 0x20, 0xa1, 0x03, 0xe4, 0x69, 0x84, + 0xb1, 0x38, 0x16, 0x92, 0xd8, 0xd3, 0x68, 0x7e, + 0x8e, 0x85, 0x25, 0x83, 0x38, 0x3a, 0xe2, 0x3d, + 0x76, 0x31, 0xbf, 0x4d, 0x74, 0xc0, 0xa6, 0xa2, + 0xeb, 0xaa, 0x8e, 0x70, 0xa6, 0x6f, 0x67, 0xd4, + 0xb4, 0x81, 0xd6, 0xbc, 0xe6, 0xda, 0xa2, 0xd1, + 0x93, 0xc6, 0xf6, 0x54, 0x05, 0x4c, 0x51, 0x1e, + 0x97, 0xc9, 0x82, 0x9f, 0x45, 0x6d, 0x67, 0x17, + 0xc0, 0x6c, 0xb0, 0x7a, 0x83, 0xeb, 0xdc, 0xb0, + 0xf0, 0x09, 0x4f, 0xed, 0xbc, 0xe0, 0xf8, 0x26, + 0xf4, 0xe3, 0x2a, 0xdb, 0xef, 0xcc, 0xf1, 0x3f, + 0x71, 0xc1, 0x07, 0x3f, 0x19, 0x8a, 0xe5, 0xb3, + 0x33, 0x7c, 0x7a, 0xa4, 0x89, 0x57, 0x46, 0x17, + 0x5d, 0x2c, 0x91, 0xc3, 0xac, 0x34, 0x49, 0x14, + 0x73, 0x7c, 0x01, 0x32, 0xf2, 0x20, 0x11, 0x18, + 0x95, 0xc2, 0x36, 0x63, 0x61, 0xd6, 0xba, 0x65, + 0x62, 0x9a, 0xcc, 0xed, 0x03, 0x8a, 0xd0, 0x88, + 0xb2, 0x3e, 0xdc, 0x82, 0xd0, 0x29, 0xd2, 0xd3, + 0xcb, 0x5b, 0x96, 0xa1, 0x34, 0xde, 0xd2, 0x64, + 0xc7, 0x40, 0xcb, 0x1f, 0xd6, 0x63, 0xe8, 0x52, + 0xd7, 0xbd, 0x42, 0xdc, 0x0d, 0x1c, 0x98, 0xa5, + 0x03, 0x73, 0x96, 0xae, 0x1c, 0xa4, 0x7c, 0x45, + 0x4b, 0x03, 0x7f, 0xe3, 0x10, 0xe0, 0xa4, 0x10, + 0x9f, 0x2d, 0x3b, 0x1f, 0x75, 0x00, 0x90, 0xf0, + 0x4a, 0x49, 0x68, 0xbf, 0xa5, 0xf2, 0x79, 0xa4, + 0xaf, 0x08, 0xb0, 0xbf, 0xed, 0x0c, 0x5e, 0xf2, + 0x6c, 0xfb, 0xcf, 0x7d, 0xcd, 0xbf, 0xf2, 0x8d, + 0x51, 0x32, 0xd2, 0x18, 0xfb, 0xfb, 0x8c, 0xf4, + 0x6e, 0x99, 0x43, 0x46, 0x51, 0x0f, 0x0b, 0x99, + 0xd4, 0x9f, 0x01, 0xf3, 0x14, 0xb5, 0xdc, 0xad, + 0x41, 0x6f, 0x23, 0x90, 0x44, 0xab, 0x30, 0x97, + 0xf7, 0x43, 0xd2, 0x7c, 0x60, 0xbc, 0x5b, 0x9b, + 0x8a, 0x28, 0x59, 0x34, 0xd3, 0x3e, 0xb9, 0x68, + 0x7e, 0x9a, 0x2e, 0xe0, 0x5f, 0x5b, 0x3c, 0xe5, + 0x91, 0x02, 0xe1, 0xdd, 0x29, 0x62, 0x1e, 0x14, + 0x2c, 0x01, 0xe5, 0x4f, 0x18, 0x04, 0x9e, 0x0f, + 0xb0, 0x60, 0x7a, 0x70, 0x1c, 0x8c, 0x45, 0xa1, + 0x1b, 0xb7, 0x42, 0x6b, 0xb6, 0x79, 0xb6, 0x1a, + 0x26, 0x6f, 0xdb, 0x7e, 0xd6, 0xfa, 0xbe, 0x18, + 0xf1, 0xd1, 0x81, 0xab, 0x8d, 0x92, 0x3d, 0x65, + 0x30, 0x48, 0x7a, 0x5b, 0x95, 0x2f, 0x98, 0xe3, + 0x75, 0x29, 0x26, 0xd0, 0x9d, 0x6f, 0x45, 0x28, + 0x93, 0x1c, 0xbd, 0x8c, 0x5c, 0x8d, 0x52, 0xac, + 0xc3, 0xaa, 0x48, 0x85, 0xfc, 0x08, 0x15, 0x7e, + 0x98, 0xfb, 0xce, 0x40, 0x33, 0x16, 0xfa, 0xca, + 0x63, 0xfb, 0x21, 0xcf, 0x6c, 0xab, 0x7f, 0xf8, + 0xb3, 0x57, 0xab, 0x84, 0x23, 0x0b, 0x4c, 0x90, + 0x2b, 0x29, 0xe3, 0xa3, 0x9b, 0x04, 0x54, 0xda, + 0xd2, 0x34, 0x11, 0xdd, 0xf3, 0x31, 0x68, 0x17, + 0xd0, 0x5a, 0xc5, 0xe4, 0xf6, 0x70, 0xeb, 0xfa, + 0xc9, 0xd3, 0xa6, 0x6e, 0x26, 0x41, 0x2c, 0x9b, + 0x21, 0xbd, 0x83, 0xd6, 0x71, 0xf1, 0x1b, 0x6d, + 0x3b, 0xe9, 0x39, 0xac, 0x8b, 0xbd, 0x2f, 0xb4, + 0xe3, 0xc9, 0xfb, 0xe1, 0x71, 0xd2, 0xee, 0x7b, + 0x4e, 0x40, 0xde, 0xde, 0xaf, 0x9f, 0xff, 0xfe, + 0x37, 0xd8, 0x5f, 0xbc, 0x6c, 0xc6, 0xc5, 0x21, + 0xd6, 0x05, 0xc9, 0x23, 0x55, 0xb3, 0x33, 0xe1, + 0x06, 0xf6, 0xff, 0xa9, 0x8d, 0x04, 0xec, 0x6f, + 0xb2, 0x64, 0x01, 0x09, 0x40, 0xaf, 0x83, 0xc4, + 0xd5, 0x73, 0xbd, 0xb8, 0xe1, 0xe7, 0xb9, 0x5e, + 0x3c, 0x57, 0x1f, 0xa2, 0xe6, 0xb0, 0x79, 0x49, + 0x14, 0x49, 0x69, 0xcf, 0x6e, 0x77, 0x05, 0xeb, + 0xf8, 0x4c, 0x92, 0xf3, 0xda, 0x08, 0xf8, 0xdb, + 0x44, 0x48, 0x73, 0xbf, 0xf0, 0xa9, 0x88, 0x49, + 0x07, 0x8f, 0x3a, 0x6b, 0x13, 0x2c, 0xd2, 0x24, + 0xc1, 0x6a, 0x1f, 0x25, 0x70, 0x7d, 0x29, 0xc5, + 0x32, 0x84, 0x4a, 0xc4, 0xe6, 0x9c, 0x46, 0xa8, + 0x99, 0x3b, 0x2d, 0x80, 0x5f, 0x20, 0xaa, 0x3c, + 0x60, 0x52, 0x7f, 0x67, 0x9e, 0x87, 0xb9, 0x7b, + 0x57, 0xa5, 0x97, 0xbb, 0x70, 0x29, 0x9f, 0x5c, + 0xd5, 0x76, 0xd2, 0x99, 0xab, 0x9e, 0xb9, 0xbd, + 0x67, 0x8a, 0xda, 0x91, 0x9e, 0xea, 0xdf, 0x64, + 0x09, 0x08, 0x4d, 0xad, 0xb7, 0x8f, 0x5a, 0x15, + 0x27, 0xaf, 0xc2, 0xf7, 0xeb, 0xf4, 0x39, 0x42, + 0xdc, 0xe5, 0x6a, 0x5e, 0xcc, 0xe6, 0x77, 0x4e, + 0x0b, 0x20, 0x48, 0x1d, 0x65, 0x4d, 0xd1, 0xe1, + 0x01, 0x85, 0x52, 0x32, 0x7d, 0x51, 0x2f, 0x0e, + 0x00, 0xe3, 0x40, 0x70, 0x26, 0x46, 0xa6, 0xbf, + 0xc8, 0x85, 0x0d, 0xac, 0x9f, 0x8d, 0x79, 0x9c, + 0x6f, 0x58, 0x96, 0xe9, 0xe5, 0xb2, 0xff, 0x4a, + 0xde, 0x91, 0x0b, 0x3d, 0x85, 0x69, 0xa7, 0xa8, + 0x1a, 0xa8, 0x21, 0x3e, 0x8d, 0xf8, 0xba, 0x5a, + 0xc6, 0xd7, 0x3a, 0xcb, 0x04, 0x0e, 0xdf, 0x36, + 0xeb, 0xbc, 0xca, 0x59, 0x24, 0x48, 0xe7, 0xec, + 0x14, 0x7c, 0x7d, 0xb7, 0x26, 0x98, 0x1a, 0x85, + 0xc1, 0x6c, 0x90, 0x9f, 0x4b, 0x90, 0x7c, 0x6d, + 0xa6, 0xba, 0x58, 0xb9, 0xa3, 0x7f, 0x7f, 0x88, + 0xce, 0xb4, 0x40, 0x73, 0xa7, 0x72, 0x3a, 0xbc, + 0xea, 0x99, 0xef, 0x04, 0xbd, 0x08, 0xc5, 0x0d, + 0x6e, 0x68, 0x2f, 0x33, 0x05, 0x5b, 0xeb, 0x6a, + 0xeb, 0x80, 0x30, 0xf0, 0x7d, 0xad, 0x7b, 0x80, + 0x7c, 0xb9, 0x13, 0x0c, 0x08, 0x74, 0x5b, 0x7c, + 0xec, 0x8a, 0xdb, 0xe8, 0xe0, 0xea, 0x70, 0xa4, + 0x9e, 0x88, 0x06, 0xd4, 0xde, 0x8e, 0xb8, 0x93, + 0xa3, 0x89, 0x2c, 0xe5, 0x07, 0xbb, 0x81, 0x88, + 0x7f, 0x9e, 0x1d, 0xb2, 0x8e, 0x8d, 0x59, 0xae, + 0xe4, 0xcf, 0x2d, 0x2f, 0xdf, 0x52, 0xad, 0x7c, + 0xe8, 0x73, 0x0f, 0xee, 0xcc, 0xa0, 0x67, 0x88, + 0x61, 0xc0, 0xcc, 0x06, 0xe0, 0x48, 0xee, 0x93, + 0xf6, 0x56, 0xbe, 0x8a, 0x23, 0x1b, 0x86, 0x7c, + 0x9a, 0xaa, 0x57, 0x83, 0x03, 0x6c, 0x5c, 0x08, + 0xb2, 0xea, 0x1b, 0x98, 0xa5, 0x4d, 0xb3, 0x6b, + 0x27, 0x52, 0xff, 0xbd, 0xb7, 0x53, 0x14, 0x8d, + 0xd1, 0x06, 0xfc, 0xdc, 0x08, 0x59, 0x7b, 0x74, + 0xbf, 0xb4, 0x39, 0x8b, 0x4a, 0x00, 0xdf, 0xe6, + 0x88, 0x00, 0x36, 0x4d, 0xb0, 0x1a, 0x40, 0x13, + 0x45, 0xe8, 0x38, 0x40, 0x49, 0x0c, 0x7a, 0x57, + 0xca, 0x35, 0x66, 0xcf, 0xc7, 0xbe, 0x43, 0x4b, + 0xe9, 0x35, 0x49, 0xfc, 0x08, 0x04, 0xac, 0x00, + 0x39, 0x1f, 0x45, 0xd7, 0x87, 0x1f, 0x57, 0xec, + 0xd4, 0x0b, 0xaa, 0x70, 0x90, 0xdd, 0x90, 0xd2, + 0x65, 0xc4, 0xc0, 0x78, 0x96, 0xed, 0x81, 0xb1, + 0x33, 0xea, 0xe5, 0x28, 0xa4, 0x96, 0x14, 0xe3, + 0x55, 0x41, 0xc5, 0xbe, 0xef, 0xb3, 0x15, 0xcb, + 0xec, 0xf5, 0xd5, 0x9c, 0x30, 0x96, 0x90, 0x51, + 0x47, 0x71, 0x34, 0xce, 0x0b, 0xb1, 0x3f, 0xdd, + 0x0f, 0x8f, 0xa8, 0xe1, 0xea, 0x64, 0x03, 0xdf, + 0x04, 0xed, 0x32, 0xd6, 0xdd, 0x0b, 0xf1, 0xeb, + 0x92, 0x7e, 0x12, 0xba, 0x15, 0x6f, 0x66, 0xe3, + 0x5f, 0xa8, 0xb7, 0x29, 0x0b, 0x23, 0x1b, 0x8f, + 0x44, 0x75, 0x92, 0xd6, 0xb3, 0x02, 0x1f, 0xe0, + 0xb9, 0x98, 0xf9, 0xfa, 0xe5, 0x98, 0xb4, 0xae, + 0xa8, 0x17, 0xbd, 0xbe, 0xb1, 0x52, 0x87, 0x5c, + 0x3a, 0x20, 0x39, 0x1b, 0x8d, 0xc4, 0x9d, 0x7e, + 0x05, 0x18, 0xf5, 0x3d, 0xda, 0x47, 0x0d, 0xd2, + 0xfd, 0xcd, 0x00, 0x83, 0x6e, 0xdc, 0x00, 0x81, + 0x9b, 0x8e, 0x85, 0x3f, 0x95, 0xb3, 0x6b, 0x5a, + 0x2b, 0x21, 0xbf, 0xb5, 0xcf, 0xc7, 0x4d, 0xa4, + 0x74, 0x84, 0xab, 0xc2, 0xbb, 0xa3, 0x61, 0x7f, + 0xe4, 0x70, 0x68, 0x83, 0x2a, 0x9f, 0x67, 0x33, + 0xe8, 0x2e, 0x5c, 0xef, 0xc3, 0x28, 0x5d, 0xd1, + 0xf3, 0x15, 0x1d, 0x2d, 0x85, 0xd7, 0xeb, 0x47, + 0xf3, 0x25, 0x76, 0x7a, 0xd5, 0xb7, 0x6c, 0xab, + 0x09, 0xd1, 0xad, 0xe5, 0xe3, 0xcc, 0x78, 0xe7, + 0x91, 0xd1, 0x60, 0x26, 0xce, 0xf4, 0x9f, 0xc9, + 0x93, 0x30, 0x5e, 0x59, 0xef, 0x83, 0x29, 0xa3, + 0x6e, 0x61, 0x10, 0x35, 0x18, 0x22, 0xd0, 0xec, + 0x73, 0x71, 0xbd, 0xbd, 0x86, 0xd5, 0xbd, 0xc6, + 0x46, 0x73, 0x19, 0x5c, 0x73, 0xa9, 0x7c, 0xde, + 0x09, 0xe2, 0xeb, 0x23, 0x67, 0x55, 0xfa, 0xc1, + 0x87, 0xcd, 0x77, 0xf8, 0x83, 0xdd, 0xca, 0xbc, + 0x15, 0xa4, 0x5c, 0x0c, 0x9d, 0x71, 0x1a, 0xea, + 0x65, 0x65, 0x9c, 0xef, 0xd8, 0x99, 0x4b, 0xe4, + 0xea, 0x8d, 0xca, 0x70, 0x62, 0x33, 0x65, 0x13, + 0xed, 0xbe, 0x9b, 0x3a, 0x23, 0x10, 0x58, 0x65, + 0x6b, 0x6d, 0x0d, 0x3c, 0x7b, 0x54, 0xf5, 0x63, + 0x2b, 0xb9, 0xd7, 0xac, 0x5f, 0x43, 0x05, 0x53, + 0xe4, 0x6c, 0xff, 0xb0, 0x20, 0xab, 0xff, 0xf1, + 0x24, 0x94, 0x87, 0xab, 0x8a, 0xec, 0x86, 0xfe, + 0x2c, 0x4f, 0xd2, 0x89, 0x0e, 0xe0, 0x76, 0xe9, + 0x73, 0x64, 0xda, 0x2d, 0xcd, 0x33, 0xe1, 0xa6, + 0x9e, 0xd0, 0xc3, 0x90, 0xfd, 0x22, 0x55, 0x73, + 0x3b, 0xd6, 0xd3, 0x29, 0xc5, 0x84, 0xb3, 0x84, + 0xfb, 0x60, 0x98, 0x1d, 0x65, 0x2a, 0x9d, 0x1e, + 0xf7, 0x5a, 0x67, 0x25, 0x5d, 0xe6, 0x02, 0x17, + 0x8c, 0x7e, 0x64, 0x17, 0x44, 0xef, 0x19, 0xbe, + 0xda, 0xd9, 0x83, 0x94, 0x2b, 0x4c, 0xa3, 0x3c, + 0xfa, 0x00, 0x6f, 0xef, 0x98, 0xdf, 0x0d, 0x13, + 0x08, 0x7a, 0xeb, 0x2d, 0xa7, 0x6d, 0x0d, 0x4f, + 0x17, 0x2e, 0x08, 0x59, 0xa2, 0x96, 0x13, 0xa2, + 0x5d, 0x97, 0xc3, 0x62, 0xc6, 0xd0, 0x31, 0x28, + 0x86, 0x75, 0x08, 0x0f, 0x77, 0x36, 0xba, 0xea, + 0x8c, 0x34, 0x83, 0xa2, 0x35, 0x7b, 0xda, 0x1b, + 0x70, 0xe7, 0xc0, 0xdb, 0x03, 0x07, 0x97, 0x91, + 0xa9, 0x68, 0x93, 0x89, 0x8d, 0x54, 0x6f, 0x19, + 0xf9, 0xe0, 0xe7, 0x19, 0xef, 0x4a, 0xda, 0x80, + 0x5a, 0x64, 0x11, 0x33, 0xdd, 0x59, 0x37, 0x7d, + 0x81, 0xf6, 0x76, 0xbe, 0x9e, 0x3a, 0x49, 0x4e, + 0xc4, 0xb6, 0xc5, 0x25, 0x74, 0x5e, 0x1e, 0x8c, + 0x9b, 0xf8, 0x8f, 0x58, 0xfc, 0xb3, 0x6b, 0x4e, + 0xea, 0xc4, 0x26, 0xea, 0xd9, 0xbf, 0xe1, 0x4a, + 0xaf, 0x50, 0x91, 0x4f, 0xae, 0xd9, 0x29, 0x67, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x86, 0x8d, 0xae, 0x88, 0x78, 0x21, 0xba, 0x42, + 0xe2, 0xb1, 0x14, 0xf5, 0x44, 0xea, 0x64, 0x75, + 0xe7, 0xca, 0xdd, 0xf1, 0x57, 0xd3, 0x8a, 0x45, + 0xed, 0x97, 0x20, 0x55, 0xd3, 0xd3, 0xfa, 0x9c, + 0x5b, 0x79, 0x0b, 0xb4, 0x50, 0x53, 0x77, 0xd1, + 0xb4, 0xaa, 0x20, 0xf3, 0xd1, 0xf0, 0x4e, 0x20, + 0xb4, 0x4b, 0x5f, 0xa8, 0xd6, 0xbc, 0xdc, 0x06, + 0xb6, 0xcc, 0xfe, 0x00, 0x7f, 0xa0, 0x76, 0x7b, + }, + .sig_len =3D DILITHIUM65_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM65_CRYPTO_BYTES]){ + 0x9a, 0x88, 0x40, 0x11, 0x8c, 0xf3, 0x42, 0xf0, + 0xa5, 0xd6, 0xcb, 0x40, 0xf7, 0x2a, 0xab, 0xac, + 0x0c, 0x61, 0x19, 0x89, 0x07, 0x56, 0x10, 0x75, + 0xed, 0xed, 0x7b, 0xef, 0xf1, 0xeb, 0x5c, 0x9c, + 0x51, 0x5b, 0x2d, 0x03, 0x6a, 0xc7, 0x90, 0xaa, + 0x71, 0x70, 0x16, 0xfd, 0x63, 0xbc, 0x37, 0x05, + 0x83, 0x30, 0x63, 0xf2, 0xf8, 0x70, 0x53, 0x1c, + 0x27, 0xc6, 0x8f, 0x49, 0x47, 0x31, 0xa1, 0xc9, + 0x3b, 0x7e, 0x84, 0x96, 0xb7, 0x96, 0x13, 0x80, + 0xab, 0xd1, 0x35, 0x27, 0x27, 0x1c, 0xbf, 0x9b, + 0xef, 0x0c, 0x90, 0xb6, 0x49, 0xb6, 0x7c, 0x84, + 0xe1, 0xf3, 0xad, 0x7c, 0xab, 0x16, 0xe9, 0x8a, + 0xea, 0xed, 0xbc, 0x0d, 0x59, 0x72, 0x5a, 0xf6, + 0x77, 0xdc, 0x75, 0x24, 0xf8, 0x3d, 0xb0, 0x74, + 0xad, 0x58, 0x3b, 0xaf, 0xd3, 0xa5, 0x09, 0xa5, + 0x9e, 0xc8, 0xf1, 0xef, 0x6d, 0x52, 0x02, 0xb1, + 0x1f, 0x5d, 0xb2, 0x42, 0xfc, 0x92, 0xe6, 0xdb, + 0x24, 0x4d, 0xc8, 0xa5, 0x05, 0x3d, 0xb5, 0x3a, + 0x4f, 0xab, 0xed, 0xc7, 0xd9, 0x0c, 0x48, 0x3f, + 0x36, 0xcd, 0x2a, 0x71, 0xbd, 0x28, 0x86, 0xbc, + 0x1c, 0x42, 0x13, 0xab, 0xf9, 0xa3, 0xfb, 0x36, + 0xd7, 0xd7, 0xf4, 0x11, 0xaa, 0xb4, 0x7e, 0xe6, + 0x5d, 0x62, 0x16, 0x91, 0x79, 0x3b, 0x92, 0xde, + 0x87, 0x41, 0x54, 0x94, 0xb2, 0x4b, 0x0e, 0x72, + 0xdf, 0x35, 0xd1, 0x05, 0x4e, 0xad, 0xcd, 0xaa, + 0x9f, 0x90, 0x42, 0x55, 0xf0, 0x33, 0x1e, 0x89, + 0x36, 0x96, 0x6a, 0x3c, 0x37, 0xed, 0x35, 0x1f, + 0x8e, 0x30, 0xbb, 0xdb, 0xae, 0xf5, 0x04, 0x5d, + 0x0f, 0x9b, 0x93, 0xc1, 0x40, 0x58, 0x86, 0x3b, + 0xe9, 0xe7, 0x14, 0x29, 0x67, 0xdc, 0x3f, 0x86, + 0xec, 0x9c, 0x23, 0x38, 0x2c, 0x62, 0xd3, 0x69, + 0xf1, 0xec, 0xac, 0x8b, 0x32, 0xa5, 0x33, 0x77, + 0x9b, 0x2e, 0xc7, 0xcc, 0x55, 0x48, 0x20, 0x25, + 0x39, 0x6c, 0x80, 0x2e, 0x87, 0x5f, 0xc5, 0x17, + 0x28, 0x78, 0x4e, 0xb0, 0xd5, 0x9c, 0x5f, 0x1a, + 0x82, 0xe0, 0x6f, 0xa3, 0x8a, 0x87, 0x78, 0x57, + 0x4b, 0x35, 0xc0, 0x4f, 0x15, 0x24, 0x2a, 0x57, + 0xaa, 0x1c, 0xd0, 0xe6, 0xe7, 0xed, 0x8f, 0x9e, + 0xca, 0xe2, 0x8c, 0x11, 0x8c, 0x07, 0xf5, 0x6c, + 0x83, 0xd0, 0x17, 0x3c, 0xb4, 0x0e, 0xe9, 0xae, + 0xdb, 0xa2, 0xc8, 0x8a, 0xce, 0x76, 0x81, 0x94, + 0x2f, 0x40, 0x29, 0xdf, 0x7c, 0x6d, 0xac, 0x8a, + 0x52, 0xc1, 0xd1, 0xde, 0x30, 0x9b, 0x47, 0xff, + 0x50, 0xa1, 0x1e, 0x44, 0x5b, 0xc3, 0xce, 0xc4, + 0x96, 0xbd, 0xe7, 0x15, 0xac, 0xd3, 0x06, 0x8e, + 0xcd, 0x51, 0x0e, 0x9a, 0xc0, 0xc6, 0xc6, 0xcb, + 0xc3, 0x35, 0xd0, 0xb1, 0x06, 0xaf, 0x6a, 0x75, + 0xab, 0xc0, 0xa1, 0x0f, 0xb9, 0xb6, 0xbd, 0x47, + 0x85, 0x33, 0x80, 0x9f, 0xa2, 0xf4, 0xff, 0x25, + 0xd1, 0x8e, 0x2f, 0x68, 0x87, 0x50, 0x98, 0xea, + 0x0d, 0x9f, 0x81, 0x7d, 0xd1, 0xa8, 0xd6, 0x7b, + 0x4f, 0x18, 0x34, 0xd0, 0xe0, 0xe8, 0x18, 0x39, + 0x01, 0xbe, 0xaa, 0x94, 0xeb, 0xe3, 0x6d, 0xa4, + 0x22, 0xc4, 0x92, 0x97, 0x51, 0xb5, 0x65, 0xe2, + 0x3a, 0x39, 0x1c, 0x80, 0x3c, 0x3f, 0x18, 0x4c, + 0x4f, 0xda, 0xd8, 0xa5, 0x77, 0xda, 0xc2, 0xe6, + 0xe8, 0x5f, 0xa5, 0x1c, 0xb4, 0x9c, 0x8c, 0x96, + 0x78, 0xdf, 0xed, 0xb5, 0xb0, 0x06, 0x69, 0x7a, + 0x23, 0xd5, 0x1a, 0xdd, 0xce, 0x2e, 0x61, 0x15, + 0x28, 0x09, 0xd2, 0x5c, 0xb0, 0xef, 0x2b, 0x41, + 0x89, 0x6b, 0x83, 0x69, 0xdb, 0x23, 0xcd, 0x18, + 0xa2, 0x77, 0x40, 0x67, 0xa4, 0x7d, 0xf2, 0x55, + 0xcf, 0x1d, 0xaa, 0x89, 0x08, 0x38, 0xfa, 0x42, + 0x69, 0x28, 0x3f, 0x05, 0xe2, 0x5e, 0xaa, 0x2f, + 0x46, 0x83, 0x4a, 0x12, 0x89, 0x8e, 0x0d, 0x33, + 0x40, 0x88, 0x5a, 0x4f, 0x2d, 0x5d, 0xdf, 0xbc, + 0x23, 0xc3, 0x82, 0xff, 0x2b, 0xa4, 0xa4, 0xe4, + 0x16, 0x8a, 0xb2, 0xf0, 0x68, 0x9b, 0x34, 0x95, + 0x2b, 0x5b, 0xb1, 0x42, 0x06, 0xb8, 0x33, 0x93, + 0x36, 0x5b, 0xf7, 0x7c, 0x30, 0xab, 0xb1, 0x8b, + 0x52, 0xe8, 0x8d, 0x9b, 0xcf, 0x4a, 0x1e, 0x95, + 0x9d, 0x8c, 0x40, 0x54, 0x5b, 0x57, 0x1b, 0xcc, + 0xca, 0xcf, 0xfb, 0x44, 0x6e, 0xfa, 0x45, 0x13, + 0xc8, 0xd0, 0x0f, 0xe3, 0x89, 0xd8, 0x43, 0x30, + 0xd2, 0x2a, 0x79, 0x33, 0x34, 0xbc, 0xd2, 0xd1, + 0x6a, 0xc3, 0x66, 0xb1, 0x4c, 0xdc, 0xc7, 0x64, + 0x84, 0xf9, 0x05, 0x61, 0x43, 0x64, 0xf5, 0xd0, + 0x8a, 0x32, 0x30, 0xec, 0x90, 0xb2, 0xf9, 0xd7, + 0x53, 0x62, 0x8b, 0x71, 0xbf, 0xd6, 0xa2, 0xf6, + 0x59, 0x60, 0xc6, 0x67, 0x82, 0xef, 0x1d, 0x59, + 0x0d, 0xa1, 0xa4, 0x7e, 0x9d, 0x6b, 0x95, 0x74, + 0xf0, 0x3d, 0x3a, 0xe8, 0xc8, 0xf4, 0x83, 0xb0, + 0xef, 0x3a, 0xb3, 0x56, 0x61, 0x7f, 0xa3, 0xe9, + 0x2b, 0x17, 0x74, 0x4e, 0xeb, 0xbe, 0xb2, 0x7a, + 0xca, 0xd3, 0xe4, 0x67, 0xa8, 0x62, 0x11, 0xf0, + 0x31, 0x72, 0x87, 0x52, 0xeb, 0xfd, 0x32, 0xb5, + 0xe1, 0xff, 0x84, 0xfb, 0x81, 0xf7, 0x78, 0xef, + 0x0d, 0xbd, 0x03, 0xcf, 0xd6, 0xa0, 0x80, 0xb4, + 0x04, 0x2b, 0x8a, 0xd7, 0x4f, 0x86, 0x60, 0x16, + 0x9b, 0x41, 0xa0, 0x85, 0xce, 0xd5, 0xc9, 0x26, + 0xd5, 0xf8, 0xa2, 0x67, 0x6b, 0xa5, 0xb5, 0x8d, + 0x14, 0x61, 0xae, 0x42, 0xbc, 0x6a, 0xb0, 0x66, + 0x07, 0x8a, 0xbb, 0xa9, 0xd2, 0xce, 0x48, 0x12, + 0x5c, 0xe2, 0x60, 0x3d, 0x2f, 0xd0, 0x48, 0x3b, + 0xe8, 0xf1, 0xc1, 0xd6, 0x11, 0x84, 0xef, 0x6b, + 0xbe, 0x8a, 0x28, 0x56, 0xb5, 0xae, 0x7a, 0x41, + 0xeb, 0x70, 0x2c, 0x46, 0x2f, 0x37, 0xe1, 0x9d, + 0xe9, 0x3c, 0xa4, 0x9c, 0xd2, 0x71, 0xb4, 0x1a, + 0xcf, 0xf0, 0xbe, 0x58, 0xe1, 0xf4, 0x14, 0xcd, + 0xb1, 0x25, 0xfd, 0x54, 0x60, 0x40, 0xfe, 0xa2, + 0xf8, 0xab, 0x09, 0xd0, 0xca, 0x45, 0x98, 0xe6, + 0xff, 0x73, 0x9a, 0x6c, 0x3a, 0x5f, 0x3d, 0xef, + 0xc6, 0x19, 0x0f, 0x2e, 0x7e, 0x7e, 0xa8, 0x44, + 0xe4, 0x57, 0xd9, 0x7f, 0x3e, 0x44, 0x1d, 0x1b, + 0x8f, 0xeb, 0x99, 0xb9, 0x1b, 0x00, 0xde, 0xcb, + 0x98, 0xc9, 0x5c, 0xc5, 0x87, 0x0e, 0xdc, 0xaa, + 0xb5, 0x67, 0x63, 0x08, 0x05, 0x7a, 0xab, 0xf2, + 0x7a, 0x81, 0x8b, 0xb0, 0xd6, 0x3c, 0xa0, 0xd5, + 0x6d, 0xc9, 0xa0, 0xf7, 0xa7, 0xdf, 0xa6, 0x6c, + 0x83, 0x8f, 0xea, 0xb5, 0x1f, 0x21, 0x46, 0xb8, + 0xf4, 0xd0, 0x8b, 0x79, 0x56, 0x2f, 0x3a, 0x45, + 0x0d, 0x2f, 0xfb, 0xbd, 0x96, 0x23, 0xbd, 0xc7, + 0x51, 0xf6, 0x4a, 0xb9, 0xe6, 0x40, 0x23, 0x66, + 0x48, 0x0c, 0x61, 0x95, 0x07, 0x7b, 0x4b, 0x95, + 0x12, 0x72, 0x82, 0x00, 0xb6, 0x52, 0xb9, 0x63, + 0xf6, 0xf5, 0xb4, 0xdb, 0x06, 0xdd, 0x9a, 0x1a, + 0xac, 0x96, 0xb9, 0x0c, 0xcc, 0x40, 0x3a, 0xc0, + 0x94, 0x3d, 0x4c, 0xab, 0xcd, 0x83, 0xc7, 0x9f, + 0x1c, 0x3d, 0x9a, 0x4e, 0x9e, 0xd5, 0x63, 0x79, + 0xed, 0xd3, 0xe4, 0x02, 0xa6, 0x0d, 0xdb, 0x6a, + 0x8b, 0xf5, 0x34, 0x71, 0x08, 0xb3, 0xc4, 0x4e, + 0xa0, 0xaf, 0xd1, 0xcf, 0xb1, 0x57, 0x72, 0x8a, + 0xf7, 0x1f, 0x76, 0x98, 0xe5, 0xfc, 0x44, 0x53, + 0xd5, 0xa1, 0xb0, 0x79, 0x35, 0x69, 0x8a, 0x5e, + 0x33, 0xd7, 0x04, 0x45, 0xc5, 0xe0, 0x16, 0x99, + 0x6a, 0x85, 0x69, 0xec, 0xff, 0xb0, 0x7b, 0x32, + 0x98, 0x26, 0xbb, 0xae, 0xae, 0xb6, 0xd4, 0xc6, + 0x48, 0x10, 0x77, 0x42, 0x95, 0x4d, 0x08, 0x70, + 0xdf, 0x78, 0x0c, 0x40, 0x3a, 0xd6, 0xc3, 0xf9, + 0x4a, 0x17, 0xf5, 0xdd, 0x39, 0xec, 0xf3, 0x0c, + 0x8c, 0x30, 0x6c, 0xd7, 0x4c, 0x54, 0x81, 0x22, + 0x99, 0xb7, 0xf3, 0xc9, 0xae, 0x45, 0x99, 0x92, + 0x87, 0xf5, 0x50, 0x04, 0xa5, 0x48, 0x76, 0xbb, + 0xca, 0xf3, 0xe1, 0x5a, 0x93, 0xf4, 0x49, 0x54, + 0xf1, 0x95, 0x06, 0xe6, 0xb0, 0x19, 0xf6, 0x08, + 0x4d, 0x7b, 0x7d, 0x6f, 0xdc, 0x8f, 0x3a, 0x7d, + 0xc0, 0x0e, 0xa4, 0xef, 0x36, 0x66, 0x9a, 0x9d, + 0x75, 0xe8, 0x48, 0x08, 0xfa, 0x8a, 0x58, 0x51, + 0xc0, 0x6f, 0x85, 0x23, 0x45, 0x7f, 0x75, 0xd6, + 0xca, 0xc6, 0x18, 0x20, 0x46, 0x5e, 0x3f, 0x1a, + 0x44, 0x0e, 0xf1, 0x77, 0x5f, 0xdd, 0xff, 0xa9, + 0x90, 0x3f, 0x64, 0x14, 0xee, 0x5e, 0x6c, 0xf9, + 0x04, 0x2b, 0xbc, 0xd5, 0xad, 0x80, 0x44, 0xc5, + 0x64, 0x81, 0x9c, 0xbf, 0x4b, 0x84, 0x6b, 0xff, + 0x42, 0x2a, 0xca, 0xdb, 0x77, 0x0c, 0xcb, 0x96, + 0x1a, 0xa7, 0xfb, 0xa1, 0x25, 0x34, 0x25, 0x43, + 0x9b, 0x0f, 0x08, 0x48, 0xc0, 0x9f, 0xe8, 0xb3, + 0x1d, 0x49, 0x12, 0x12, 0xdd, 0xa1, 0xea, 0x67, + 0xbf, 0x4b, 0x13, 0x6a, 0x48, 0xc2, 0x72, 0x3d, + 0x25, 0xc9, 0x1e, 0x29, 0x0d, 0xf9, 0x9f, 0x1a, + 0xfa, 0x2f, 0x17, 0x2e, 0x99, 0xc7, 0x2c, 0x88, + 0xf1, 0x42, 0x80, 0x97, 0xfb, 0x9f, 0xd3, 0x50, + 0xf9, 0xe9, 0x3f, 0xb4, 0x5a, 0xcb, 0xc8, 0x4d, + 0xf8, 0x16, 0xd0, 0x50, 0x71, 0xbc, 0xc0, 0x00, + 0xeb, 0xbf, 0x27, 0x20, 0x45, 0x40, 0x33, 0xb0, + 0xdf, 0x8a, 0x56, 0xb0, 0x5a, 0xb8, 0x7c, 0xbe, + 0x2c, 0xb2, 0xd4, 0xd6, 0x03, 0x98, 0x74, 0x7e, + 0xac, 0xba, 0x46, 0x4b, 0x7b, 0x5a, 0x31, 0x2f, + 0xfc, 0x34, 0xdc, 0x1a, 0x9f, 0x99, 0x81, 0xee, + 0x6f, 0x19, 0xb1, 0x88, 0xfd, 0x4c, 0x88, 0x3b, + 0x8d, 0xfd, 0xb8, 0x3f, 0xbd, 0xb4, 0xba, 0x52, + 0x34, 0x75, 0x29, 0x2b, 0x79, 0x7d, 0x62, 0x80, + 0xaf, 0x61, 0x67, 0x72, 0x06, 0x0a, 0x50, 0xfd, + 0xd7, 0xd5, 0xed, 0x97, 0x6f, 0x0d, 0x94, 0x8a, + 0x91, 0xac, 0xaa, 0xd2, 0x2a, 0x2f, 0xe9, 0x79, + 0x47, 0xc3, 0x1f, 0xcf, 0xcb, 0x6b, 0xc4, 0xd3, + 0x9c, 0x9d, 0xf2, 0x9b, 0xac, 0x8a, 0xbe, 0xd3, + 0x28, 0x56, 0xb6, 0xaa, 0xd0, 0x83, 0x62, 0x8f, + 0xea, 0xbd, 0x8f, 0x52, 0x4d, 0xd4, 0x88, 0x2c, + 0x2c, 0x8d, 0x09, 0x8c, 0xb4, 0xeb, 0xe8, 0x3c, + 0x0c, 0xc1, 0x9c, 0xa8, 0x70, 0x63, 0xe4, 0xaa, + 0x21, 0x80, 0xf9, 0x2b, 0xaf, 0x2a, 0xdd, 0xf0, + 0xe1, 0x04, 0x05, 0xe2, 0x8c, 0x12, 0x78, 0xed, + 0x57, 0x46, 0x16, 0xcc, 0xb8, 0xbb, 0x36, 0x54, + 0x66, 0xb6, 0x22, 0x81, 0x88, 0xfc, 0x42, 0x92, + 0xca, 0xd5, 0xeb, 0x66, 0x13, 0x7a, 0xd1, 0x33, + 0xc4, 0xcd, 0xfb, 0xe0, 0x8b, 0xc4, 0x90, 0x9f, + 0xc5, 0xb9, 0xff, 0xb9, 0xbb, 0x41, 0x72, 0x2e, + 0x7d, 0xcc, 0x91, 0x76, 0x1b, 0xdd, 0x40, 0xf3, + 0xd3, 0xef, 0x80, 0xfb, 0xee, 0x60, 0x33, 0xad, + 0x89, 0x64, 0xae, 0x30, 0x41, 0xe0, 0x93, 0x6c, + 0x52, 0xe1, 0x13, 0x8d, 0xb9, 0x22, 0x25, 0x0d, + 0xbb, 0x6a, 0x9a, 0x91, 0xf3, 0xe8, 0x2c, 0x96, + 0xd5, 0xf7, 0xa9, 0x54, 0x86, 0xbf, 0xb0, 0x8b, + 0xf3, 0x6d, 0x9a, 0x9c, 0x5d, 0xbd, 0x82, 0x1f, + 0xdc, 0x73, 0xb6, 0xa0, 0xe5, 0x9e, 0x4d, 0x7d, + 0xb4, 0x4d, 0xbf, 0xe6, 0xed, 0xc5, 0xd4, 0x58, + 0x48, 0x93, 0xe9, 0x9a, 0x8d, 0x09, 0xd4, 0xfa, + 0x6a, 0xfe, 0x5c, 0x2a, 0x11, 0x46, 0x71, 0x61, + 0xbc, 0x4f, 0x48, 0x23, 0x8c, 0x12, 0x67, 0xf2, + 0x29, 0x25, 0x93, 0x1f, 0xb5, 0x7b, 0x15, 0x39, + 0xad, 0x58, 0xb5, 0x10, 0xbe, 0xc6, 0xe3, 0x2d, + 0x71, 0xaf, 0xcd, 0xa0, 0x68, 0xd7, 0x8b, 0x71, + 0x48, 0x9f, 0x3d, 0x8a, 0x0a, 0x8e, 0xb7, 0xc7, + 0x1a, 0xbd, 0x5e, 0x66, 0x1d, 0x03, 0x61, 0xf4, + 0xd1, 0xc2, 0xf1, 0xaf, 0x50, 0x93, 0x44, 0x74, + 0x4c, 0x6e, 0x83, 0x9b, 0xa6, 0x19, 0x1a, 0x2e, + 0xa3, 0xa5, 0xef, 0x0c, 0xc6, 0x71, 0x49, 0x0d, + 0x56, 0xe6, 0xd4, 0x7b, 0x16, 0x8f, 0xe4, 0x5b, + 0x78, 0x75, 0x7a, 0xe0, 0x4f, 0xe8, 0x40, 0x97, + 0x9a, 0xc5, 0x95, 0x74, 0x29, 0xda, 0xfa, 0x32, + 0xfb, 0x9e, 0xfa, 0x78, 0x90, 0x76, 0xb0, 0x1c, + 0xcd, 0xa9, 0x67, 0x92, 0x58, 0xf2, 0xcf, 0xc6, + 0x9b, 0xaf, 0x2e, 0xfd, 0x6f, 0x1f, 0x13, 0xbc, + 0x18, 0xd4, 0xdb, 0x1b, 0x8d, 0xcf, 0x38, 0xd7, + 0xc9, 0x52, 0xd2, 0x33, 0xe2, 0xf1, 0xe2, 0x7c, + 0x98, 0x7f, 0xfe, 0x44, 0xe7, 0x1d, 0xe3, 0x23, + 0x95, 0xf1, 0x6d, 0xe9, 0xf9, 0x72, 0x3f, 0x8c, + 0xb7, 0xdb, 0x2e, 0xb7, 0x4e, 0x33, 0xd0, 0x87, + 0x78, 0x30, 0xb9, 0x41, 0xcf, 0x92, 0x8d, 0xbc, + 0xe6, 0x4e, 0x7f, 0x52, 0x5f, 0x45, 0x4c, 0x44, + 0x2b, 0xd2, 0xa4, 0x3c, 0xb0, 0x20, 0x88, 0xf2, + 0x59, 0xfc, 0xfb, 0x1f, 0xaf, 0x3e, 0x80, 0xa7, + 0xb7, 0x12, 0x0a, 0x5b, 0xc8, 0x0d, 0x17, 0x98, + 0x25, 0x36, 0x01, 0x4b, 0xd8, 0x03, 0x7b, 0x84, + 0xc5, 0x75, 0xa9, 0x16, 0x90, 0xc8, 0x5a, 0x25, + 0xed, 0xf8, 0x5b, 0x89, 0x54, 0x2d, 0xbd, 0x46, + 0xf6, 0xc2, 0xf1, 0x39, 0xdc, 0x29, 0x11, 0x37, + 0x84, 0xc5, 0x91, 0xd2, 0x4c, 0xf6, 0x27, 0x94, + 0x4a, 0xdc, 0x82, 0xc5, 0x95, 0xd5, 0xc3, 0x41, + 0xad, 0x1c, 0xcd, 0xeb, 0xfe, 0x6f, 0x16, 0xef, + 0x5e, 0x65, 0x1d, 0x7a, 0xa0, 0xc9, 0xed, 0xa9, + 0xcd, 0x31, 0xec, 0x64, 0x74, 0xb3, 0x25, 0x6d, + 0xb3, 0xea, 0x0f, 0xa7, 0xf5, 0x7d, 0x88, 0xe9, + 0xc3, 0x37, 0x29, 0x88, 0xcf, 0x05, 0x7d, 0xee, + 0xc0, 0x2a, 0x30, 0x5f, 0x9f, 0xf9, 0xa6, 0x6b, + 0xa7, 0x6a, 0x3d, 0xe8, 0xfa, 0x3c, 0xe1, 0x45, + 0x57, 0x4f, 0x27, 0xb6, 0x28, 0x60, 0xc0, 0xad, + 0x3d, 0x54, 0x07, 0x53, 0x81, 0x10, 0x64, 0xad, + 0x22, 0x61, 0x4b, 0xbf, 0xe6, 0xe7, 0x10, 0xe4, + 0xe7, 0x46, 0x58, 0x0e, 0x40, 0x53, 0x5d, 0x96, + 0x51, 0xf8, 0x9f, 0xa6, 0xfa, 0xa0, 0xe3, 0xc2, + 0xa5, 0x36, 0x4c, 0x7a, 0x71, 0x53, 0xa9, 0x36, + 0xf6, 0xf2, 0xa3, 0xba, 0x60, 0x7b, 0x5b, 0x11, + 0xd2, 0x39, 0x20, 0xeb, 0x09, 0x68, 0x4a, 0x1b, + 0xe4, 0x31, 0xa5, 0xc9, 0xc9, 0xe5, 0xf4, 0x47, + 0x5e, 0x26, 0x30, 0xf1, 0x83, 0x39, 0xa5, 0x4c, + 0xa0, 0x72, 0x68, 0x8f, 0x4b, 0xd6, 0x64, 0x4c, + 0xf5, 0x34, 0x74, 0x3d, 0x0c, 0x76, 0x10, 0xf4, + 0x84, 0x5c, 0x9c, 0xbe, 0xe8, 0xe6, 0x24, 0x19, + 0x4e, 0x34, 0x0a, 0x7a, 0x5d, 0x37, 0xae, 0xec, + 0x2e, 0xf6, 0x05, 0x4a, 0x13, 0xf0, 0xc3, 0xb1, + 0xd0, 0x41, 0xde, 0x5b, 0xcf, 0x86, 0xcc, 0xfc, + 0xda, 0xa9, 0x31, 0x26, 0x09, 0xc3, 0x85, 0xe8, + 0xd1, 0xa1, 0x39, 0x29, 0x73, 0xa9, 0xa7, 0x26, + 0xda, 0x93, 0x4b, 0x1c, 0x41, 0xaf, 0x82, 0x9c, + 0xa6, 0x05, 0x85, 0x93, 0x13, 0x60, 0x78, 0x54, + 0x26, 0x11, 0x22, 0xc3, 0x4a, 0xde, 0x20, 0x54, + 0xf4, 0x56, 0xc8, 0xc1, 0x09, 0x47, 0xfb, 0x47, + 0x3e, 0x5c, 0x4c, 0x6e, 0xab, 0x9e, 0x22, 0x67, + 0x4a, 0x80, 0xd7, 0x54, 0x8d, 0xdd, 0x57, 0x89, + 0x77, 0xba, 0x96, 0x84, 0x73, 0x6d, 0x29, 0xa5, + 0x73, 0x24, 0x3a, 0x54, 0x61, 0x5e, 0x80, 0xf7, + 0x65, 0x41, 0x56, 0x32, 0x57, 0xb4, 0xb8, 0x22, + 0x91, 0xef, 0xfd, 0x66, 0x12, 0x61, 0x84, 0xd9, + 0x7d, 0x14, 0xa9, 0xd0, 0xf3, 0x82, 0xec, 0xf0, + 0x91, 0x79, 0x70, 0xaa, 0xe3, 0x08, 0x5f, 0xc8, + 0x3e, 0xc3, 0x4f, 0x51, 0xb3, 0x1c, 0x55, 0x34, + 0xea, 0x8c, 0x9b, 0x70, 0xd5, 0xae, 0x95, 0xd8, + 0xf5, 0x73, 0x47, 0x9d, 0xbf, 0x7f, 0xab, 0xe1, + 0x2a, 0x26, 0x4c, 0x0c, 0x1b, 0xab, 0x09, 0xae, + 0x14, 0x14, 0x96, 0x7c, 0x61, 0xc0, 0xd1, 0x3f, + 0xe0, 0x6c, 0x29, 0x7a, 0x13, 0x82, 0x3a, 0x10, + 0xca, 0x79, 0xa1, 0x69, 0xb5, 0xe4, 0x12, 0x8f, + 0x88, 0x91, 0x89, 0x4c, 0x49, 0xbb, 0x21, 0xba, + 0xca, 0xd0, 0x38, 0xf2, 0x91, 0xed, 0x49, 0x6a, + 0x59, 0xa7, 0x74, 0x87, 0xa1, 0x6e, 0x47, 0x18, + 0x2d, 0xbe, 0xcf, 0x41, 0x3a, 0x07, 0x9e, 0xb8, + 0x2b, 0xf9, 0x93, 0xd6, 0xd1, 0x06, 0xa6, 0xa4, + 0x3f, 0xef, 0x1e, 0xba, 0x3f, 0xf7, 0x3d, 0xe2, + 0x3d, 0xf9, 0xa9, 0x20, 0xa5, 0x81, 0x2a, 0x3f, + 0xb3, 0xbd, 0xdd, 0xae, 0x3f, 0xb5, 0xf7, 0xdd, + 0x47, 0x9c, 0x57, 0x2d, 0xa9, 0xd1, 0x5d, 0x61, + 0xaa, 0xd6, 0xca, 0x32, 0x35, 0x68, 0x69, 0xdb, + 0xed, 0xb4, 0xd8, 0x2e, 0xc8, 0x41, 0x7e, 0x79, + 0xad, 0xd0, 0xca, 0x2b, 0xa3, 0x2c, 0x9d, 0x16, + 0x13, 0x79, 0x8c, 0x30, 0x01, 0xf4, 0x33, 0x48, + 0x4a, 0x09, 0xa3, 0xaa, 0xd1, 0x75, 0xfc, 0xc7, + 0xac, 0x43, 0xc1, 0xd7, 0xcf, 0x90, 0x91, 0x90, + 0x24, 0x5a, 0x8b, 0xfd, 0xff, 0x1a, 0x8e, 0xa0, + 0x25, 0xb7, 0x28, 0x8c, 0x21, 0x96, 0x25, 0x12, + 0xe3, 0x9a, 0x19, 0xe4, 0x1a, 0x50, 0x2c, 0x9b, + 0x48, 0x3b, 0xc9, 0x82, 0xc9, 0x29, 0xdc, 0x4d, + 0x0c, 0xb6, 0x5d, 0x2e, 0xc1, 0xc8, 0x5a, 0xdd, + 0x39, 0x97, 0x4c, 0xce, 0xea, 0x33, 0x95, 0xa5, + 0x86, 0x5e, 0x1b, 0x21, 0xf1, 0x73, 0x58, 0xe7, + 0x28, 0x13, 0xca, 0x9d, 0xd9, 0x7a, 0xe8, 0x94, + 0x56, 0xd3, 0x35, 0xfe, 0x18, 0x4a, 0x91, 0x6e, + 0x99, 0x83, 0xac, 0x9f, 0x99, 0x0b, 0xbd, 0xf3, + 0xbf, 0x0e, 0x3d, 0xf6, 0xcd, 0x9f, 0xfc, 0x80, + 0x9d, 0x72, 0x7f, 0x60, 0xd2, 0xf6, 0x1e, 0xa6, + 0x0f, 0xeb, 0xa7, 0xee, 0xe3, 0x8d, 0x56, 0xf8, + 0x20, 0x76, 0xcf, 0x7e, 0xf9, 0x5d, 0x06, 0x08, + 0xe0, 0xcb, 0xf0, 0x89, 0xfc, 0x39, 0x54, 0x60, + 0x4f, 0x92, 0xfd, 0x04, 0xab, 0xa6, 0x6e, 0x63, + 0x44, 0xab, 0xc3, 0x70, 0x1b, 0x57, 0x01, 0x79, + 0x88, 0x5e, 0xc0, 0x25, 0xc8, 0xe1, 0x03, 0xdd, + 0x0f, 0x61, 0x2b, 0x50, 0x13, 0x84, 0x02, 0x79, + 0x3a, 0x89, 0x16, 0x08, 0x34, 0x3e, 0x76, 0xf7, + 0x4f, 0xbc, 0x9e, 0xfb, 0xb5, 0x81, 0xc4, 0xda, + 0x95, 0x8b, 0x33, 0x92, 0x49, 0x86, 0x02, 0x44, + 0x8d, 0x60, 0x74, 0x77, 0x5c, 0x6d, 0xcc, 0x0d, + 0x67, 0xbe, 0x6e, 0x4a, 0xd9, 0x8c, 0xdd, 0x09, + 0x7d, 0x90, 0x15, 0x2b, 0x6f, 0x7a, 0xca, 0x2d, + 0x91, 0x74, 0x08, 0xd5, 0x38, 0xb4, 0xcb, 0xd3, + 0xd5, 0x66, 0x2b, 0x2c, 0x98, 0xd1, 0x1f, 0x40, + 0x06, 0x94, 0x83, 0x3c, 0xe4, 0x95, 0x59, 0x8c, + 0xcb, 0x5d, 0x1f, 0x2f, 0xd1, 0x28, 0x26, 0xd5, + 0x41, 0x42, 0x89, 0x60, 0xdc, 0xfb, 0xba, 0x40, + 0x99, 0xe8, 0xa1, 0x99, 0xd4, 0x97, 0x05, 0xf1, + 0xf4, 0x68, 0xa7, 0x95, 0x9b, 0x46, 0xbe, 0x3a, + 0xa2, 0x38, 0x81, 0x1d, 0x3f, 0xa3, 0x39, 0x20, + 0xa1, 0x1a, 0x3c, 0x59, 0x1d, 0x34, 0x77, 0xd0, + 0x8b, 0xb9, 0x49, 0x7d, 0xba, 0x8f, 0x97, 0x27, + 0x1c, 0xbe, 0xf5, 0x9b, 0x4b, 0x88, 0x87, 0x1b, + 0xd8, 0xbe, 0x6e, 0x41, 0xd3, 0x54, 0x9a, 0xe3, + 0x52, 0x05, 0xe2, 0x01, 0x18, 0x31, 0xd2, 0xe2, + 0x2e, 0xdd, 0x85, 0xd3, 0x2c, 0xe0, 0x07, 0xed, + 0xa8, 0x0e, 0xc3, 0x0d, 0x83, 0x01, 0xa6, 0xcd, + 0x0d, 0x50, 0xde, 0xb6, 0x6b, 0xf7, 0x59, 0x3f, + 0xb7, 0x26, 0x4f, 0x55, 0x4d, 0xd8, 0x34, 0x39, + 0xef, 0x47, 0x7d, 0x6c, 0x8c, 0x2e, 0xfb, 0x67, + 0x49, 0x61, 0x5b, 0x33, 0x9d, 0xe2, 0x94, 0xb7, + 0x76, 0x80, 0x1f, 0xed, 0x73, 0xc7, 0xf6, 0xab, + 0xc0, 0x77, 0x59, 0x10, 0x49, 0xe6, 0x59, 0x09, + 0xf6, 0xb0, 0x07, 0x09, 0x87, 0x54, 0xe5, 0x0b, + 0x0e, 0x73, 0x2b, 0xed, 0xba, 0xcf, 0xb1, 0xc5, + 0xa0, 0xf3, 0x24, 0x9a, 0xc2, 0x56, 0x70, 0xf3, + 0xb6, 0x92, 0xab, 0x91, 0x3a, 0x54, 0x8a, 0x5b, + 0x9e, 0x93, 0x3f, 0x12, 0x22, 0xa5, 0xa5, 0x52, + 0xb3, 0xbf, 0x83, 0x58, 0x96, 0x90, 0x93, 0xd1, + 0x9f, 0xaf, 0x0a, 0x22, 0x04, 0x6f, 0x23, 0xa3, + 0x3d, 0x65, 0x98, 0xd4, 0xbd, 0x61, 0xe3, 0xd8, + 0x44, 0x6b, 0xc7, 0xe9, 0xcc, 0x8f, 0xbb, 0x55, + 0x8f, 0x33, 0xce, 0xfe, 0x76, 0xff, 0x42, 0x6d, + 0xe4, 0xfa, 0xca, 0x87, 0x99, 0x5b, 0x68, 0x93, + 0xff, 0x0f, 0xba, 0xd7, 0x6d, 0x1d, 0x17, 0xd8, + 0x9e, 0xd2, 0x69, 0x70, 0x25, 0x4f, 0x3a, 0xa8, + 0xd0, 0x0d, 0xea, 0xdd, 0x0f, 0xc5, 0xa3, 0x13, + 0x72, 0xb8, 0x5a, 0x91, 0xb6, 0x47, 0xf3, 0xd4, + 0x4a, 0xf8, 0xa1, 0xe9, 0xa7, 0x11, 0xc0, 0xba, + 0xc5, 0x1d, 0xbb, 0xcf, 0x98, 0x19, 0x56, 0x7c, + 0xde, 0xe4, 0x01, 0xbc, 0x0b, 0xe0, 0x3b, 0x43, + 0xb2, 0x7d, 0x8c, 0x67, 0x1c, 0x2d, 0xdf, 0xb2, + 0xf8, 0xcc, 0x7b, 0xdd, 0x45, 0x6c, 0x6f, 0xfb, + 0x6d, 0xaf, 0xc6, 0x20, 0xaa, 0x25, 0xb7, 0xf9, + 0x94, 0x48, 0xaf, 0x45, 0x96, 0x2a, 0x78, 0x78, + 0x62, 0x8a, 0x23, 0xb5, 0x7d, 0x37, 0x98, 0xfd, + 0x5d, 0x96, 0x50, 0x2f, 0x2c, 0x4b, 0x45, 0xa3, + 0xf1, 0xaa, 0x2d, 0x92, 0x6d, 0xa8, 0xd1, 0x6b, + 0x41, 0x53, 0x37, 0xff, 0x06, 0xfd, 0x8f, 0x57, + 0xe9, 0x30, 0x05, 0x52, 0x64, 0xa9, 0x91, 0x8a, + 0x33, 0xec, 0x62, 0xcd, 0x61, 0xae, 0x3c, 0x32, + 0x57, 0x3e, 0xe4, 0x86, 0xdf, 0xb8, 0x0e, 0x7b, + 0x07, 0x2c, 0xaf, 0x9f, 0xcc, 0x15, 0xe0, 0x67, + 0x65, 0xab, 0x85, 0x86, 0x7e, 0x00, 0x6a, 0x2f, + 0x62, 0x52, 0xfa, 0x2f, 0x37, 0x8d, 0x38, 0x55, + 0x40, 0x9d, 0x6c, 0x01, 0x7c, 0x0b, 0x93, 0x20, + 0x60, 0x69, 0x9d, 0x6e, 0xc9, 0x4d, 0xe5, 0x62, + 0x4b, 0x94, 0xe4, 0x05, 0x26, 0x46, 0x37, 0xd8, + 0x3f, 0xd7, 0x16, 0x35, 0x45, 0x88, 0x4c, 0xad, + 0x6a, 0xa6, 0xb2, 0x1b, 0x63, 0x9a, 0x3e, 0xfc, + 0x69, 0xdd, 0xbb, 0x5b, 0xf4, 0xf3, 0xa1, 0x8c, + 0xba, 0xd5, 0xef, 0x6a, 0xf0, 0x97, 0x2f, 0x20, + 0x79, 0xdf, 0x11, 0x2c, 0x75, 0xab, 0x0d, 0x22, + 0xaa, 0x6e, 0x8a, 0x59, 0x5e, 0x0c, 0x88, 0xe5, + 0x1c, 0x4b, 0x6e, 0x1a, 0x5c, 0xa8, 0xe7, 0x36, + 0xc9, 0x6a, 0x49, 0x85, 0xe0, 0x06, 0xa8, 0xaa, + 0xed, 0x87, 0x29, 0x28, 0x0a, 0x40, 0xce, 0xdb, + 0x78, 0xc6, 0x65, 0x26, 0x4d, 0x13, 0xdb, 0x89, + 0xf9, 0x04, 0xdd, 0x58, 0x92, 0x8c, 0x5f, 0xad, + 0x02, 0xee, 0xe9, 0xaa, 0x97, 0x6b, 0xf8, 0x77, + 0x15, 0x7c, 0xb4, 0xa8, 0x30, 0x12, 0x8e, 0xbb, + 0x4e, 0xc2, 0x19, 0x14, 0x0e, 0x0c, 0xc9, 0x5d, + 0xc4, 0x47, 0x30, 0xe4, 0x85, 0x71, 0x98, 0x52, + 0x53, 0x55, 0x6c, 0x11, 0x8b, 0xbd, 0x12, 0x77, + 0xe9, 0x84, 0xd2, 0x5b, 0x17, 0x90, 0x24, 0xae, + 0x7c, 0xc8, 0xf9, 0xdf, 0xd0, 0x98, 0xe6, 0x6c, + 0xe8, 0xac, 0xeb, 0x53, 0x1b, 0x58, 0x97, 0xa0, + 0xc4, 0x4c, 0xfb, 0x47, 0xb6, 0x1d, 0x7a, 0x59, + 0x42, 0x28, 0xb4, 0xdb, 0x87, 0x84, 0x93, 0xde, + 0x18, 0xd8, 0xe3, 0x4e, 0xe6, 0xcf, 0xe0, 0x7e, + 0x09, 0xe1, 0x82, 0x40, 0x5d, 0x51, 0x80, 0x75, + 0x50, 0x88, 0xef, 0x99, 0xbd, 0x41, 0xd3, 0x8e, + 0xe9, 0x96, 0xdd, 0x97, 0x55, 0xe0, 0xbc, 0x5d, + 0xba, 0xda, 0x0b, 0x15, 0xb3, 0x98, 0x86, 0x99, + 0xd7, 0xba, 0xaf, 0x5d, 0xb7, 0x84, 0xe3, 0xde, + 0x47, 0xca, 0xff, 0xc8, 0x14, 0xbe, 0x1a, 0xc5, + 0xd9, 0x8a, 0xcb, 0xd6, 0x0b, 0xe5, 0x9d, 0xe8, + 0xf9, 0x5e, 0x78, 0xec, 0xa6, 0xbd, 0x72, 0xd7, + 0xc0, 0x33, 0xf7, 0xfa, 0xc1, 0x33, 0x3a, 0x9b, + 0x11, 0xd8, 0x02, 0x8c, 0xd0, 0xe8, 0x37, 0xb8, + 0x25, 0xe3, 0x97, 0x24, 0x2e, 0x29, 0x41, 0x83, + 0xee, 0x4a, 0x22, 0x00, 0x7c, 0xc1, 0x4c, 0xf5, + 0xe5, 0xac, 0xf7, 0x6b, 0xa9, 0x93, 0x76, 0x37, + 0x52, 0x9b, 0xfe, 0xb9, 0x2f, 0xe9, 0xc9, 0xe2, + 0xaa, 0xcc, 0x72, 0x7a, 0xab, 0xd4, 0x23, 0x0b, + 0x0c, 0xc9, 0x63, 0x4c, 0x02, 0x3e, 0x38, 0x58, + 0x4e, 0xea, 0xdc, 0xeb, 0xbd, 0x7c, 0xb7, 0xfd, + 0xf8, 0x99, 0x2b, 0x0b, 0x72, 0x8b, 0x44, 0x6d, + 0x3b, 0xe8, 0x97, 0xf2, 0xa1, 0xbf, 0x4e, 0x93, + 0xf0, 0x64, 0x16, 0x4d, 0x39, 0xf8, 0x72, 0xe7, + 0x73, 0x2e, 0xbc, 0x08, 0x0f, 0x42, 0x7e, 0x30, + 0xb8, 0xbf, 0x75, 0xed, 0x00, 0x50, 0x9f, 0x81, + 0x13, 0x3b, 0xc9, 0x33, 0x4d, 0xf9, 0x7e, 0x8b, + 0x5c, 0xd8, 0x7c, 0xe4, 0x0d, 0x95, 0x63, 0x28, + 0x59, 0x68, 0x97, 0x02, 0x0c, 0x1e, 0x57, 0xa6, + 0x0b, 0x24, 0x3e, 0x70, 0x8e, 0x94, 0x9a, 0xd4, + 0x43, 0xb1, 0xb6, 0xcd, 0xf8, 0xff, 0x35, 0x46, + 0x6c, 0x77, 0xb6, 0xbe, 0xc8, 0x7b, 0xb0, 0xc1, + 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x08, 0x10, 0x16, 0x1d, 0x21, }, + }, diff --git a/crypto/ml_dsa/dilithium_selftest.c b/crypto/ml_dsa/dilithium_s= elftest.c index 60955f4021dd..5179adbce99a 100644 --- a/crypto/ml_dsa/dilithium_selftest.c +++ b/crypto/ml_dsa/dilithium_selftest.c @@ -35,6 +35,9 @@ struct dilithium_testvector { static const struct dilithium_testvector dilithium44_testvectors[] =3D { #include "dilithium_pure_rejection_vectors_44.h" }; +static const struct dilithium_testvector dilithium65_testvectors[] =3D { +#include "dilithium_pure_rejection_vectors_65.h" +}; =20 /* * Allow kunit to free a crypto signature processing object. @@ -99,8 +102,20 @@ static void dilithium44_kunit_test(struct kunit *test) KUNIT_SUCCEED(test); } =20 +static void dilithium65_kunit_test(struct kunit *test) +{ + const struct dilithium_testvector *tc =3D dilithium65_testvectors; + int count =3D ARRAY_SIZE(dilithium65_testvectors); + + for (int index =3D 0; index < count; index++) + dilithium_sigver_test_one(test, index, &tc[index]); + + KUNIT_SUCCEED(test); +} + static struct kunit_case __refdata dilithium_kunit_cases[] =3D { KUNIT_CASE(dilithium44_kunit_test), + KUNIT_CASE(dilithium65_kunit_test), {} }; From nobody Fri Dec 19 17:16:03 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7B2DD3451BA for ; Thu, 6 Nov 2025 17:45:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451169; cv=none; b=OS1lET38GbrY8iFpxMRkzEm/ZhTFFHD8nixApKX+n0JCELoaYi/UMlwTwaq2Tl+Ep2SAgD3F2dLvFnyQn5vHeYWo2cDyw84KgOVopLt7NiKDsRBznYuz5XfNXvHay6REfDYxAyzK12DLBIC8wZEBRjd8irb2My8OCAa5O0pRRds= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451169; c=relaxed/simple; bh=78CIWmIyZsHPBvTiMJM83W+m8e80AMfB77hlupRsWf4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jZ/MsGH9q2l4wEvzBELk/1p2uswlw7Owp15tCnAI1Ir8sclwVtg+tZG4z6okeC9Q2LpBVwWK6/Qfg1bf/qANPZPlW8BgpOxdRTjkqNUnKtKdd/2KDVaKjNVvkdKSpEyWBkzkGZJZCtrR73Hnv/8vvW+Z8a2sf8moEdhW/2ZZwuY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=bZTj/ttm; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="bZTj/ttm" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762451143; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rH3PM2hwDjlcnbDh1LrGvt2pTPEIjxKNrAjcEobzZR8=; b=bZTj/ttmWF6RrHWrAeK9ejlnDUOK3U78/IUIa0z1q1vlNlnNT7ejIUkPVOhDmiWSyThVhu 8j4bKzW+hyDdo8VNmBsaFGdc9dlayWHjOywXaaQ/UzbHWZ28H7Ae0V/myTuPjgMrTqax/+ ElaP5Okqtxl0dAXFnjacOZXl28PV/Hs= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-378-QPlsdd2XOcWDTG3SSI6GAw-1; Thu, 06 Nov 2025 12:45:34 -0500 X-MC-Unique: QPlsdd2XOcWDTG3SSI6GAw-1 X-Mimecast-MFC-AGG-ID: QPlsdd2XOcWDTG3SSI6GAw_1762451132 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B408A1956089; Thu, 6 Nov 2025 17:45:32 +0000 (UTC) Received: from warthog.procyon.org.com (unknown [10.42.28.6]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 46A6F3001E83; Thu, 6 Nov 2025 17:45:28 +0000 (UTC) From: David Howells To: Herbert Xu Cc: David Howells , Eric Biggers , Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , "Jason A . Donenfeld" , Ard Biesheuvel , Stephan Mueller , Lukas Wunner , Ignat Korchagin , linux-crypto@vger.kernel.org, keyrings@vger.kernel.org, linux-modules@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 5/8] crypto: Add ML-DSA-87 pure rejection test vectors as a kunit test Date: Thu, 6 Nov 2025 17:44:49 +0000 Message-ID: <20251106174456.31818-6-dhowells@redhat.com> In-Reply-To: <20251106174456.31818-1-dhowells@redhat.com> References: <20251106174456.31818-1-dhowells@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Content-Type: text/plain; charset="utf-8" Add the "Pure rejection tests" from Stephan Mueller's Leancrypto implementation of ML-DSA/Dilithium 87 to the kernel as a kunit test. Signed-off-by: David Howells cc: Stephan Mueller cc: Eric Biggers cc: Jason A. Donenfeld cc: Ard Biesheuvel cc: Herbert Xu cc: linux-crypto@vger.kernel.org --- .../dilithium_pure_rejection_vectors_87.h | 6456 +++++++++++++++++ crypto/ml_dsa/dilithium_selftest.c | 15 + 2 files changed, 6471 insertions(+) create mode 100644 crypto/ml_dsa/dilithium_pure_rejection_vectors_87.h diff --git a/crypto/ml_dsa/dilithium_pure_rejection_vectors_87.h b/crypto/m= l_dsa/dilithium_pure_rejection_vectors_87.h new file mode 100644 index 000000000000..69f2bf321293 --- /dev/null +++ b/crypto/ml_dsa/dilithium_pure_rejection_vectors_87.h @@ -0,0 +1,6456 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ + { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa87", + .pk_len =3D DILITHIUM87_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM87_PUBLICKEYBYTES]){ + 0xd4, 0x9d, 0xdc, 0x3d, 0xa4, 0xa5, 0x87, 0xa5, + 0x54, 0x61, 0xf3, 0xf4, 0xe0, 0x11, 0xc9, 0x1c, + 0x78, 0x0a, 0xf1, 0x8a, 0xa8, 0xb2, 0xff, 0xb2, + 0x9a, 0x2c, 0xe0, 0x86, 0x5c, 0xaa, 0x86, 0xe0, + 0xd9, 0x42, 0x54, 0x18, 0x3e, 0x4c, 0x96, 0x1a, + 0xb4, 0xc7, 0x18, 0xcf, 0x7d, 0xca, 0xe2, 0x74, + 0x6c, 0x81, 0x3e, 0xcb, 0xf8, 0x7b, 0xc4, 0x90, + 0x50, 0xd5, 0xe8, 0xd3, 0xbc, 0x8b, 0xa8, 0x3e, + 0xb0, 0x96, 0x65, 0xd7, 0xbb, 0xa9, 0xab, 0x9c, + 0x82, 0x5e, 0x6e, 0x8d, 0xf8, 0xc3, 0x6d, 0xe9, + 0xbf, 0xbd, 0x30, 0xc9, 0xca, 0x47, 0x85, 0xae, + 0x6f, 0x5d, 0x09, 0x4d, 0xd7, 0xdd, 0x05, 0x51, + 0xe0, 0x9e, 0x94, 0x3b, 0x1d, 0xfa, 0x30, 0x57, + 0xdc, 0x58, 0x48, 0xe5, 0x45, 0xf3, 0x34, 0x8a, + 0x73, 0x66, 0x8a, 0xe0, 0x62, 0x3d, 0x0d, 0xfb, + 0x13, 0x52, 0x25, 0xf5, 0xd3, 0x94, 0x15, 0x9d, + 0xac, 0x6a, 0x74, 0x8a, 0x64, 0x91, 0x5b, 0xa3, + 0xe2, 0xd0, 0x5c, 0xd2, 0xee, 0x52, 0xc0, 0x0c, + 0x6c, 0x81, 0x34, 0x94, 0xfb, 0x87, 0xf6, 0x6b, + 0x0f, 0x7e, 0x99, 0xa7, 0xaf, 0xb3, 0x74, 0xa7, + 0xb6, 0x64, 0xd7, 0x36, 0x39, 0x3f, 0x7d, 0x0e, + 0xc3, 0x76, 0xb3, 0x3a, 0xc9, 0x94, 0x6f, 0xc0, + 0xaa, 0x92, 0x2a, 0xf1, 0x38, 0x8c, 0x62, 0xa1, + 0x9a, 0xbe, 0x8d, 0x32, 0xec, 0x05, 0xb9, 0x8d, + 0xb0, 0xdb, 0x37, 0x8d, 0x61, 0xfa, 0x79, 0x55, + 0x1d, 0xf2, 0xc3, 0x19, 0x15, 0x3b, 0x26, 0xef, + 0xe5, 0xf3, 0x29, 0xa1, 0x13, 0x60, 0x68, 0xd3, + 0x22, 0x57, 0xcd, 0x99, 0xe6, 0x22, 0x54, 0xdf, + 0x02, 0xe4, 0xd5, 0xd2, 0x66, 0xce, 0x5a, 0x90, + 0x13, 0x7e, 0x7c, 0xad, 0x4c, 0x4c, 0xb6, 0x93, + 0x65, 0xda, 0x4b, 0xb6, 0x13, 0x0e, 0x1b, 0x36, + 0xaa, 0x2c, 0xbd, 0x60, 0x57, 0x98, 0x35, 0xa9, + 0xe9, 0xad, 0xc5, 0x8e, 0x33, 0x47, 0x00, 0xe9, + 0xf2, 0x1b, 0xe7, 0x5a, 0xd0, 0x55, 0x3b, 0x0e, + 0x77, 0x09, 0x7e, 0x1f, 0x11, 0x0b, 0xf0, 0xe4, + 0x07, 0x27, 0xe7, 0x72, 0xe9, 0x50, 0x9c, 0x9c, + 0x84, 0xb0, 0x5c, 0xe0, 0x13, 0x79, 0xfa, 0x3f, + 0x80, 0x96, 0xe2, 0x04, 0xde, 0x35, 0x5f, 0xa4, + 0x4e, 0x8a, 0x12, 0x7a, 0xba, 0x53, 0x20, 0x36, + 0x3d, 0xf0, 0x63, 0xb6, 0x14, 0xab, 0xce, 0x6b, + 0x24, 0xfd, 0xc9, 0xd2, 0x52, 0xd9, 0xc0, 0x40, + 0xdf, 0xdd, 0xd5, 0xc2, 0xa0, 0xf5, 0x74, 0x46, + 0x17, 0xdc, 0xf5, 0x81, 0x68, 0xbd, 0x1a, 0x01, + 0x33, 0xd0, 0x2f, 0xdc, 0x3a, 0x43, 0x4a, 0x08, + 0x07, 0x98, 0x9f, 0x75, 0x5d, 0x70, 0x15, 0x1d, + 0x58, 0x7f, 0x26, 0x30, 0x28, 0xe1, 0x17, 0x6d, + 0x14, 0x0f, 0x01, 0x4a, 0x88, 0x3b, 0xf5, 0x70, + 0x1d, 0x97, 0xd5, 0xda, 0x18, 0xa8, 0xb3, 0xa4, + 0x0e, 0x04, 0x3f, 0xe8, 0x50, 0xf4, 0x87, 0x65, + 0x75, 0x5a, 0x5d, 0x2f, 0x94, 0x63, 0x7a, 0xd0, + 0x06, 0xce, 0xfb, 0xeb, 0x41, 0x65, 0xc9, 0x55, + 0x38, 0x54, 0xd3, 0xc4, 0xac, 0x24, 0x46, 0x06, + 0x2a, 0x87, 0xb1, 0x0f, 0x06, 0xd8, 0x1e, 0xa7, + 0x35, 0xc4, 0xa3, 0xdc, 0x60, 0x80, 0x83, 0xe7, + 0xf0, 0x74, 0xf6, 0xd6, 0xa7, 0x1d, 0x50, 0xff, + 0xba, 0x82, 0xc0, 0xca, 0x72, 0x6b, 0xda, 0x4a, + 0xcb, 0x3b, 0xe8, 0xa3, 0xaa, 0x32, 0x86, 0xc0, + 0x94, 0x75, 0x2b, 0x2f, 0x44, 0xad, 0x5b, 0x8d, + 0xab, 0xc2, 0x03, 0x55, 0xb1, 0x7e, 0x67, 0x07, + 0x39, 0x33, 0x83, 0x67, 0xec, 0xbf, 0x52, 0xad, + 0x55, 0x37, 0x3e, 0xa1, 0x41, 0xed, 0xa0, 0x91, + 0xbf, 0x28, 0x1b, 0x04, 0x32, 0xbf, 0xf1, 0xb0, + 0x0a, 0x11, 0x99, 0x98, 0x77, 0xee, 0x14, 0x13, + 0x15, 0x13, 0xad, 0x1f, 0xb6, 0x6b, 0xcd, 0x3b, + 0xb8, 0x75, 0x9a, 0x55, 0x9b, 0x0c, 0x6c, 0xf7, + 0x7c, 0x21, 0x06, 0xb7, 0xf0, 0x43, 0x41, 0x96, + 0xc1, 0x73, 0x44, 0x53, 0xd8, 0x18, 0x3e, 0x09, + 0x4e, 0xc2, 0x5f, 0xa0, 0xd5, 0x18, 0xdb, 0x9f, + 0xf4, 0xa0, 0xf8, 0x4d, 0xa7, 0x72, 0x7e, 0x85, + 0xbb, 0xb7, 0xcc, 0x7b, 0x51, 0xb0, 0xf1, 0x5e, + 0x03, 0xcd, 0xe8, 0x5b, 0x83, 0x3f, 0x95, 0xe2, + 0x0b, 0xa1, 0xc7, 0x6f, 0x74, 0x98, 0xcd, 0x95, + 0xf4, 0xd4, 0xb8, 0x40, 0xff, 0x75, 0x54, 0x83, + 0x3a, 0x2c, 0x64, 0x38, 0x10, 0xcb, 0x6d, 0xad, + 0xf9, 0x91, 0xcb, 0xcf, 0xbe, 0xf6, 0xf7, 0x94, + 0x15, 0xea, 0xaf, 0x37, 0x65, 0x7c, 0xd2, 0xff, + 0x99, 0x79, 0xf8, 0x95, 0x27, 0x75, 0x09, 0x60, + 0xa4, 0x6f, 0x06, 0x0f, 0x6c, 0x13, 0xdd, 0x32, + 0x79, 0xa7, 0x40, 0xa5, 0xdd, 0x2c, 0x22, 0xc1, + 0xee, 0xc3, 0x31, 0x59, 0xb1, 0x3d, 0xa1, 0x77, + 0x69, 0xb5, 0xd6, 0xae, 0xd7, 0x86, 0xab, 0xa4, + 0xdf, 0x9f, 0x36, 0xb4, 0xb2, 0xe6, 0x88, 0xd6, + 0x45, 0x9b, 0x8b, 0x87, 0xbd, 0x27, 0xe9, 0x55, + 0xd5, 0xac, 0xe9, 0x33, 0x80, 0x00, 0x1d, 0x00, + 0x21, 0x74, 0xe2, 0x0a, 0x5b, 0xd2, 0x37, 0xab, + 0x6f, 0x48, 0x5e, 0x14, 0x76, 0x3a, 0x84, 0xf9, + 0x34, 0x03, 0x74, 0x8d, 0x6c, 0xd8, 0xd4, 0x0f, + 0xc7, 0xc8, 0x0c, 0xb5, 0x18, 0x12, 0xa5, 0x5a, + 0x76, 0x4b, 0x5d, 0x1e, 0x75, 0x89, 0x3a, 0x01, + 0x60, 0xf1, 0x1e, 0x5b, 0x98, 0x71, 0x7a, 0x15, + 0x79, 0xff, 0x3d, 0x37, 0x5e, 0xc9, 0x56, 0xa5, + 0x43, 0xe7, 0xd0, 0x2b, 0x63, 0xfb, 0x2f, 0x1a, + 0x55, 0x37, 0x15, 0x02, 0x7f, 0x9a, 0x84, 0xf0, + 0x07, 0x45, 0x2b, 0xa0, 0x9a, 0xb4, 0x60, 0x4d, + 0x48, 0xd5, 0xee, 0x64, 0xf9, 0xe7, 0x4b, 0x1c, + 0xb9, 0x05, 0xd1, 0xd1, 0x47, 0x4f, 0xca, 0x26, + 0x32, 0xad, 0x7b, 0x2e, 0x7e, 0x54, 0x05, 0x96, + 0x12, 0x29, 0xbc, 0xd3, 0x45, 0x4e, 0x05, 0x83, + 0x6d, 0x30, 0x38, 0xd0, 0x3c, 0x46, 0xcd, 0xb6, + 0x21, 0xb6, 0x5c, 0x2a, 0x40, 0x7a, 0x2e, 0x97, + 0xd7, 0xbf, 0xa6, 0x55, 0x2a, 0xa6, 0x28, 0x54, + 0xc4, 0x66, 0xbe, 0xf6, 0xea, 0xc1, 0x19, 0xcb, + 0xcc, 0x52, 0x07, 0xcd, 0x90, 0x3f, 0x09, 0x23, + 0x77, 0xf7, 0xc6, 0x03, 0xcc, 0x8b, 0x18, 0xac, + 0x63, 0x6d, 0x2a, 0x01, 0x82, 0xad, 0x20, 0x11, + 0x82, 0xf3, 0xfe, 0x2d, 0x53, 0x3f, 0x18, 0xb5, + 0xbc, 0xf7, 0x0c, 0xa7, 0xca, 0x63, 0xfa, 0x77, + 0x8a, 0x3c, 0xc1, 0xc4, 0xb0, 0x15, 0x4b, 0x08, + 0xdd, 0xb3, 0xd2, 0x33, 0xc8, 0xc2, 0xaa, 0x1a, + 0xe4, 0x9b, 0x1b, 0x18, 0x78, 0x07, 0x6c, 0x08, + 0x28, 0x3f, 0xc6, 0xb7, 0x46, 0x8f, 0x8e, 0xc6, + 0xff, 0xb1, 0x2d, 0x63, 0x12, 0x7c, 0xe5, 0xd8, + 0xa5, 0xf8, 0x64, 0x76, 0xf7, 0x1b, 0xbc, 0x41, + 0xad, 0xee, 0xe8, 0x6f, 0xd4, 0x13, 0xea, 0x59, + 0x72, 0xfa, 0x04, 0xb4, 0x6e, 0x52, 0x3a, 0xff, + 0x60, 0xa0, 0xd8, 0xdf, 0x41, 0x1a, 0x4e, 0xc8, + 0x80, 0x2d, 0x29, 0x13, 0xd3, 0xd0, 0x55, 0x20, + 0xb5, 0x33, 0x4f, 0x02, 0xd2, 0xea, 0xca, 0x94, + 0x99, 0xdf, 0x3c, 0xfd, 0xe5, 0x2b, 0x45, 0x04, + 0x85, 0xfe, 0x87, 0x42, 0x53, 0x11, 0x62, 0x2f, + 0xcf, 0x05, 0x35, 0x29, 0x6a, 0xa5, 0x37, 0x80, + 0x9b, 0x4a, 0x44, 0x3c, 0x6d, 0xe1, 0xd3, 0x88, + 0x6a, 0xe7, 0x6f, 0x45, 0xfc, 0x99, 0x33, 0xe4, + 0x18, 0x62, 0x19, 0x36, 0x37, 0x6f, 0xe9, 0x37, + 0xbb, 0x86, 0xa2, 0x07, 0xec, 0xbc, 0x33, 0x0d, + 0x0a, 0x18, 0x30, 0x13, 0xcf, 0x36, 0x31, 0x2f, + 0xd2, 0xf6, 0x7e, 0xa8, 0xa4, 0x95, 0x71, 0xc8, + 0x40, 0x1f, 0x34, 0xf1, 0x95, 0xde, 0x3e, 0xe1, + 0xb7, 0xef, 0x26, 0x1e, 0x20, 0x78, 0xf8, 0x9a, + 0x24, 0xbc, 0x7f, 0x64, 0x30, 0x42, 0x63, 0x77, + 0x89, 0x96, 0xf8, 0x9b, 0x60, 0x51, 0xb3, 0x02, + 0x7a, 0x64, 0x19, 0xd3, 0x13, 0x98, 0xcd, 0xb6, + 0x1e, 0x68, 0x82, 0x9b, 0x23, 0x44, 0x3e, 0xa8, + 0x57, 0xf5, 0x4d, 0xd8, 0xea, 0x93, 0x84, 0x4e, + 0x56, 0x18, 0xb7, 0x94, 0x02, 0xfa, 0x6e, 0x8e, + 0xa0, 0x75, 0xd2, 0xb4, 0xbb, 0x50, 0x6f, 0x3f, + 0x58, 0xe2, 0x28, 0xb6, 0x87, 0xd6, 0xc5, 0xe0, + 0x76, 0xa6, 0xc6, 0x5b, 0xed, 0x6b, 0x48, 0xd4, + 0x25, 0xd3, 0x5f, 0x64, 0xab, 0xe3, 0x5a, 0xae, + 0x69, 0xe8, 0x06, 0xff, 0xef, 0x67, 0x0b, 0x49, + 0xe4, 0xe8, 0x31, 0xee, 0x1a, 0x35, 0x86, 0x0c, + 0x81, 0x8a, 0x1f, 0x7f, 0x06, 0x20, 0x66, 0x81, + 0x8b, 0xfb, 0xdc, 0x99, 0x78, 0x7b, 0x43, 0x84, + 0x35, 0xa7, 0x4f, 0x27, 0xb5, 0xc9, 0x44, 0xbf, + 0x05, 0x59, 0xce, 0x4c, 0xe5, 0xaa, 0x18, 0x37, + 0x32, 0x5b, 0x41, 0x62, 0x89, 0x0a, 0xec, 0x0a, + 0xae, 0x67, 0xcf, 0x0b, 0xef, 0xf6, 0x3a, 0x3b, + 0x13, 0x1d, 0xf8, 0x8b, 0x20, 0x5f, 0x2c, 0x55, + 0x75, 0xec, 0xf4, 0x9d, 0x2d, 0x0d, 0x0d, 0xb7, + 0x88, 0x71, 0xf7, 0xc6, 0xf8, 0x65, 0x1a, 0xba, + 0xdb, 0xdc, 0x53, 0xd2, 0x80, 0x92, 0x72, 0x14, + 0xce, 0x68, 0xb8, 0xf4, 0x78, 0x4b, 0x92, 0xee, + 0x15, 0xfc, 0xd4, 0xe0, 0x89, 0x49, 0x82, 0xf8, + 0x7f, 0xce, 0xf6, 0xce, 0x86, 0xfa, 0xa5, 0xd9, + 0x3a, 0xfb, 0xef, 0xa8, 0xd9, 0x3b, 0x6e, 0xb5, + 0xe2, 0x29, 0x31, 0x6f, 0x5f, 0xa7, 0x34, 0x58, + 0x49, 0x07, 0x9c, 0x4d, 0x74, 0x46, 0xb6, 0xd5, + 0x0c, 0x3c, 0x26, 0x4b, 0xee, 0x37, 0x9c, 0x92, + 0xa2, 0x37, 0x95, 0x35, 0x71, 0xee, 0x46, 0xdd, + 0xef, 0xd0, 0xf2, 0xd4, 0xef, 0xe0, 0xdb, 0x28, + 0xf4, 0x5d, 0x12, 0xe0, 0x85, 0x4a, 0x3c, 0x5b, + 0x2f, 0xd8, 0x9c, 0x9a, 0xcf, 0x6f, 0x01, 0xe7, + 0x1b, 0x2e, 0x41, 0x5d, 0x5d, 0xdd, 0xdd, 0xb6, + 0x6d, 0xb3, 0x7d, 0xbc, 0x33, 0x50, 0xc5, 0xaf, + 0x1b, 0xee, 0x33, 0xc4, 0x42, 0x46, 0xca, 0xe2, + 0x00, 0xe9, 0xc9, 0xec, 0x9e, 0x9b, 0x67, 0xba, + 0x39, 0x3c, 0xc5, 0xa1, 0x7d, 0xac, 0x9e, 0xbe, + 0x67, 0x92, 0x20, 0x5b, 0x36, 0x85, 0xde, 0xdd, + 0xd3, 0xec, 0x4e, 0x82, 0x03, 0x4a, 0x44, 0x6e, + 0xee, 0x9c, 0xd0, 0x13, 0x9e, 0x98, 0x6f, 0x77, + 0xd8, 0xfe, 0xb7, 0x54, 0x01, 0x15, 0xcd, 0xd3, + 0x31, 0xf5, 0xd7, 0x74, 0x2d, 0x4d, 0x4f, 0x18, + 0xd2, 0x8f, 0x80, 0xb6, 0x46, 0x80, 0xa7, 0xa8, + 0x8c, 0xf2, 0x64, 0x4f, 0x40, 0x8a, 0x64, 0x96, + 0x2c, 0x1e, 0xd2, 0x3c, 0xe9, 0x50, 0xc4, 0x86, + 0xd9, 0x19, 0x93, 0x7a, 0xba, 0x95, 0x35, 0x35, + 0xe3, 0x4d, 0x83, 0xda, 0x15, 0x09, 0x87, 0xb8, + 0x1a, 0x54, 0x6f, 0x61, 0xdd, 0x55, 0x01, 0xe1, + 0x39, 0x1c, 0xb2, 0xac, 0x8c, 0x15, 0x82, 0x7c, + 0xa6, 0x69, 0x54, 0x64, 0x2f, 0x5c, 0x0c, 0x79, + 0xaf, 0x85, 0x71, 0x2d, 0xff, 0xc0, 0xf2, 0x40, + 0xbb, 0x05, 0x31, 0x31, 0x00, 0x8d, 0x0c, 0x40, + 0x11, 0x88, 0xf2, 0x91, 0x9f, 0x7a, 0x8e, 0x99, + 0x82, 0x72, 0xd8, 0x45, 0x08, 0x83, 0x5c, 0x2b, + 0x73, 0x46, 0xd6, 0x54, 0x9a, 0x3d, 0x42, 0x48, + 0x67, 0x19, 0x2b, 0x19, 0xae, 0x0c, 0x16, 0x08, + 0xa4, 0xec, 0x7e, 0x15, 0xad, 0x4f, 0xa9, 0xbd, + 0x4f, 0x09, 0xf0, 0xc2, 0x9f, 0xb5, 0xb7, 0xff, + 0x96, 0xf9, 0xf9, 0xc6, 0x5d, 0x57, 0x07, 0xe8, + 0xf2, 0x7c, 0x95, 0xa0, 0x8a, 0x15, 0x8b, 0x34, + 0x84, 0xb5, 0x28, 0x7a, 0xf5, 0x04, 0xb8, 0xcb, + 0x5e, 0x77, 0x4d, 0xdd, 0x14, 0x8d, 0xa6, 0xe2, + 0x45, 0x44, 0xfd, 0xd0, 0x9c, 0x41, 0x10, 0xfc, + 0xe5, 0xdd, 0x2c, 0xda, 0x6b, 0xfe, 0xf9, 0xff, + 0x65, 0xe7, 0x66, 0x40, 0x69, 0x0c, 0x09, 0x99, + 0xaf, 0x02, 0xd0, 0x85, 0x55, 0xcc, 0x0d, 0x59, + 0xaa, 0xb6, 0x37, 0x9b, 0x58, 0xfa, 0xb5, 0xc5, + 0xcd, 0xd5, 0x1c, 0xf9, 0x9f, 0x31, 0x4c, 0x8a, + 0x78, 0xca, 0x1e, 0x22, 0xdc, 0x33, 0x64, 0xce, + 0x56, 0x6d, 0x57, 0xe9, 0xbd, 0xe0, 0xdd, 0x23, + 0x22, 0x9c, 0x70, 0x5a, 0xe7, 0x46, 0x08, 0xc5, + 0xa6, 0x85, 0x34, 0x5f, 0x9c, 0x96, 0xbb, 0xbe, + 0xb4, 0x2f, 0xbb, 0x47, 0xdc, 0x38, 0xad, 0xb7, + 0x92, 0x08, 0x0d, 0x93, 0xf4, 0x7f, 0xe6, 0x64, + 0xa5, 0xb3, 0x9e, 0xdd, 0xdb, 0x99, 0x8e, 0xca, + 0x82, 0x4f, 0x77, 0xf7, 0xff, 0x92, 0xd3, 0x48, + 0xe0, 0x80, 0x71, 0x14, 0x61, 0x6b, 0x77, 0x1b, + 0x58, 0xbd, 0xb6, 0xb6, 0xe5, 0xb0, 0xa8, 0x16, + 0xe7, 0x4c, 0xc2, 0x5e, 0x40, 0xbc, 0x9f, 0x77, + 0x76, 0x98, 0xf7, 0x00, 0xd1, 0xdf, 0x3c, 0x2e, + 0x16, 0x4f, 0xe7, 0x91, 0xec, 0xeb, 0xfb, 0xa1, + 0x9f, 0x66, 0x6d, 0xef, 0xaf, 0x36, 0xd8, 0xb6, + 0x40, 0x7e, 0x2f, 0x51, 0x3b, 0x75, 0x56, 0x1d, + 0x33, 0xee, 0x4b, 0xcf, 0x98, 0xb3, 0x9f, 0x4f, + 0xff, 0xfd, 0x2a, 0xb9, 0x4e, 0x4b, 0xe0, 0x39, + 0x60, 0xd5, 0x7c, 0xaa, 0x28, 0x7e, 0x7e, 0x27, + 0xd8, 0x09, 0x85, 0x6d, 0xfa, 0x57, 0x8a, 0xee, + 0x84, 0xbe, 0x48, 0xf9, 0x62, 0x78, 0x8a, 0x4d, + 0x2a, 0x80, 0x2f, 0x6f, 0xc9, 0xa7, 0xb5, 0x56, + 0xbb, 0x58, 0xc2, 0xb9, 0xd0, 0xfe, 0x8d, 0x68, + 0x86, 0x2b, 0x7b, 0xf0, 0x01, 0x57, 0xff, 0xaf, + 0x88, 0xad, 0x53, 0xf9, 0x63, 0xfe, 0xf4, 0x5a, + 0x97, 0xb7, 0x8f, 0x92, 0x0f, 0x90, 0x63, 0xcf, + 0xfe, 0x08, 0xbc, 0x8c, 0x5a, 0x9c, 0xac, 0x8b, + 0x0a, 0x94, 0x17, 0x25, 0xae, 0x87, 0xa7, 0x1d, + 0x3f, 0x28, 0xfe, 0x45, 0x3e, 0x48, 0xef, 0x19, + 0x4a, 0xbe, 0xc6, 0xd5, 0x64, 0xe1, 0xf2, 0xf5, + 0xd2, 0x3a, 0x03, 0xe0, 0x50, 0x31, 0x7e, 0xdf, + 0xd5, 0x15, 0xc6, 0xb6, 0xb2, 0x1e, 0x44, 0x6a, + 0x0f, 0x67, 0xf2, 0x34, 0x69, 0xb9, 0xd2, 0x51, + 0xeb, 0x86, 0xab, 0x7e, 0x60, 0x68, 0xe4, 0xc2, + 0x4b, 0x8b, 0xa2, 0xc6, 0x78, 0xb2, 0x61, 0xa1, + 0xe5, 0xb6, 0x33, 0x47, 0x3f, 0xfa, 0xde, 0x5b, + 0x6b, 0x95, 0x89, 0x51, 0xbb, 0xd3, 0x8a, 0x00, + 0x1d, 0xad, 0xfc, 0x7a, 0x47, 0xc8, 0xa0, 0x69, + 0xa6, 0xa3, 0x3f, 0xa9, 0xdb, 0xd8, 0xe4, 0x0d, + 0x2c, 0xba, 0x26, 0x2c, 0xa6, 0x82, 0x62, 0x5a, + 0x1e, 0x9f, 0xa8, 0x24, 0x9d, 0xe5, 0xc7, 0xcf, + 0x6d, 0x2f, 0x68, 0xe1, 0xc0, 0x04, 0xad, 0xde, + 0x00, 0x5b, 0x57, 0x35, 0x2b, 0x9a, 0x9b, 0xe5, + 0x90, 0x31, 0x8a, 0x5b, 0xea, 0xe5, 0xf6, 0x73, + 0x02, 0xc1, 0x33, 0xaf, 0xe7, 0x61, 0x6c, 0x04, + 0x8c, 0x08, 0xb2, 0xfb, 0xa2, 0x18, 0x51, 0x39, + 0x1a, 0x61, 0x2c, 0x8c, 0x7d, 0x11, 0xb8, 0x2e, + 0x38, 0xb7, 0xe0, 0xde, 0x5e, 0x6f, 0xc5, 0xf4, + 0x31, 0x72, 0xcb, 0xd6, 0xec, 0xbc, 0xe9, 0x36, + 0x2e, 0x2b, 0x63, 0xea, 0xa1, 0xab, 0xf8, 0x11, + 0xe7, 0x31, 0xad, 0xe4, 0xcb, 0x23, 0xe4, 0x64, + 0x54, 0x50, 0x4f, 0x15, 0x8b, 0x58, 0xa4, 0xa1, + 0x35, 0xea, 0x73, 0x3e, 0xc3, 0x3e, 0x31, 0x81, + 0x80, 0x53, 0x6a, 0x2c, 0xfe, 0xd7, 0xd8, 0x8f, + 0xe7, 0x50, 0x2d, 0x99, 0x69, 0x32, 0xfa, 0x4e, + 0xb4, 0xf9, 0x89, 0x18, 0xbe, 0x5a, 0x95, 0x7a, + 0x0f, 0x34, 0xc5, 0xd9, 0x28, 0xff, 0x93, 0x3a, + 0x13, 0x22, 0xe6, 0xdb, 0x5c, 0xfe, 0x51, 0x05, + 0xaf, 0xa3, 0xcd, 0x17, 0x01, 0xd1, 0x84, 0x76, + 0x23, 0xff, 0x91, 0xc4, 0x6b, 0xc7, 0xa8, 0x77, + 0xe0, 0xda, 0x45, 0xef, 0xd7, 0x13, 0xe3, 0x02, + 0x7c, 0x74, 0x7e, 0x66, 0xbb, 0x9f, 0x48, 0x35, + 0x56, 0xa8, 0x08, 0x41, 0xf7, 0xa7, 0xe3, 0x60, + 0xa6, 0xce, 0x73, 0xdf, 0x73, 0x99, 0xc6, 0xbd, + 0x7b, 0xb4, 0xde, 0x31, 0xe6, 0x35, 0xaf, 0x3e, + 0x93, 0xd2, 0x69, 0xb5, 0xb9, 0xbe, 0x9f, 0xf4, + 0x0d, 0xd8, 0x82, 0xc1, 0x4f, 0xf6, 0xf3, 0x23, + 0x1c, 0xe7, 0xff, 0xac, 0xb2, 0x79, 0xe3, 0x62, + 0x6a, 0xb7, 0x85, 0x08, 0xda, 0x4a, 0x3f, 0x22, + 0x62, 0x2b, 0xcd, 0xb7, 0x59, 0xf5, 0x82, 0xef, + 0x08, 0x7f, 0xb5, 0xa0, 0x6c, 0xba, 0x61, 0x45, + 0x8f, 0xf4, 0xa2, 0x66, 0x83, 0x72, 0x65, 0x34, + 0x34, 0x68, 0x99, 0xf5, 0x99, 0xc9, 0x52, 0x6a, + 0xc2, 0x7f, 0xde, 0x25, 0xa3, 0x7b, 0xce, 0xa3, + 0xde, 0x6d, 0x62, 0x98, 0x84, 0xe4, 0x2a, 0xe1, + 0x1c, 0xa9, 0x0b, 0x7e, 0x45, 0xd3, 0x78, 0x40, + 0x85, 0x61, 0x9d, 0xce, 0xcd, 0xfd, 0x7b, 0x66, + 0x92, 0x5f, 0xb9, 0x37, 0x04, 0xea, 0xec, 0x37, + 0x32, 0xbe, 0xcd, 0x3e, 0x5e, 0x37, 0xcd, 0xe3, + 0x81, 0x92, 0x69, 0xdf, 0xa1, 0xb9, 0x8c, 0x44, + 0x43, 0xae, 0xcd, 0xe5, 0xd5, 0x4e, 0xb9, 0x2f, + 0x1e, 0xbc, 0xf2, 0xd1, 0x88, 0x93, 0xde, 0x6a, + 0x8a, 0x43, 0xa1, 0x6b, 0xdc, 0x5b, 0xd2, 0xdd, + 0xe8, 0xca, 0x0a, 0x95, 0x45, 0x9f, 0xd8, 0x8c, + 0xfd, 0xe0, 0xc3, 0xbd, 0x0e, 0xa0, 0xbd, 0x72, + 0xa7, 0x77, 0x9a, 0x79, 0xd9, 0x15, 0xad, 0x50, + 0x13, 0xa7, 0x41, 0xc7, 0xd1, 0xec, 0x2f, 0x45, + 0x14, 0x02, 0xb7, 0x8e, 0x51, 0x76, 0xd4, 0x2f, + 0x1c, 0xea, 0x9c, 0x6d, 0x35, 0x1c, 0xa7, 0xeb, + 0xd7, 0x79, 0xe4, 0x35, 0xbc, 0x02, 0xa6, 0xd0, + 0x58, 0xcb, 0xdf, 0xea, 0x90, 0x16, 0x53, 0x3c, + 0xc5, 0xda, 0x36, 0x4f, 0x61, 0x4a, 0x1b, 0xfa, + 0x15, 0x52, 0x0d, 0x3d, 0x73, 0xc5, 0xfe, 0x2a, + 0xa2, 0x4a, 0x6e, 0x95, 0x99, 0xfc, 0xbf, 0xb2, + 0xfc, 0x22, 0xbe, 0x45, 0x10, 0x5a, 0xc5, 0x38, + 0xa0, 0xc1, 0xba, 0x46, 0x6d, 0x8e, 0xbe, 0x0b, + 0x5f, 0xf6, 0x6f, 0xbb, 0x4d, 0x22, 0xf5, 0x95, + 0x4d, 0x12, 0xc2, 0x6f, 0x8d, 0xde, 0x86, 0xaf, + 0x3f, 0x08, 0x24, 0x56, 0xa3, 0xcd, 0xfc, 0xeb, + 0xa1, 0x3c, 0x22, 0x66, 0x45, 0x03, 0x8b, 0x04, + 0x12, 0x80, 0x34, 0xf9, 0xf4, 0x64, 0xbf, 0xb9, + 0x3d, 0xd7, 0x34, 0xe4, 0xc8, 0x8e, 0x86, 0xc9, + 0x73, 0x21, 0x7f, 0x30, 0x01, 0xc8, 0xd2, 0x91, + 0x8d, 0xc4, 0xca, 0xd5, 0x59, 0xac, 0xd7, 0xb4, + 0xfb, 0x98, 0xfb, 0xc4, 0x48, 0x82, 0x93, 0xc6, + 0x58, 0x8b, 0x0c, 0xdf, 0x3f, 0x07, 0x5a, 0x94, + 0x89, 0xc6, 0xbe, 0x1a, 0x19, 0x63, 0x8b, 0xa8, + 0x0c, 0x20, 0xae, 0x9a, 0x1b, 0xd3, 0x45, 0xa0, + 0xd9, 0x8c, 0xbb, 0x67, 0xa0, 0x54, 0x86, 0x9b, + 0x7b, 0xa8, 0x16, 0x6f, 0xa4, 0x59, 0x45, 0x1e, + 0x34, 0xb5, 0xa7, 0x1b, 0x3f, 0xda, 0xc6, 0x80, + 0x19, 0xdc, 0xc2, 0xee, 0xeb, 0xd9, 0x96, 0xdc, + 0x4f, 0xec, 0x02, 0xde, 0x34, 0x43, 0x5a, 0x37, + 0xc8, 0xdf, 0x3b, 0x53, 0x82, 0xfa, 0xf8, 0x8a, + 0x32, 0x97, 0x1e, 0xf6, 0x0e, 0x7d, 0x39, 0xe0, + 0xdb, 0x0b, 0x22, 0xa4, 0xd0, 0x56, 0x13, 0xbc, + 0xe9, 0x38, 0x92, 0x76, 0xff, 0x2b, 0xc2, 0xa0, + 0x98, 0x7d, 0x8c, 0x58, 0x8e, 0x7f, 0x6d, 0x80, + 0x06, 0xff, 0xc7, 0xb3, 0xb7, 0x1b, 0xac, 0xc4, + 0x68, 0x61, 0x11, 0x15, 0xb7, 0xee, 0x8d, 0x66, + 0x34, 0x9f, 0x18, 0x03, 0x88, 0xd1, 0x04, 0xd0, + 0x86, 0xc0, 0xca, 0x2a, 0xe1, 0x1b, 0x47, 0x18, + 0xc9, 0x97, 0xed, 0x1f, 0x99, 0xc6, 0xa9, 0x20, + 0x3f, 0xf6, 0x43, 0x96, 0x30, 0x8b, 0xa5, 0xcb, + 0x2e, 0xc5, 0xdb, 0x26, 0xc0, 0xf6, 0x48, 0x07, + 0x3a, 0x28, 0x3e, 0x35, 0x38, 0x50, 0x80, 0xdf, + 0x80, 0xfa, 0x12, 0x92, 0x83, 0x55, 0xde, 0x31, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x48, 0x11, 0x92, 0xb3, 0xaa, 0x7e, 0xb3, 0x14, + 0xdc, 0x46, 0xd6, 0xbf, 0x26, 0xb2, 0x66, 0xc5, + 0xd8, 0xc4, 0x69, 0x9f, 0x67, 0x50, 0x67, 0xc0, + 0x3b, 0x8d, 0xc5, 0xb5, 0x68, 0x59, 0x6f, 0x9c, + 0xd4, 0xf2, 0x49, 0xfb, 0xa4, 0xd0, 0xbf, 0xc5, + 0x3c, 0xee, 0x3b, 0x03, 0x25, 0x6c, 0x51, 0x94, + 0xb3, 0xd4, 0xdb, 0x2a, 0xbd, 0x26, 0xef, 0x58, + 0xb3, 0x91, 0x62, 0x81, 0x1b, 0x29, 0x9c, 0x12, + }, + .sig_len =3D DILITHIUM87_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM87_CRYPTO_BYTES]){ + 0xba, 0x08, 0xf3, 0x0c, 0xa1, 0x48, 0xad, 0x67, + 0x12, 0x68, 0x51, 0x9b, 0xa4, 0x21, 0x66, 0x8d, + 0xea, 0x0a, 0x71, 0x4f, 0x4c, 0xab, 0x1b, 0x42, + 0x84, 0xb7, 0x9c, 0x78, 0xa9, 0x18, 0xd9, 0xe8, + 0x08, 0x8f, 0xee, 0xf7, 0x4b, 0xcf, 0x0e, 0xcd, + 0xf6, 0x36, 0xcf, 0xd5, 0xa1, 0x5e, 0x59, 0xc6, + 0x8c, 0x6c, 0x4d, 0xfe, 0xfa, 0xfa, 0xbc, 0x52, + 0x3a, 0x35, 0xba, 0xd9, 0xe1, 0xf2, 0x26, 0x73, + 0xbd, 0x64, 0x93, 0xe7, 0x83, 0x76, 0xc4, 0xf8, + 0x4b, 0xa9, 0x91, 0x8c, 0xd2, 0xf5, 0x08, 0xe6, + 0x58, 0xcd, 0xfb, 0x90, 0xc1, 0x84, 0x72, 0x77, + 0x72, 0x47, 0x5f, 0xcb, 0x7f, 0x74, 0x85, 0x56, + 0xba, 0x73, 0x86, 0xc1, 0x32, 0x1c, 0xaf, 0xc5, + 0x60, 0x2c, 0x91, 0x99, 0x09, 0x03, 0xcb, 0xe6, + 0xa4, 0xae, 0x0b, 0xdc, 0x15, 0x70, 0x4c, 0x91, + 0xa9, 0x9e, 0x5e, 0x63, 0x5c, 0x24, 0xc9, 0x26, + 0x39, 0x56, 0xe4, 0x6c, 0x2c, 0x65, 0xf8, 0x0b, + 0x4f, 0x56, 0x8f, 0x1e, 0x74, 0xda, 0x31, 0xad, + 0x8f, 0x1b, 0xa7, 0xb1, 0xb3, 0x9b, 0x48, 0x09, + 0x08, 0xdd, 0xe1, 0x25, 0x20, 0xa4, 0xc7, 0x12, + 0xd4, 0xb0, 0xa0, 0xcb, 0x90, 0xf5, 0x9f, 0xc1, + 0x8b, 0xbc, 0x9d, 0xcf, 0x78, 0xfc, 0xa1, 0x04, + 0x4b, 0x0b, 0x7e, 0x82, 0x94, 0x80, 0x0e, 0x70, + 0x77, 0xce, 0x63, 0x1c, 0x43, 0x41, 0x3f, 0x5d, + 0x61, 0x1a, 0x44, 0xaa, 0xd0, 0xb7, 0x18, 0xd8, + 0x91, 0x83, 0xa4, 0xa7, 0xa1, 0x86, 0x13, 0x54, + 0xaf, 0xa8, 0xdb, 0x1a, 0xd7, 0xa9, 0x54, 0xca, + 0x67, 0xb5, 0xb6, 0xb4, 0x22, 0x1a, 0x24, 0x8e, + 0x65, 0x01, 0xa8, 0xd2, 0x15, 0x9d, 0x98, 0x59, + 0x70, 0x94, 0xb4, 0x96, 0xeb, 0xf2, 0x95, 0x41, + 0x9a, 0x89, 0x02, 0xb7, 0x6a, 0x20, 0x2a, 0x64, + 0xf1, 0x1c, 0x1e, 0x3d, 0xd8, 0xdb, 0x6d, 0xef, + 0xf2, 0x1a, 0x24, 0xa4, 0xd0, 0xb9, 0x98, 0xd3, + 0xe5, 0xbd, 0x7a, 0xa3, 0xc3, 0x19, 0x97, 0x54, + 0x77, 0x97, 0xb5, 0x57, 0x93, 0x71, 0x24, 0x91, + 0x81, 0xcf, 0x5f, 0x38, 0xb9, 0xd5, 0x7e, 0x8b, + 0x0f, 0xea, 0x56, 0x49, 0xac, 0x25, 0xc4, 0x6c, + 0x5e, 0x4e, 0x08, 0x31, 0xc8, 0xdf, 0x0b, 0x19, + 0xb9, 0xbc, 0xec, 0x3b, 0x89, 0xf8, 0x98, 0xe3, + 0x6c, 0xf6, 0x0f, 0x5b, 0x7e, 0x03, 0x10, 0x68, + 0x78, 0x2c, 0xfa, 0x39, 0x5c, 0x64, 0x5b, 0xa1, + 0xfc, 0x8d, 0x14, 0x87, 0x62, 0x04, 0x57, 0xc0, + 0x5b, 0x6f, 0x6e, 0x3c, 0xea, 0xe6, 0x23, 0xde, + 0x9b, 0x1d, 0x89, 0x69, 0x38, 0xfb, 0x10, 0xab, + 0xb9, 0xda, 0xee, 0xa8, 0x8d, 0x96, 0xc0, 0xa5, + 0x40, 0xce, 0x16, 0x1e, 0xf5, 0xf4, 0x74, 0x6f, + 0x0e, 0x38, 0xe5, 0x1d, 0xe6, 0x6c, 0x19, 0xa5, + 0x71, 0x48, 0xda, 0x3e, 0xe9, 0x10, 0x57, 0x16, + 0x89, 0xd3, 0x5b, 0x4a, 0x5b, 0xa9, 0xb1, 0x13, + 0xad, 0x77, 0xaf, 0x1f, 0x8b, 0x71, 0x3f, 0xff, + 0x7c, 0xc4, 0x31, 0xb2, 0xa7, 0x18, 0x2f, 0x4b, + 0x99, 0xe2, 0x14, 0xbf, 0x1e, 0x69, 0x8f, 0x56, + 0xe2, 0x2c, 0x84, 0x34, 0xd6, 0x76, 0x27, 0x06, + 0x7f, 0x2e, 0x9d, 0xbe, 0x90, 0x95, 0xda, 0x5a, + 0xfb, 0xaa, 0x8a, 0x51, 0x3d, 0x97, 0xb8, 0x75, + 0xe9, 0xba, 0x2a, 0x03, 0x7e, 0xb0, 0xe3, 0xdc, + 0xe3, 0x3b, 0x2a, 0xd8, 0x77, 0xa5, 0xf3, 0x76, + 0x69, 0xf1, 0xd2, 0xd5, 0xb3, 0xba, 0xfa, 0x97, + 0x55, 0x5f, 0xd1, 0xc3, 0x10, 0x55, 0x9a, 0xb6, + 0xce, 0x32, 0x80, 0x7f, 0x48, 0xb7, 0x15, 0x85, + 0x3f, 0x22, 0x58, 0x00, 0x51, 0x12, 0x5c, 0xcc, + 0xd0, 0x77, 0x26, 0x57, 0x4b, 0xbb, 0x67, 0x21, + 0x0d, 0x92, 0x80, 0xe0, 0xec, 0x2f, 0x58, 0x44, + 0x8b, 0x98, 0x70, 0x16, 0x13, 0x91, 0x38, 0xee, + 0x9e, 0x4f, 0xf2, 0x6f, 0x95, 0x49, 0xe8, 0xcc, + 0xc5, 0x6d, 0x20, 0x20, 0x4d, 0x1b, 0x08, 0xf4, + 0xa5, 0x8b, 0xf3, 0xf6, 0x89, 0x2c, 0x17, 0xa6, + 0xa8, 0xa8, 0xfb, 0xab, 0x6f, 0xa0, 0xe3, 0xcd, + 0xc5, 0xfb, 0xac, 0x91, 0x42, 0x8c, 0xf2, 0x28, + 0xd1, 0x13, 0xdb, 0x63, 0x59, 0x69, 0xab, 0x16, + 0x5a, 0xaf, 0x0a, 0xfa, 0x43, 0x6d, 0x53, 0x7f, + 0x14, 0x88, 0xc8, 0xa1, 0x71, 0x45, 0x54, 0x30, + 0xa7, 0x91, 0x55, 0x44, 0x07, 0x03, 0x78, 0xf3, + 0xf6, 0x23, 0xc0, 0x21, 0x4b, 0x39, 0xc4, 0x9a, + 0x5a, 0xe8, 0xad, 0x28, 0x6b, 0xd2, 0xd7, 0xc9, + 0xed, 0xf4, 0x30, 0xff, 0xf8, 0xc4, 0x7a, 0xfe, + 0x49, 0x1c, 0x28, 0xbb, 0x89, 0xfa, 0x9d, 0x64, + 0xcc, 0x37, 0x76, 0x6a, 0xf3, 0x8b, 0x94, 0x60, + 0xe0, 0xb2, 0x29, 0xf8, 0x5a, 0xc6, 0x3e, 0xcc, + 0x6f, 0x13, 0x85, 0x7c, 0xaa, 0xc4, 0x35, 0x56, + 0x9a, 0xb6, 0x96, 0x76, 0x41, 0xe2, 0x11, 0xbe, + 0x07, 0xba, 0x0c, 0x21, 0x32, 0xc3, 0xb3, 0xf3, + 0x96, 0x49, 0xa2, 0xc4, 0x49, 0x48, 0xfe, 0x17, + 0xef, 0xdf, 0x1e, 0xf3, 0xde, 0x5f, 0xa0, 0x49, + 0xfc, 0xa5, 0xb5, 0xf3, 0x4c, 0x99, 0x5f, 0xcb, + 0x33, 0xc6, 0x54, 0x52, 0xa0, 0x85, 0x16, 0x75, + 0x2c, 0x5f, 0x87, 0x61, 0x58, 0xc9, 0x23, 0x0a, + 0x36, 0x66, 0x3b, 0x78, 0x65, 0xcc, 0xd4, 0x8e, + 0xe1, 0x27, 0x9a, 0x74, 0x37, 0x79, 0x4c, 0x5c, + 0x35, 0xf9, 0xa5, 0x7f, 0x79, 0x35, 0xa8, 0x7d, + 0xcf, 0x64, 0xa3, 0x44, 0xb9, 0xee, 0x1e, 0x07, + 0x5c, 0xda, 0xcd, 0x93, 0xfc, 0x33, 0x77, 0x68, + 0xfc, 0xd6, 0xea, 0xf4, 0xcd, 0x0a, 0x3a, 0xe3, + 0xb3, 0xef, 0xf9, 0xb5, 0x1a, 0x4b, 0x50, 0x2e, + 0xcb, 0x88, 0x48, 0x60, 0xc3, 0x5c, 0x1b, 0xb7, + 0xcc, 0x7a, 0x49, 0x2e, 0xf0, 0x9e, 0x96, 0x47, + 0x7d, 0x82, 0x85, 0xcb, 0x37, 0x85, 0x26, 0xfd, + 0xe1, 0x13, 0x57, 0xad, 0x51, 0xdc, 0x02, 0x8d, + 0x3c, 0x4e, 0xdd, 0xf3, 0xdf, 0xbe, 0xab, 0x0d, + 0x99, 0xf8, 0x13, 0x37, 0x0b, 0x1b, 0xaf, 0x08, + 0x9b, 0x38, 0x5b, 0x3a, 0x91, 0x71, 0x9a, 0xe6, + 0xc1, 0x7d, 0xd4, 0xd8, 0xf2, 0x66, 0x57, 0x99, + 0x29, 0x58, 0xb5, 0x9d, 0x8f, 0x86, 0x7f, 0xe9, + 0x17, 0xff, 0x3c, 0xfd, 0x0a, 0xfd, 0x15, 0x5c, + 0x2f, 0x77, 0x6c, 0x2b, 0x86, 0x72, 0xcb, 0x00, + 0x4d, 0x31, 0x98, 0xfe, 0x28, 0xc5, 0x54, 0x36, + 0x97, 0x8c, 0xc9, 0x31, 0xae, 0xff, 0xfc, 0xa6, + 0x15, 0xf9, 0x9d, 0x49, 0x83, 0x47, 0xb4, 0xe5, + 0x8c, 0x55, 0x2f, 0x35, 0x6d, 0x7c, 0x47, 0xb9, + 0xeb, 0x0a, 0x64, 0xea, 0x22, 0xae, 0xe3, 0x6b, + 0xae, 0x0e, 0xf8, 0xc4, 0x64, 0x18, 0x56, 0xa7, + 0x78, 0x92, 0x20, 0xe0, 0x03, 0x93, 0x42, 0x1f, + 0x1a, 0x48, 0xa1, 0x11, 0xdd, 0x83, 0x99, 0x67, + 0xc5, 0xf2, 0x0a, 0x9e, 0xfa, 0xab, 0x68, 0x54, + 0x1d, 0xa7, 0xe8, 0x44, 0x5f, 0x46, 0x23, 0xea, + 0xdd, 0xb2, 0xf5, 0x83, 0x76, 0x84, 0x13, 0xd6, + 0xe4, 0xb2, 0x59, 0x92, 0x92, 0xf4, 0xb5, 0x56, + 0xd7, 0x29, 0xc7, 0x05, 0x00, 0x79, 0x17, 0x59, + 0x20, 0xc6, 0x6a, 0xdc, 0x45, 0x93, 0xe7, 0xfc, + 0x29, 0x37, 0xa7, 0x7e, 0xbc, 0x21, 0xe7, 0xe1, + 0xff, 0x18, 0x54, 0xf9, 0xd3, 0x0c, 0x78, 0xe1, + 0xc9, 0x40, 0x36, 0x36, 0x68, 0x46, 0x3c, 0x9a, + 0x4d, 0xa6, 0xbc, 0xc3, 0xc7, 0xc9, 0x8c, 0x7e, + 0xc6, 0x07, 0x2a, 0xd0, 0x4d, 0x45, 0x3d, 0x65, + 0xef, 0x56, 0x7f, 0xf1, 0xcd, 0x6d, 0x97, 0x0c, + 0x11, 0x66, 0xf4, 0x27, 0xfc, 0xe3, 0xf3, 0x93, + 0x0d, 0xa1, 0x5a, 0x95, 0x86, 0xcc, 0x0f, 0xf4, + 0x97, 0xbc, 0x7c, 0x62, 0x78, 0xe5, 0x01, 0xe0, + 0xc7, 0x0c, 0xe7, 0xa9, 0x84, 0xa6, 0x17, 0xaa, + 0x36, 0x06, 0x2a, 0x0f, 0x2f, 0x7e, 0x3d, 0xe8, + 0x70, 0x8d, 0x36, 0x73, 0x9a, 0x7f, 0x47, 0x95, + 0xc5, 0x5d, 0xc5, 0xfa, 0x9c, 0x64, 0x52, 0xcb, + 0x52, 0x74, 0xda, 0xb0, 0x1f, 0x82, 0x01, 0x43, + 0x98, 0xa6, 0xe7, 0xf2, 0x89, 0x51, 0x92, 0xf8, + 0x37, 0x82, 0x8e, 0x91, 0x58, 0x40, 0x2c, 0xac, + 0xcf, 0xde, 0x92, 0x63, 0x5a, 0x64, 0xf9, 0x9c, + 0xa4, 0x47, 0x6d, 0x13, 0x43, 0xd3, 0xa6, 0x89, + 0xbb, 0x7b, 0x32, 0x45, 0x2d, 0x0e, 0x52, 0x25, + 0x67, 0xda, 0x1d, 0x9e, 0x42, 0x38, 0xfc, 0x92, + 0x84, 0x4d, 0x13, 0x53, 0xef, 0x46, 0x81, 0xdd, + 0xf6, 0x79, 0x9f, 0xba, 0x45, 0x49, 0x4b, 0x93, + 0x4a, 0x54, 0x1c, 0x72, 0xa0, 0xfd, 0xa1, 0x13, + 0x1c, 0x5e, 0xa5, 0x4e, 0xd5, 0xdf, 0xd1, 0x6a, + 0x40, 0x1d, 0x5e, 0x57, 0xf8, 0xe3, 0x3a, 0xe8, + 0x35, 0xf4, 0x67, 0xa2, 0x37, 0xf2, 0xe0, 0xd1, + 0xfe, 0x08, 0x5e, 0x5c, 0x41, 0x17, 0x87, 0x24, + 0xae, 0xf3, 0xe2, 0xc8, 0xb4, 0xfc, 0x3b, 0xef, + 0xdb, 0x5e, 0x27, 0x93, 0x0f, 0x01, 0xf9, 0x35, + 0xcf, 0x67, 0x4f, 0x65, 0xde, 0xca, 0xb6, 0xf1, + 0x12, 0xa0, 0xd7, 0x53, 0x09, 0xec, 0x83, 0x9a, + 0xb6, 0x8f, 0xf6, 0x03, 0xdf, 0x92, 0xa9, 0xc4, + 0x85, 0x55, 0x5a, 0x74, 0x66, 0x9e, 0xc0, 0x46, + 0xc7, 0x50, 0x7b, 0xda, 0x56, 0x4a, 0xf5, 0x38, + 0x37, 0xd5, 0x82, 0x81, 0xf3, 0x2d, 0x51, 0xa6, + 0xa3, 0x34, 0xf9, 0x24, 0xed, 0x35, 0x80, 0x72, + 0xae, 0x3d, 0x8b, 0xf8, 0x66, 0xb2, 0x6c, 0x3f, + 0x4e, 0x2c, 0xdb, 0x89, 0x76, 0x95, 0x8f, 0x1a, + 0xbe, 0xfc, 0x6c, 0x37, 0xec, 0xf9, 0x80, 0x32, + 0xac, 0x94, 0x97, 0x85, 0xe4, 0xa5, 0x19, 0x32, + 0x46, 0x1f, 0x98, 0x89, 0x4c, 0x85, 0xf1, 0xfc, + 0xed, 0x01, 0x98, 0x4d, 0x4a, 0xd4, 0xd1, 0x4e, + 0x82, 0x0b, 0x32, 0x0d, 0x48, 0x34, 0x64, 0x98, + 0xea, 0x6c, 0xf9, 0x11, 0x25, 0xbc, 0x48, 0xc3, + 0xf4, 0x96, 0xfc, 0x5e, 0x71, 0x5d, 0xfa, 0xf7, + 0x9f, 0x75, 0x89, 0x1d, 0xe7, 0x3b, 0x97, 0x39, + 0x18, 0x90, 0xca, 0xa5, 0x46, 0x01, 0x2a, 0x13, + 0x54, 0x5c, 0x2a, 0x14, 0xed, 0x1b, 0x65, 0x0a, + 0xb0, 0xd9, 0x95, 0x01, 0xd0, 0xb3, 0x78, 0xd6, + 0xc4, 0x06, 0xf3, 0x7f, 0x51, 0xe0, 0x39, 0xed, + 0x2c, 0xf3, 0xfa, 0xc3, 0xfa, 0x1d, 0x7c, 0x82, + 0x0f, 0x45, 0xb7, 0x15, 0xcf, 0x99, 0x53, 0x59, + 0x9d, 0x54, 0x31, 0x6a, 0xf8, 0xb8, 0x73, 0x2d, + 0xd1, 0xab, 0x1b, 0x69, 0xc9, 0x86, 0xdc, 0x7a, + 0xca, 0xb9, 0x6a, 0xaf, 0x1e, 0x8f, 0x83, 0xa8, + 0xf0, 0xae, 0x44, 0x85, 0x0d, 0x1f, 0x6c, 0x3a, + 0x90, 0x50, 0xef, 0x7c, 0x3c, 0x1c, 0xc4, 0xb8, + 0x66, 0x1c, 0x14, 0xf7, 0xf2, 0x5f, 0x5c, 0x70, + 0x28, 0xa7, 0x55, 0x93, 0xdb, 0xa0, 0x95, 0x9c, + 0x1b, 0xb7, 0xb6, 0x44, 0x5e, 0x98, 0x88, 0x89, + 0xb8, 0x5a, 0xee, 0xba, 0xfc, 0xc6, 0x87, 0x2a, + 0xdb, 0xb7, 0xcf, 0xb2, 0x4b, 0x96, 0x2c, 0x91, + 0x54, 0x34, 0x33, 0xfb, 0x57, 0xbe, 0xf5, 0x7b, + 0xbe, 0x6b, 0xa0, 0x3b, 0x4d, 0x09, 0x18, 0x9b, + 0x75, 0x2c, 0xde, 0x28, 0x87, 0xd3, 0x7b, 0xf5, + 0xbe, 0x0d, 0x33, 0x5a, 0x3b, 0x92, 0x41, 0x35, + 0x50, 0x65, 0xc9, 0xa9, 0xfa, 0xab, 0x22, 0x4b, + 0x8c, 0x3a, 0xb1, 0x9e, 0x31, 0x41, 0xd2, 0x2f, + 0xca, 0x9e, 0xd0, 0x96, 0x0c, 0x03, 0x08, 0xec, + 0x94, 0xa5, 0xb1, 0x65, 0x2b, 0xe1, 0xe4, 0x48, + 0x11, 0xd6, 0x8c, 0x60, 0x6d, 0xf4, 0x64, 0x89, + 0xa6, 0x69, 0x4b, 0xa0, 0xbe, 0xae, 0xf5, 0xde, + 0xba, 0x45, 0x12, 0xc8, 0x28, 0xe0, 0x7a, 0xb5, + 0xd4, 0x75, 0x7a, 0x24, 0x59, 0x4f, 0xbf, 0x0a, + 0xa4, 0x53, 0x9a, 0x59, 0xca, 0x06, 0x51, 0x6d, + 0xcb, 0x93, 0x63, 0x6e, 0x24, 0xe2, 0x41, 0xa5, + 0xa9, 0x19, 0xc3, 0x59, 0x9a, 0x0c, 0xb6, 0x4e, + 0x65, 0x60, 0xa0, 0x49, 0xf0, 0x7f, 0x50, 0x96, + 0xed, 0xe9, 0xfc, 0x33, 0x5b, 0x52, 0x51, 0x7e, + 0x77, 0xd7, 0xbb, 0xaf, 0xdd, 0x12, 0x4b, 0xbc, + 0xc6, 0xae, 0xca, 0x92, 0x3a, 0x9f, 0xc1, 0x0c, + 0x8f, 0x01, 0xbe, 0x4c, 0x78, 0x23, 0x7c, 0x8b, + 0x82, 0xb7, 0x45, 0x80, 0x44, 0x34, 0x9d, 0x13, + 0xdb, 0xc4, 0x3f, 0x1b, 0x39, 0xb0, 0xee, 0xa9, + 0xac, 0x5e, 0x3d, 0xc3, 0x59, 0x92, 0xcc, 0x6e, + 0x6c, 0x97, 0xcc, 0xba, 0x15, 0xa6, 0x53, 0x92, + 0x76, 0x35, 0x01, 0x70, 0x16, 0xde, 0xde, 0x56, + 0xc3, 0xb3, 0x48, 0x8b, 0x4d, 0xfa, 0xa7, 0xcb, + 0x43, 0xb5, 0x76, 0x9a, 0x56, 0x03, 0xd6, 0x41, + 0xbe, 0x73, 0x89, 0x1f, 0x6f, 0x02, 0x3f, 0xcc, + 0xaf, 0x49, 0xe3, 0x5e, 0xb3, 0xf4, 0xbc, 0x61, + 0xf9, 0x9e, 0x9e, 0xec, 0x10, 0x98, 0x0d, 0x5a, + 0x6d, 0xcf, 0xbf, 0xe3, 0xe5, 0xf5, 0x1b, 0x17, + 0x46, 0x7a, 0x32, 0xc7, 0x18, 0x40, 0x20, 0x8e, + 0x06, 0x62, 0x2d, 0x1b, 0x90, 0x54, 0x4f, 0x7f, + 0xe4, 0x50, 0x09, 0xdc, 0x57, 0x22, 0xe9, 0x7c, + 0x3c, 0x77, 0x57, 0xc2, 0x8b, 0xc9, 0x6a, 0x2b, + 0x31, 0xa1, 0x7f, 0x14, 0xdf, 0x22, 0x7d, 0xed, + 0xc9, 0x0d, 0xbb, 0x93, 0xba, 0x72, 0x85, 0x33, + 0x58, 0x80, 0xc0, 0xf5, 0x75, 0x5d, 0x7e, 0x5f, + 0xfb, 0x41, 0xbc, 0x5f, 0x62, 0x13, 0xb9, 0x16, + 0x1e, 0xfe, 0x9e, 0x53, 0x53, 0xce, 0xa0, 0xfc, + 0x7f, 0xf6, 0x18, 0xc2, 0x0f, 0xb9, 0x7f, 0xbf, + 0x09, 0xc3, 0x37, 0x08, 0xb0, 0x1f, 0x16, 0x80, + 0x5e, 0xf6, 0xcb, 0xfe, 0x22, 0x7c, 0x07, 0x99, + 0xb3, 0x12, 0x69, 0xa4, 0x05, 0xc9, 0x29, 0xc7, + 0xd0, 0x57, 0x05, 0x33, 0x85, 0x0c, 0xd4, 0xfe, + 0xfc, 0x54, 0xa8, 0xc9, 0x7b, 0x92, 0x67, 0xa6, + 0xa7, 0xbf, 0x5f, 0xfc, 0xe9, 0x65, 0x31, 0x4f, + 0x85, 0x8f, 0x89, 0xbe, 0xa1, 0xdb, 0x6d, 0x96, + 0x52, 0x09, 0x56, 0x12, 0xc6, 0xb2, 0x28, 0x26, + 0x07, 0x39, 0x21, 0x39, 0xce, 0x55, 0xf9, 0x82, + 0x23, 0xc2, 0x3f, 0x3a, 0x66, 0xc4, 0xee, 0x10, + 0x4b, 0xf1, 0x1e, 0x1d, 0x59, 0xfa, 0x28, 0x20, + 0x34, 0x26, 0x49, 0x7c, 0xc3, 0x85, 0x2f, 0x80, + 0xbe, 0x2c, 0xbc, 0x94, 0x81, 0x74, 0x2a, 0x21, + 0x49, 0x1d, 0xa7, 0xff, 0xf0, 0x21, 0x56, 0x98, + 0x68, 0x8f, 0x52, 0x2d, 0xa0, 0xf2, 0x84, 0x73, + 0x2f, 0xe2, 0x90, 0x8c, 0x56, 0xd1, 0xbf, 0x67, + 0xc3, 0x19, 0x47, 0x14, 0x71, 0x62, 0x25, 0xdc, + 0x11, 0xbc, 0x24, 0xa0, 0xb2, 0x42, 0x72, 0x37, + 0x78, 0xe6, 0xe0, 0xf6, 0x8c, 0x66, 0xe5, 0x1b, + 0x7a, 0x79, 0x46, 0xc0, 0x76, 0xcd, 0xa9, 0x3c, + 0xb2, 0x17, 0x8c, 0xc9, 0xb1, 0xc4, 0x2a, 0x1f, + 0xdb, 0xf7, 0xeb, 0x8a, 0x5d, 0x29, 0xd1, 0xd1, + 0x98, 0x43, 0x9e, 0x22, 0xf3, 0x96, 0x1e, 0x83, + 0xeb, 0x44, 0x08, 0xc4, 0xa0, 0xd2, 0xd3, 0x36, + 0xf8, 0x94, 0xab, 0x3c, 0x4b, 0x68, 0xf3, 0x7c, + 0x1a, 0x16, 0x1a, 0x66, 0x77, 0x67, 0xee, 0x64, + 0xc2, 0xdb, 0x53, 0xae, 0x1f, 0xeb, 0x44, 0x77, + 0x3b, 0x5f, 0x74, 0x48, 0xe9, 0x05, 0xfa, 0x3a, + 0x03, 0x1b, 0x54, 0x36, 0xb0, 0x28, 0x79, 0x70, + 0xe6, 0x2f, 0xb4, 0xf5, 0x28, 0x60, 0x1e, 0x63, + 0xf6, 0x03, 0x09, 0x4f, 0x0f, 0x7f, 0x01, 0xe5, + 0x02, 0x6a, 0x76, 0x96, 0xb9, 0x58, 0x39, 0xf9, + 0xc4, 0x05, 0xac, 0x93, 0x2f, 0x30, 0xab, 0xc5, + 0x2b, 0xad, 0xed, 0x3c, 0xb0, 0x6c, 0x66, 0x94, + 0x7e, 0x79, 0x01, 0x90, 0xf0, 0x10, 0xb5, 0xcd, + 0x6b, 0x07, 0xc2, 0xe7, 0x8a, 0xac, 0xf7, 0x5b, + 0xb5, 0x11, 0xf8, 0x1a, 0x52, 0xc7, 0x5d, 0x2c, + 0xc1, 0xce, 0x8f, 0x0c, 0xc1, 0x6a, 0x95, 0x80, + 0x25, 0xf9, 0x95, 0x28, 0x18, 0x65, 0xd3, 0x15, + 0x0e, 0xbf, 0x6f, 0xa6, 0x86, 0xd9, 0xea, 0xdc, + 0xb8, 0x89, 0x02, 0x08, 0x6b, 0xd1, 0x96, 0xb1, + 0x6f, 0xb1, 0x28, 0x6b, 0xc4, 0xe3, 0xa8, 0x53, + 0xd3, 0xd0, 0x67, 0x00, 0x7c, 0xa1, 0x0a, 0xd1, + 0x9a, 0x89, 0x12, 0xc9, 0xa7, 0x3f, 0x03, 0x03, + 0xad, 0x0f, 0x34, 0x2c, 0xd8, 0xdf, 0x70, 0xed, + 0x38, 0xf4, 0xb1, 0xf7, 0xb1, 0x72, 0x5e, 0x2d, + 0xa6, 0xb7, 0x8d, 0x9c, 0x7f, 0x96, 0x73, 0xc8, + 0x47, 0x46, 0x20, 0x2f, 0x44, 0x2c, 0x2b, 0xa2, + 0x30, 0xe4, 0x81, 0x91, 0x7e, 0xce, 0x4c, 0x8b, + 0xcc, 0x5f, 0xfd, 0xff, 0x2f, 0x94, 0xbd, 0xe5, + 0xaf, 0x09, 0xcd, 0xb6, 0xbc, 0x65, 0x83, 0xc3, + 0xcd, 0x79, 0xc4, 0x68, 0xda, 0x46, 0x36, 0x97, + 0x52, 0x35, 0x90, 0x4f, 0x1d, 0x8d, 0x66, 0x1f, + 0xea, 0x5d, 0xef, 0xdf, 0x8c, 0xa8, 0x6b, 0xb0, + 0xdc, 0x1a, 0x1e, 0x79, 0x43, 0xe9, 0x29, 0x71, + 0x11, 0xbd, 0xe5, 0xd6, 0x71, 0xf4, 0xa7, 0xf8, + 0x64, 0x40, 0x73, 0x46, 0x5b, 0x2a, 0xb5, 0x9a, + 0xa1, 0x9a, 0x64, 0x4c, 0x5e, 0xa5, 0x8d, 0xfd, + 0x49, 0x91, 0xba, 0xe3, 0xa7, 0x19, 0xac, 0x2b, + 0xe9, 0xea, 0xf1, 0x1c, 0x85, 0x91, 0xea, 0xfb, + 0xc7, 0x5c, 0x46, 0x7e, 0xa8, 0x0a, 0x92, 0xbf, + 0x61, 0x2d, 0xc2, 0x20, 0x7e, 0xf7, 0x0d, 0xb8, + 0x65, 0x41, 0x48, 0x39, 0xb9, 0xb0, 0xd4, 0xc1, + 0x84, 0xee, 0x21, 0xba, 0x9c, 0x74, 0xf3, 0x6d, + 0x0a, 0x33, 0x87, 0xab, 0x2e, 0x15, 0x1b, 0xad, + 0xac, 0x98, 0xae, 0x7c, 0xd8, 0xae, 0x03, 0x50, + 0xfa, 0xae, 0xfe, 0x8c, 0x6d, 0x51, 0x67, 0x76, + 0x70, 0xa6, 0x2f, 0x1e, 0x6a, 0x4f, 0xf0, 0xbe, + 0x51, 0xbb, 0xa6, 0x20, 0x1f, 0x56, 0x72, 0x34, + 0xd0, 0x13, 0x6e, 0x0f, 0x1a, 0xcb, 0x34, 0xe1, + 0xfb, 0x3c, 0xf1, 0x43, 0x1b, 0x73, 0x40, 0xa0, + 0x1f, 0x5d, 0x40, 0x51, 0x9f, 0x97, 0x56, 0x1f, + 0x26, 0x54, 0x03, 0xb8, 0x2e, 0xfd, 0xc7, 0x52, + 0xea, 0x85, 0x5d, 0x45, 0x71, 0xa3, 0x5c, 0x86, + 0x23, 0xcb, 0x08, 0xc5, 0xd8, 0x21, 0xfd, 0x10, + 0x49, 0xac, 0xaa, 0xd5, 0x97, 0x37, 0xbb, 0xad, + 0xd5, 0x84, 0xc2, 0x65, 0xeb, 0xdd, 0x92, 0x7c, + 0x50, 0x64, 0x4f, 0x08, 0x32, 0x56, 0x81, 0x39, + 0xa4, 0xfc, 0x3f, 0x04, 0xbb, 0xde, 0xe9, 0xcd, + 0xb6, 0xbb, 0x29, 0x6b, 0x75, 0x64, 0x32, 0x5f, + 0xca, 0xd0, 0x3a, 0x19, 0x3d, 0x01, 0x8c, 0x0b, + 0xd5, 0x76, 0xe6, 0x97, 0x5d, 0x73, 0x7b, 0xb3, + 0xcd, 0xdf, 0xbc, 0x29, 0xda, 0xa5, 0x22, 0xfb, + 0x1d, 0xf6, 0xf1, 0x50, 0x71, 0x50, 0xd3, 0xf8, + 0x0a, 0xbf, 0x37, 0x28, 0xca, 0x3b, 0xab, 0xec, + 0xf5, 0xee, 0x2d, 0x1e, 0x21, 0x35, 0x39, 0x56, + 0x55, 0x3c, 0x9e, 0x5a, 0x58, 0x94, 0x85, 0xa7, + 0xba, 0x0d, 0xa4, 0x0b, 0x4c, 0x73, 0xb2, 0x56, + 0x68, 0x5a, 0x5d, 0x6c, 0x18, 0xce, 0xc5, 0x25, + 0x14, 0xc9, 0xb3, 0xc9, 0x94, 0x57, 0x62, 0x95, + 0xd5, 0x1c, 0xf6, 0x93, 0x12, 0x45, 0x28, 0xa1, + 0x7e, 0x96, 0x53, 0x68, 0xf5, 0x6a, 0xca, 0xbe, + 0x04, 0x94, 0x97, 0xcf, 0xb5, 0xcf, 0x70, 0xe1, + 0x7e, 0x15, 0x2d, 0x6a, 0x67, 0x0c, 0x86, 0x07, + 0xd1, 0xe2, 0x95, 0xc3, 0xd8, 0x22, 0xdf, 0x6a, + 0x88, 0xc1, 0xad, 0x83, 0x57, 0x30, 0xd0, 0x59, + 0xaf, 0xf4, 0x9f, 0x8d, 0x89, 0x7d, 0x0b, 0xee, + 0xb7, 0x1c, 0xaa, 0xd2, 0x4c, 0x7a, 0xa4, 0xfb, + 0x99, 0xe0, 0x0a, 0xd7, 0x4d, 0xc4, 0xe9, 0x88, + 0x18, 0x27, 0x1d, 0xb2, 0xe9, 0x43, 0x16, 0x25, + 0x29, 0x04, 0x98, 0x81, 0xfd, 0xaf, 0xdd, 0x3f, + 0xf1, 0x61, 0x32, 0x20, 0x51, 0x96, 0xe4, 0xd2, + 0xab, 0xc4, 0x00, 0x33, 0xb4, 0x7b, 0x3c, 0xc2, + 0x2d, 0x61, 0x11, 0x4d, 0x72, 0x16, 0x6d, 0xfb, + 0x24, 0x67, 0x7c, 0xea, 0xf0, 0x79, 0xa3, 0x50, + 0x93, 0xe3, 0x9b, 0x7f, 0x89, 0xf0, 0xa6, 0x8c, + 0xb0, 0xaf, 0x1c, 0xe0, 0x91, 0xce, 0x3f, 0xe5, + 0x43, 0x90, 0x41, 0x95, 0xc7, 0x1f, 0x8f, 0x0a, + 0xb2, 0x1e, 0x84, 0x3e, 0x86, 0xf0, 0x81, 0x87, + 0x8b, 0x04, 0x52, 0xa6, 0x46, 0xb0, 0xe4, 0xf4, + 0x5b, 0x97, 0x7b, 0x7b, 0x32, 0xb6, 0x17, 0x96, + 0x48, 0x12, 0xb6, 0x31, 0xf1, 0x5c, 0xd4, 0x8b, + 0x93, 0x60, 0xc4, 0x00, 0xea, 0x12, 0xe1, 0x93, + 0x6f, 0x53, 0x82, 0x2a, 0x48, 0x1d, 0xc1, 0x91, + 0x79, 0x7c, 0x30, 0x43, 0xe5, 0x1e, 0x10, 0x7e, + 0x7f, 0xbc, 0x18, 0x60, 0x03, 0x2a, 0xe5, 0xbb, + 0x92, 0x7f, 0x24, 0x54, 0x12, 0x21, 0x77, 0x89, + 0xc9, 0x22, 0xfb, 0x57, 0xaa, 0x69, 0xdd, 0x69, + 0x06, 0xb0, 0xe5, 0x5b, 0x74, 0x1f, 0x02, 0x99, + 0x62, 0x56, 0x21, 0x29, 0xd2, 0x26, 0x0f, 0x6a, + 0x3a, 0x05, 0x96, 0x92, 0xb9, 0xff, 0xe9, 0x3b, + 0x24, 0x70, 0xd4, 0x13, 0xa4, 0xb2, 0x6c, 0x76, + 0xe3, 0x55, 0xe5, 0xc8, 0x18, 0x66, 0x60, 0x91, + 0xba, 0x98, 0x5d, 0x67, 0x13, 0x97, 0xce, 0x49, + 0xaa, 0x52, 0x7b, 0x20, 0x65, 0x65, 0x0a, 0x4f, + 0x7b, 0x0a, 0x26, 0x62, 0xa7, 0xb5, 0xab, 0x2d, + 0x5d, 0x37, 0xad, 0xb8, 0x97, 0xcf, 0xf5, 0x4f, + 0xef, 0x03, 0xed, 0xce, 0x73, 0x68, 0x5d, 0x9f, + 0x6c, 0x3d, 0x3f, 0xd5, 0xc1, 0xca, 0x5f, 0xef, + 0xe4, 0xf8, 0xfb, 0xc7, 0xbb, 0x49, 0x30, 0x1a, + 0xe1, 0x3c, 0xd1, 0x7f, 0x7c, 0x26, 0xa2, 0x87, + 0x6e, 0x80, 0xa6, 0x47, 0x2c, 0x0f, 0xa6, 0x68, + 0xf6, 0xde, 0x65, 0x1f, 0x02, 0xa7, 0x09, 0x08, + 0x34, 0xbe, 0x2c, 0xc7, 0xed, 0x4c, 0xb0, 0xa1, + 0x63, 0x63, 0x35, 0xe0, 0x11, 0xfd, 0xe1, 0x2d, + 0xb4, 0xcf, 0x9e, 0x18, 0x78, 0xa8, 0x63, 0xbf, + 0xb7, 0xe8, 0x22, 0x82, 0xc5, 0x9c, 0x0b, 0x3a, + 0x1c, 0x2f, 0x73, 0x80, 0xf1, 0xbb, 0x9a, 0x84, + 0x51, 0x2c, 0x1c, 0x2e, 0xda, 0xb8, 0xa3, 0x43, + 0x4f, 0x95, 0x8c, 0x06, 0x12, 0xdc, 0x75, 0x53, + 0x01, 0xc4, 0x50, 0x95, 0x31, 0x7e, 0x75, 0x33, + 0x69, 0x3e, 0x82, 0xad, 0x51, 0x1a, 0x4d, 0xa4, + 0xe7, 0xbb, 0x7c, 0x9e, 0x3c, 0xbc, 0x1a, 0xf7, + 0x7d, 0x0f, 0xdd, 0x93, 0xb5, 0x91, 0x61, 0x28, + 0x28, 0x3b, 0x8f, 0xdd, 0xfa, 0xe6, 0xf4, 0xcc, + 0x21, 0x82, 0x0c, 0xe2, 0xe4, 0xc7, 0x39, 0x69, + 0x8e, 0xd6, 0xc0, 0x45, 0x94, 0x26, 0x27, 0x1b, + 0xca, 0x02, 0x39, 0x00, 0x12, 0xef, 0xad, 0x0f, + 0xf2, 0xdb, 0x19, 0x39, 0x6e, 0x4e, 0xfd, 0x14, + 0x56, 0x3c, 0xd3, 0xfb, 0x43, 0x2d, 0x14, 0xb1, + 0x62, 0xd2, 0xc8, 0x09, 0xe3, 0xb4, 0xf3, 0x24, + 0x4e, 0xeb, 0xe5, 0xd6, 0x42, 0x48, 0xa5, 0xf8, + 0xd8, 0xcc, 0x0b, 0xd6, 0x23, 0x59, 0x46, 0xaf, + 0x15, 0xb2, 0x36, 0x2d, 0x52, 0xbe, 0x4a, 0x5f, + 0xc6, 0xb2, 0x3d, 0xc5, 0x53, 0x57, 0x35, 0x2a, + 0xa1, 0x06, 0xc8, 0x93, 0xa8, 0x3e, 0xc6, 0xcb, + 0xa4, 0xd9, 0xe4, 0x53, 0xa9, 0xe8, 0x6d, 0xe1, + 0x73, 0x97, 0xb9, 0x6f, 0xb3, 0xf8, 0x1d, 0xb4, + 0xae, 0xd8, 0x77, 0xa7, 0xef, 0xe1, 0xeb, 0x83, + 0x3d, 0xc3, 0x35, 0xf0, 0xc6, 0xd8, 0x66, 0xb5, + 0x29, 0x7f, 0x74, 0xdb, 0xa1, 0xf2, 0x16, 0xc9, + 0x07, 0x0f, 0x5c, 0x3e, 0x18, 0x64, 0x82, 0xfd, + 0xae, 0x80, 0xca, 0xcf, 0xf9, 0x7e, 0x7f, 0x36, + 0x58, 0xd5, 0x4d, 0x2d, 0x5a, 0x27, 0x27, 0xcc, + 0x7e, 0x45, 0x0d, 0xf8, 0xd6, 0x5f, 0xee, 0x83, + 0x42, 0x83, 0x48, 0x0b, 0x64, 0xc6, 0x03, 0x4d, + 0x1e, 0x24, 0x90, 0xba, 0x2a, 0x92, 0x7d, 0x43, + 0x77, 0x17, 0xc8, 0xcc, 0x9f, 0x31, 0x80, 0x4e, + 0x19, 0x7f, 0x8f, 0xcf, 0xd7, 0x27, 0x48, 0x10, + 0xea, 0x3d, 0xd6, 0x0f, 0x70, 0x7a, 0xb9, 0xed, + 0x53, 0x67, 0x1c, 0x56, 0xb1, 0x78, 0xfc, 0x0c, + 0xcc, 0x1f, 0xf8, 0x89, 0x45, 0x57, 0x4a, 0x72, + 0xd2, 0xa0, 0x07, 0x53, 0x73, 0x3d, 0x0e, 0x45, + 0x5a, 0x31, 0x94, 0x8f, 0x5f, 0x11, 0xe4, 0x36, + 0xe2, 0x19, 0xc4, 0x84, 0x94, 0xb9, 0xc0, 0xe6, + 0x5d, 0x66, 0x7e, 0x4c, 0x05, 0xc6, 0xcd, 0x9c, + 0x6c, 0x8f, 0x32, 0x68, 0xfb, 0x66, 0x86, 0x22, + 0xf5, 0xfa, 0x9a, 0x46, 0x26, 0xb5, 0xd5, 0xc1, + 0x7d, 0xeb, 0x7b, 0x82, 0x3e, 0x62, 0x8c, 0x76, + 0x0b, 0x08, 0x1d, 0xe0, 0x75, 0x34, 0x30, 0x4b, + 0xc2, 0x4b, 0xcb, 0x49, 0xa3, 0x65, 0x0e, 0x90, + 0xd3, 0x57, 0xe5, 0xf5, 0x83, 0x1b, 0xa2, 0xbb, + 0x4a, 0x23, 0x63, 0x25, 0x64, 0xd7, 0xf1, 0x85, + 0x9b, 0xbe, 0x2e, 0xda, 0xad, 0xc8, 0x60, 0x37, + 0x3c, 0x78, 0x33, 0xb5, 0x76, 0x7c, 0xc6, 0xe5, + 0x97, 0x86, 0x6d, 0x70, 0xdc, 0x4f, 0x79, 0x39, + 0xe6, 0x27, 0x78, 0x57, 0x98, 0x69, 0x79, 0xaf, + 0x0a, 0xc0, 0x64, 0x0c, 0x1a, 0x09, 0xa0, 0x98, + 0x06, 0x41, 0x5c, 0x29, 0x27, 0xbd, 0x2e, 0xbe, + 0xe8, 0x08, 0x5f, 0xdf, 0xed, 0xd9, 0x31, 0x97, + 0xdb, 0x0a, 0x1f, 0x4e, 0x1b, 0x67, 0x32, 0xef, + 0x84, 0xa2, 0x14, 0xa7, 0x83, 0x33, 0xdc, 0x40, + 0x55, 0x76, 0x27, 0x01, 0x9f, 0x98, 0x90, 0xa9, + 0xfa, 0xfb, 0x73, 0x86, 0x38, 0x6b, 0xa8, 0x57, + 0xc9, 0xaa, 0x06, 0xbf, 0x84, 0x97, 0xfa, 0xc8, + 0xde, 0x67, 0x6b, 0xa6, 0x2c, 0xa1, 0x90, 0x6c, + 0x6d, 0xcd, 0xb5, 0x73, 0x3c, 0x16, 0x68, 0xb4, + 0x00, 0x55, 0xf6, 0xd8, 0x35, 0xb0, 0xf9, 0x8e, + 0x2e, 0xfb, 0x54, 0xc1, 0x8e, 0x51, 0x90, 0x2d, + 0x28, 0x83, 0x5d, 0x81, 0xd6, 0x00, 0x00, 0x41, + 0xf2, 0x97, 0xdf, 0x2f, 0x8d, 0xa8, 0xc2, 0x1d, + 0xe3, 0xbd, 0x1d, 0x2a, 0x6f, 0x4a, 0xfd, 0xd3, + 0xcd, 0x0b, 0xac, 0x28, 0x93, 0x87, 0x3e, 0xd9, + 0x7b, 0x17, 0xe2, 0x66, 0x0a, 0x6e, 0xcb, 0xa8, + 0x3e, 0x3d, 0x9b, 0x3c, 0xbe, 0x78, 0xe1, 0x2a, + 0xa5, 0x42, 0x5f, 0xdc, 0xe0, 0x0e, 0x06, 0x10, + 0x59, 0xac, 0x4a, 0xd3, 0x63, 0x95, 0x92, 0x31, + 0x1c, 0x7d, 0xb1, 0x5e, 0x48, 0x01, 0x23, 0x16, + 0x61, 0xb3, 0xfc, 0xe6, 0x9a, 0x5d, 0x39, 0xf9, + 0x2f, 0xb5, 0xc6, 0x6d, 0xeb, 0xb2, 0x6e, 0x93, + 0x9d, 0x8b, 0x19, 0x74, 0xa9, 0xc4, 0x57, 0x96, + 0xbc, 0x1c, 0xbb, 0x88, 0x5a, 0xd6, 0xf7, 0xc0, + 0xe2, 0xb6, 0xf2, 0xb3, 0xf0, 0x56, 0x5b, 0x2c, + 0x9e, 0xdf, 0x96, 0x6d, 0xcc, 0x41, 0x06, 0xce, + 0x1e, 0x1b, 0x3a, 0x39, 0x67, 0xe1, 0x7e, 0x81, + 0xfc, 0xff, 0x0a, 0xc0, 0xf1, 0x76, 0x82, 0x49, + 0x76, 0x88, 0x38, 0x10, 0x5c, 0x90, 0x83, 0x4b, + 0x3e, 0x8d, 0xb9, 0x35, 0x77, 0xf5, 0x4c, 0x7e, + 0x3e, 0x12, 0x54, 0xf0, 0x33, 0x56, 0xbc, 0x9b, + 0x0e, 0x10, 0x7d, 0x4a, 0xb6, 0x2d, 0x02, 0x35, + 0x79, 0xe8, 0x0c, 0x15, 0xc1, 0xde, 0xc7, 0x2a, + 0x7d, 0xe1, 0x27, 0xd4, 0x99, 0x50, 0x6b, 0xde, + 0x6d, 0x02, 0x65, 0x12, 0x88, 0xe6, 0x80, 0x13, + 0x5e, 0xad, 0xb1, 0xef, 0xe7, 0x77, 0x19, 0xc9, + 0x63, 0xcf, 0x14, 0x41, 0x40, 0x76, 0xc8, 0xa9, + 0xc3, 0x08, 0x88, 0xdb, 0x44, 0x6c, 0x10, 0x74, + 0x5c, 0xf6, 0x86, 0x8c, 0x61, 0x95, 0x19, 0x76, + 0x1f, 0x3e, 0xcb, 0xdf, 0x6e, 0x08, 0x9f, 0x43, + 0xb9, 0x66, 0x2b, 0x88, 0x27, 0x48, 0xbe, 0x5d, + 0x9e, 0x83, 0x72, 0x9a, 0x43, 0x06, 0x8e, 0xf3, + 0x9e, 0xba, 0xd5, 0xd8, 0x70, 0x1b, 0xe4, 0x4e, + 0x39, 0x0a, 0x37, 0x5b, 0x2f, 0x8c, 0xa8, 0xbd, + 0x3c, 0xfe, 0xb2, 0x59, 0x5b, 0x5f, 0x5a, 0x05, + 0x67, 0xc8, 0xec, 0x71, 0x5d, 0xb5, 0x77, 0xc7, + 0xb3, 0x1c, 0xb7, 0xac, 0x90, 0xf6, 0xd3, 0xb7, + 0x61, 0x65, 0xbe, 0x29, 0x8f, 0x27, 0x65, 0x9a, + 0x9a, 0x1c, 0x00, 0x82, 0xee, 0x10, 0xb9, 0x60, + 0xff, 0x9f, 0x5a, 0xbe, 0x09, 0x72, 0x63, 0x79, + 0x60, 0x50, 0x84, 0x18, 0xc9, 0xc5, 0x0d, 0x43, + 0xce, 0x29, 0x80, 0x72, 0x83, 0x12, 0x73, 0x13, + 0x44, 0xec, 0x25, 0xe5, 0x15, 0x70, 0xe2, 0x7f, + 0x6b, 0x54, 0x5b, 0x58, 0x57, 0x06, 0xdc, 0xae, + 0x1f, 0x9c, 0x38, 0x4c, 0xbf, 0x1c, 0x42, 0xb2, + 0x63, 0x9c, 0xfb, 0xae, 0xc0, 0xdf, 0xd3, 0xcc, + 0xcc, 0xb9, 0x9b, 0xe9, 0x66, 0x77, 0x70, 0x47, + 0x6c, 0x8b, 0x5b, 0xc1, 0x87, 0x7a, 0x63, 0xa3, + 0x13, 0xfc, 0x2d, 0x16, 0xd3, 0xe2, 0x00, 0xe9, + 0x94, 0x11, 0xf2, 0x28, 0xda, 0x0b, 0x58, 0x09, + 0x2d, 0x59, 0x2d, 0xb5, 0x25, 0x99, 0xca, 0x63, + 0xc9, 0x96, 0xa3, 0x17, 0x2a, 0x0e, 0x22, 0x2c, + 0x5f, 0x8d, 0x53, 0xc4, 0xd1, 0x3d, 0x4e, 0x20, + 0xdc, 0x44, 0x18, 0xd2, 0xd8, 0x5c, 0x9a, 0x78, + 0x0a, 0x53, 0xa8, 0x73, 0x7d, 0x98, 0xc0, 0xba, + 0xfb, 0xfe, 0x27, 0xd4, 0x82, 0x87, 0xd4, 0x4d, + 0xc0, 0xe3, 0xd1, 0xd0, 0xff, 0xf0, 0xd3, 0x04, + 0xfd, 0x11, 0xf4, 0x57, 0xc2, 0xcc, 0xcf, 0xa9, + 0xe6, 0xc5, 0x09, 0x4d, 0xcc, 0x36, 0x69, 0x26, + 0x35, 0x8c, 0xe8, 0xe2, 0xe2, 0xdd, 0x5a, 0x5f, + 0xaf, 0xda, 0x38, 0x07, 0x33, 0xfb, 0xf8, 0xfb, + 0xf9, 0x62, 0x4a, 0x75, 0xad, 0xc3, 0x95, 0xd3, + 0x6e, 0x5b, 0xe3, 0x10, 0x2f, 0x31, 0xaf, 0xcd, + 0x57, 0xb9, 0x84, 0x3d, 0xa4, 0x66, 0x3f, 0x10, + 0xeb, 0xa2, 0xe2, 0xfa, 0xc7, 0xd3, 0x91, 0x83, + 0x48, 0xbb, 0x3a, 0x6c, 0xe4, 0x12, 0x1c, 0x36, + 0x44, 0xc5, 0x07, 0x07, 0x9b, 0x9d, 0x51, 0x3e, + 0x74, 0xc5, 0x35, 0x8a, 0x10, 0x9c, 0x0d, 0x81, + 0xf3, 0x10, 0x0f, 0x29, 0xaf, 0x01, 0x5d, 0x6f, + 0x7f, 0x50, 0x9a, 0xf8, 0xbf, 0x1c, 0x57, 0xfc, + 0x25, 0x5c, 0x02, 0x15, 0x43, 0x0b, 0x60, 0x21, + 0xf3, 0xb1, 0x43, 0x9a, 0x41, 0xa0, 0xc1, 0x1b, + 0x7a, 0x88, 0x97, 0xfd, 0x27, 0x56, 0xf7, 0x48, + 0x1f, 0xb6, 0x9a, 0xa2, 0xb1, 0xc5, 0xab, 0x30, + 0xa1, 0x14, 0x91, 0xef, 0x14, 0xe3, 0x01, 0x73, + 0xf3, 0x8d, 0xfa, 0xd7, 0xae, 0x2f, 0x13, 0x5d, + 0x66, 0xfb, 0x1c, 0x4b, 0x2e, 0x94, 0xdb, 0x9f, + 0x10, 0x5b, 0x2a, 0x5e, 0x85, 0x98, 0x73, 0x9d, + 0xcd, 0x7c, 0xa0, 0x79, 0xb6, 0xef, 0x8e, 0xf8, + 0xdd, 0x11, 0x32, 0x0d, 0xec, 0x6a, 0x04, 0xea, + 0x81, 0xd7, 0x63, 0xbd, 0x01, 0x77, 0x3e, 0x52, + 0x30, 0x88, 0x3a, 0x9e, 0x04, 0xdf, 0x42, 0x8b, + 0x40, 0x23, 0xa9, 0x5a, 0x97, 0x21, 0x55, 0xce, + 0x72, 0x21, 0x45, 0x40, 0x01, 0x66, 0x63, 0x1d, + 0xab, 0x37, 0x8d, 0xd5, 0x75, 0x56, 0xc2, 0x7c, + 0xa0, 0x9e, 0xa5, 0x85, 0xc2, 0x0b, 0x51, 0x80, + 0xae, 0x0c, 0xb3, 0xde, 0xa4, 0xb5, 0xa3, 0xa3, + 0x00, 0xe1, 0xc9, 0x09, 0xee, 0xab, 0xbb, 0x36, + 0x78, 0x5b, 0x3f, 0x45, 0x3d, 0xf6, 0xe8, 0x7e, + 0xa3, 0xd7, 0x24, 0x78, 0xdf, 0xbc, 0x9f, 0xe4, + 0x4c, 0x4d, 0x22, 0xb8, 0x76, 0xb0, 0x6a, 0xc1, + 0x35, 0x66, 0xfe, 0xaf, 0xf1, 0xb4, 0x44, 0x5e, + 0xe0, 0xff, 0xcf, 0x80, 0xf8, 0xa8, 0x5f, 0x59, + 0x91, 0xa4, 0x4f, 0xc0, 0x58, 0xb1, 0x2d, 0xc9, + 0x6a, 0xcd, 0x62, 0xcb, 0x41, 0x89, 0x9d, 0x3b, + 0x3e, 0x48, 0x5f, 0x23, 0x46, 0x21, 0x8a, 0x49, + 0xc0, 0x16, 0x07, 0x4d, 0xd9, 0x26, 0xbe, 0x86, + 0xfb, 0x06, 0xbd, 0x41, 0xc5, 0xd8, 0x87, 0xf6, + 0x94, 0xb1, 0xef, 0xed, 0xab, 0xfb, 0x93, 0x48, + 0x5a, 0xe7, 0x22, 0xbc, 0x2b, 0x24, 0xb4, 0x86, + 0x33, 0x9b, 0xd6, 0x09, 0x46, 0x85, 0x81, 0x89, + 0xa9, 0x30, 0x13, 0xfa, 0x08, 0x55, 0xfc, 0xe5, + 0xfb, 0xc8, 0xb2, 0xa8, 0x31, 0x4c, 0x9e, 0x1c, + 0xff, 0x80, 0x10, 0x77, 0x5f, 0xf1, 0x07, 0x14, + 0xf7, 0x88, 0xb9, 0xeb, 0x48, 0xfe, 0x18, 0x48, + 0xf3, 0xaf, 0xfd, 0x7d, 0x0c, 0x9f, 0x30, 0x11, + 0xcb, 0xed, 0xfc, 0x31, 0xf5, 0x6e, 0x72, 0xfa, + 0x9a, 0x3a, 0xa5, 0x1d, 0x89, 0x89, 0x8b, 0xc6, + 0x2c, 0xaf, 0xa6, 0xef, 0xbd, 0xb4, 0xc2, 0xa0, + 0x97, 0x74, 0xd0, 0x4d, 0x72, 0xb7, 0xe8, 0x24, + 0xba, 0x5e, 0x53, 0x4b, 0x91, 0xc1, 0xe4, 0x14, + 0x22, 0x50, 0xb2, 0xc3, 0x84, 0xf4, 0xa6, 0xb3, + 0xa4, 0x99, 0xda, 0x82, 0x55, 0x8e, 0x38, 0xb4, + 0x0c, 0x21, 0xe5, 0x91, 0x30, 0xc7, 0x80, 0x55, + 0xf1, 0x69, 0xde, 0xd7, 0x82, 0xf3, 0x08, 0xd3, + 0x16, 0x69, 0xe7, 0xd4, 0xeb, 0xfc, 0x9b, 0x8f, + 0xd6, 0xfc, 0xf9, 0x9f, 0x95, 0xb3, 0x90, 0xa6, + 0x12, 0x21, 0x53, 0x50, 0xd5, 0x3e, 0x2b, 0x46, + 0x14, 0x52, 0x20, 0x1c, 0x33, 0xed, 0xdd, 0x58, + 0x81, 0x92, 0x37, 0xe5, 0x99, 0x77, 0xfa, 0x29, + 0x28, 0x49, 0x07, 0xc8, 0xe2, 0x41, 0x8f, 0x77, + 0x3b, 0xb4, 0x8c, 0x34, 0x3e, 0x80, 0xcb, 0xcf, + 0x73, 0x4d, 0xfc, 0x78, 0x60, 0x9e, 0xd0, 0x86, + 0xc3, 0x4d, 0xa7, 0x40, 0x9c, 0x03, 0x72, 0x46, + 0xc3, 0xc3, 0x74, 0xdf, 0x5a, 0x47, 0x8d, 0xbc, + 0xc1, 0x5b, 0x10, 0x3e, 0x7e, 0x09, 0x3d, 0xdb, + 0x0c, 0xc4, 0x3b, 0x12, 0xbf, 0x66, 0xe2, 0xb7, + 0x4c, 0x1a, 0x81, 0x58, 0x63, 0x39, 0x72, 0xde, + 0xfa, 0x5d, 0xcc, 0x2c, 0x69, 0x11, 0x0a, 0x5f, + 0xb9, 0xbc, 0xda, 0x80, 0x03, 0x8e, 0xa2, 0x02, + 0x6c, 0xc1, 0x15, 0xcc, 0xbf, 0x01, 0x14, 0xd0, + 0x36, 0xad, 0xdb, 0xb7, 0x77, 0xd6, 0x99, 0x94, + 0xf5, 0xa5, 0xac, 0xce, 0x9a, 0x23, 0x9b, 0x1e, + 0xa4, 0x97, 0x7e, 0x41, 0xc1, 0x65, 0xc7, 0x94, + 0xfa, 0x07, 0x1d, 0x9a, 0x87, 0xba, 0xee, 0xef, + 0x99, 0x92, 0xaa, 0x41, 0x29, 0x03, 0xe3, 0x01, + 0x17, 0x42, 0xed, 0x11, 0x68, 0x44, 0x02, 0xca, + 0x81, 0x4b, 0x33, 0x81, 0x64, 0x30, 0x95, 0x7f, + 0x81, 0x17, 0xe6, 0x59, 0x0b, 0x4e, 0xf3, 0x4a, + 0x72, 0x0c, 0x45, 0x1e, 0x1d, 0x44, 0xe2, 0x9e, + 0x45, 0x29, 0x88, 0xb4, 0xda, 0x9b, 0x9f, 0x3e, + 0x92, 0x9a, 0x0b, 0x21, 0x2a, 0xd4, 0xa0, 0xd8, + 0xd8, 0xbd, 0x06, 0x6d, 0x71, 0x3c, 0xcc, 0xd8, + 0xdc, 0x19, 0xd7, 0x8f, 0x21, 0x01, 0x25, 0xa5, + 0x15, 0x62, 0x43, 0xfa, 0xdf, 0xb9, 0x33, 0x23, + 0xd3, 0xa2, 0xab, 0xb1, 0x7e, 0x4e, 0x5e, 0x46, + 0xbd, 0x76, 0x6e, 0x18, 0x88, 0x5f, 0x85, 0x03, + 0x43, 0x57, 0xd6, 0x3a, 0xf2, 0xcc, 0x9d, 0xbc, + 0x2c, 0x67, 0xa8, 0xcd, 0xda, 0xe8, 0x39, 0x61, + 0x68, 0x6d, 0xcf, 0xeb, 0x07, 0x1f, 0x58, 0x61, + 0x68, 0x6d, 0x78, 0xa6, 0xad, 0xb6, 0x16, 0x70, + 0x89, 0x49, 0x59, 0x62, 0x76, 0xc1, 0xc3, 0xc8, + 0xce, 0xe2, 0xfc, 0x42, 0x51, 0x8d, 0xc8, 0xf1, + 0x03, 0x17, 0x36, 0x55, 0x8c, 0x8e, 0x98, 0xd1, + 0x33, 0x3c, 0x4c, 0x63, 0x81, 0x97, 0xc5, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0c, 0x16, 0x19, 0x23, + 0x28, 0x30, 0x37, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa87", + .pk_len =3D DILITHIUM87_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM87_PUBLICKEYBYTES]){ + 0x89, 0xf7, 0x32, 0xb6, 0xaa, 0x73, 0x16, 0x1d, + 0x84, 0x36, 0x12, 0x7a, 0xb9, 0xfc, 0xb6, 0x66, + 0x14, 0x43, 0x0a, 0xd4, 0x61, 0x63, 0xcc, 0x2b, + 0x3c, 0x70, 0x9e, 0x14, 0x81, 0xe7, 0x57, 0xcd, + 0x89, 0x3d, 0xc0, 0x21, 0x25, 0xaa, 0x4d, 0x16, + 0x47, 0xfb, 0xc7, 0xfb, 0x94, 0xbf, 0x0d, 0x11, + 0x54, 0xec, 0x78, 0x94, 0x52, 0xa2, 0x36, 0x7a, + 0xf3, 0xc4, 0xcd, 0xc2, 0x91, 0x7b, 0x6c, 0x2f, + 0x6f, 0x0f, 0xb8, 0xc7, 0x25, 0x52, 0x50, 0x32, + 0x9b, 0x5d, 0x92, 0x92, 0x3f, 0x81, 0x51, 0xbd, + 0x2f, 0xfc, 0x78, 0xf1, 0xa2, 0x23, 0x29, 0x56, + 0x9f, 0x97, 0x1d, 0xf0, 0xab, 0x24, 0x3e, 0x87, + 0x10, 0x39, 0xb9, 0x93, 0xe9, 0xe9, 0x6b, 0xbd, + 0x6a, 0x30, 0xef, 0x9e, 0xf3, 0xe0, 0x93, 0x53, + 0x84, 0x84, 0xe1, 0x75, 0xb8, 0xe7, 0x32, 0x40, + 0xc9, 0x1e, 0x01, 0x9c, 0x24, 0xf1, 0x48, 0xd5, + 0xd6, 0x46, 0x78, 0x64, 0x9a, 0x68, 0x71, 0xf9, + 0x77, 0xbd, 0xf0, 0xdf, 0x8d, 0xd3, 0xf0, 0x3d, + 0x53, 0x53, 0xd2, 0x16, 0xde, 0x75, 0x60, 0x25, + 0x9a, 0xa6, 0x5d, 0x3a, 0xba, 0x9b, 0xad, 0xad, + 0xd8, 0xcd, 0x8e, 0x84, 0x7c, 0x9f, 0x72, 0x86, + 0xd2, 0x73, 0xca, 0x8f, 0xb8, 0x5d, 0xe5, 0xa5, + 0x6f, 0x2d, 0x18, 0x07, 0xb4, 0x06, 0x42, 0xe8, + 0x55, 0xe2, 0xcb, 0xc4, 0x64, 0x53, 0xe3, 0x6a, + 0x63, 0xc3, 0x4d, 0xa2, 0x6c, 0xe5, 0xb8, 0xf0, + 0x5f, 0xe4, 0x6d, 0xd6, 0x30, 0x53, 0x66, 0xbf, + 0x36, 0xa3, 0x41, 0x31, 0xc7, 0x67, 0xa5, 0x7e, + 0x67, 0xeb, 0xac, 0x47, 0xd3, 0x95, 0xa1, 0x95, + 0x5d, 0x16, 0xdf, 0x6c, 0x69, 0x9a, 0x37, 0xba, + 0xb1, 0x6a, 0xd1, 0x00, 0x1c, 0x49, 0x31, 0xdc, + 0xd1, 0x62, 0xf7, 0xb1, 0x34, 0x0b, 0xb1, 0x0c, + 0x69, 0x56, 0xbb, 0x69, 0x44, 0x87, 0xa3, 0xcc, + 0x3a, 0xad, 0x26, 0xa2, 0x91, 0xfd, 0xab, 0x0f, + 0x33, 0x5c, 0x62, 0x1f, 0x24, 0xf5, 0x5e, 0x65, + 0xda, 0xa2, 0x16, 0x34, 0xd0, 0x7b, 0x51, 0x01, + 0x22, 0xf5, 0x21, 0x07, 0x17, 0x78, 0x8d, 0x79, + 0x5c, 0xd2, 0x45, 0x9a, 0x3c, 0xcc, 0x3a, 0xef, + 0xdd, 0xca, 0x07, 0x19, 0x1b, 0x0e, 0xfc, 0xf2, + 0x8f, 0xbd, 0x06, 0xca, 0x6e, 0x6b, 0x78, 0x77, + 0xca, 0x50, 0x1a, 0x2f, 0x28, 0x43, 0x87, 0x34, + 0x52, 0x96, 0x26, 0x86, 0xeb, 0xfc, 0xfc, 0x87, + 0x63, 0xbc, 0xbf, 0x81, 0xc3, 0x98, 0xa1, 0x90, + 0x97, 0x79, 0x1e, 0x5e, 0x1e, 0xc4, 0x51, 0xcd, + 0x9d, 0x96, 0x23, 0xfc, 0xd9, 0x75, 0x4d, 0x8a, + 0x20, 0x95, 0xad, 0xbe, 0x0f, 0xd9, 0xe8, 0x13, + 0xa3, 0xd8, 0xba, 0x05, 0x82, 0x73, 0xeb, 0x67, + 0x55, 0xb2, 0xf1, 0x9a, 0xf7, 0x08, 0x94, 0x8e, + 0x52, 0xd5, 0x6e, 0xe7, 0x50, 0x7f, 0x76, 0x15, + 0x27, 0x40, 0x85, 0xf7, 0x38, 0x02, 0x20, 0x9a, + 0xf1, 0xc1, 0x7a, 0xee, 0xe9, 0x9e, 0x32, 0x4b, + 0xe8, 0x08, 0x53, 0x03, 0x07, 0xf9, 0x62, 0x41, + 0x1c, 0xb6, 0x2b, 0x82, 0x6c, 0xc2, 0xd8, 0x11, + 0x41, 0x32, 0x97, 0x6e, 0x24, 0x26, 0x84, 0xd9, + 0x3b, 0x6d, 0xa5, 0x0d, 0x9d, 0xcf, 0x7b, 0x4a, + 0x02, 0x4b, 0x30, 0x7d, 0xc3, 0x47, 0xa1, 0xc0, + 0x22, 0x85, 0x96, 0xf1, 0x38, 0xfe, 0x62, 0xa7, + 0x1c, 0x14, 0x28, 0x42, 0x75, 0x85, 0x46, 0x18, + 0xba, 0x7a, 0x50, 0x15, 0xde, 0xad, 0x78, 0x08, + 0x15, 0xbb, 0x4b, 0xa7, 0x97, 0x8d, 0xb8, 0xf5, + 0x3e, 0x82, 0xc2, 0x43, 0xf7, 0x04, 0x03, 0x58, + 0xe0, 0x41, 0x09, 0x47, 0xb8, 0x83, 0x68, 0xbb, + 0x2c, 0x0c, 0x63, 0x3c, 0x12, 0x26, 0xc9, 0xcb, + 0x7f, 0x87, 0x34, 0x78, 0xe0, 0xbf, 0xdf, 0x78, + 0xe0, 0x4a, 0x94, 0xb1, 0xea, 0xa6, 0x3f, 0x4c, + 0xa4, 0xcc, 0xf7, 0x44, 0xf1, 0x99, 0xb6, 0xa9, + 0x9e, 0x93, 0x18, 0x0d, 0xc8, 0xe9, 0x4a, 0xc0, + 0xa0, 0x34, 0x5d, 0x9e, 0xce, 0x1e, 0xa5, 0x03, + 0x9f, 0xcb, 0xf3, 0x6b, 0x5f, 0x26, 0x46, 0xe6, + 0x04, 0x08, 0x14, 0x43, 0x06, 0xa4, 0xad, 0x7a, + 0x83, 0x06, 0x4b, 0xd6, 0x46, 0xbc, 0x1e, 0x49, + 0xab, 0x15, 0x51, 0x48, 0xf5, 0x2e, 0x52, 0x58, + 0x74, 0xd4, 0x17, 0xf8, 0x61, 0xb6, 0xca, 0xdf, + 0xf2, 0x8f, 0x1d, 0xe9, 0x13, 0x12, 0xb6, 0xb2, + 0x70, 0x8e, 0xa3, 0x20, 0xac, 0x86, 0x8a, 0x56, + 0x12, 0x2c, 0x14, 0x06, 0x7c, 0x4c, 0x1b, 0xae, + 0x3a, 0xd4, 0x85, 0xe2, 0xe5, 0xc0, 0xdc, 0xd6, + 0x7d, 0xe9, 0xa9, 0x27, 0xb4, 0x66, 0x95, 0xea, + 0xba, 0xb6, 0x06, 0x13, 0x01, 0xc8, 0x84, 0xa5, + 0x9e, 0xf7, 0x35, 0xf9, 0x6e, 0x68, 0x8d, 0x8e, + 0xa8, 0xa4, 0x0c, 0x38, 0x17, 0x50, 0x09, 0xf2, + 0x16, 0xb8, 0x54, 0xdc, 0x97, 0x9b, 0xc1, 0x52, + 0xb9, 0xa9, 0xa5, 0x3d, 0x23, 0x9c, 0xe0, 0x26, + 0xf3, 0xd0, 0x65, 0xe9, 0xc3, 0x2a, 0x28, 0x1c, + 0xa1, 0x7c, 0x25, 0xd6, 0x75, 0x18, 0xbe, 0x34, + 0x91, 0x79, 0xc3, 0x06, 0xe8, 0x1c, 0x89, 0x8e, + 0x16, 0xd7, 0x34, 0x10, 0xb8, 0xb0, 0x5f, 0x24, + 0x24, 0x33, 0x4c, 0x0a, 0xa9, 0x9e, 0x71, 0x79, + 0xf1, 0xdf, 0x3c, 0x4a, 0xbd, 0x9c, 0x22, 0x06, + 0x35, 0x3a, 0xfe, 0xe4, 0x09, 0x78, 0xab, 0xf5, + 0x03, 0xbd, 0x55, 0x02, 0xc3, 0x7e, 0xf3, 0xc7, + 0xb3, 0xf5, 0x18, 0xda, 0x3f, 0xc4, 0x5a, 0xc9, + 0xea, 0x63, 0xa1, 0xcf, 0xf2, 0xda, 0x6e, 0xe7, + 0xeb, 0xf5, 0x55, 0xe3, 0xb0, 0xe1, 0x15, 0xb2, + 0x5c, 0xb6, 0x59, 0xa6, 0x31, 0xe5, 0x13, 0xe1, + 0xfe, 0xb5, 0xaa, 0xb5, 0x09, 0x28, 0x05, 0x4a, + 0x1c, 0x0b, 0xdf, 0x29, 0x91, 0xa6, 0x5d, 0x83, + 0x33, 0x95, 0x38, 0x45, 0x56, 0xb3, 0xae, 0x3a, + 0x1b, 0x88, 0x7d, 0x6a, 0x31, 0x3b, 0xc8, 0x15, + 0x0c, 0x5d, 0x43, 0x34, 0x9f, 0x3b, 0xbf, 0x1f, + 0xa2, 0x2a, 0x27, 0x4f, 0x78, 0x76, 0xf9, 0x44, + 0x8b, 0xcc, 0x7b, 0x9f, 0x01, 0xdf, 0x62, 0x8e, + 0xbc, 0xff, 0xb2, 0x9a, 0xf9, 0x35, 0xad, 0x55, + 0x05, 0x80, 0x9e, 0xfe, 0x1e, 0xf8, 0x0b, 0x65, + 0xcc, 0x13, 0xe2, 0xb9, 0x6b, 0xb7, 0x2c, 0x07, + 0x7f, 0xc2, 0xfd, 0xa5, 0x71, 0xb2, 0x9d, 0x65, + 0x01, 0x73, 0xf0, 0x31, 0xd3, 0x1e, 0x2a, 0xc1, + 0x11, 0x06, 0x3f, 0xf3, 0x13, 0xc2, 0x5e, 0xc0, + 0xf6, 0x1d, 0x49, 0x0b, 0x14, 0x7c, 0x45, 0x87, + 0x62, 0x13, 0x08, 0xe5, 0xf6, 0xfa, 0x2f, 0x8e, + 0x4a, 0x50, 0x3b, 0x00, 0x1a, 0xd8, 0x75, 0x74, + 0xe9, 0x10, 0x11, 0x41, 0xc7, 0xed, 0x79, 0x91, + 0xa2, 0x27, 0xa6, 0x1b, 0xcd, 0x13, 0xc5, 0xca, + 0x96, 0x08, 0x95, 0x80, 0x72, 0x3e, 0x81, 0xc0, + 0x70, 0x6a, 0x9e, 0xb7, 0x65, 0x30, 0x30, 0xc2, + 0xaf, 0x8d, 0x1d, 0xbb, 0x85, 0xe9, 0xfb, 0x54, + 0x46, 0x6b, 0x39, 0x05, 0x82, 0xb7, 0x1e, 0xeb, + 0x59, 0x9b, 0x93, 0x13, 0xce, 0x97, 0x6f, 0x5b, + 0xa7, 0x2d, 0x12, 0x4e, 0x6c, 0x67, 0x36, 0xb1, + 0x69, 0xfe, 0x72, 0x64, 0xbe, 0xd5, 0x7c, 0x89, + 0xc4, 0x7e, 0x99, 0xd5, 0x97, 0x99, 0x83, 0x19, + 0x6f, 0x45, 0x30, 0x8c, 0x73, 0xd4, 0x11, 0xb7, + 0x2e, 0xe6, 0x5d, 0xc2, 0xf0, 0x40, 0x29, 0x8d, + 0x40, 0x91, 0x38, 0xba, 0x8d, 0x0b, 0x8a, 0xb9, + 0xee, 0x68, 0xe3, 0x78, 0x26, 0x9a, 0xaf, 0x25, + 0x84, 0x50, 0x5f, 0x55, 0x74, 0x27, 0xe4, 0x04, + 0x3e, 0x8a, 0x39, 0xbe, 0x76, 0xec, 0xb1, 0xc1, + 0x8c, 0x57, 0x5d, 0x01, 0x1e, 0x72, 0xe7, 0xb4, + 0x38, 0x25, 0xd9, 0x57, 0xf9, 0x20, 0x87, 0x64, + 0x0f, 0xa1, 0xe7, 0x6b, 0x0b, 0xf0, 0xf5, 0x63, + 0x52, 0x55, 0x37, 0x9d, 0x03, 0x91, 0xf1, 0x49, + 0xf8, 0xb1, 0x53, 0x06, 0x84, 0x8f, 0x87, 0x69, + 0xe4, 0x8b, 0x58, 0x38, 0x05, 0x2b, 0x32, 0xdf, + 0x79, 0xd3, 0x47, 0xe1, 0x57, 0xa0, 0xc6, 0x5c, + 0xce, 0x25, 0xc6, 0x4c, 0xaf, 0x5d, 0x72, 0x58, + 0x96, 0xf6, 0x38, 0xac, 0xdd, 0x56, 0x68, 0x1e, + 0x1b, 0xf9, 0x57, 0x94, 0x21, 0x70, 0x46, 0x6b, + 0x19, 0xec, 0xed, 0xdc, 0x09, 0x50, 0x0f, 0x81, + 0xa0, 0xca, 0xd3, 0x30, 0xe6, 0x5a, 0x84, 0xe6, + 0x4c, 0xb6, 0x55, 0xb7, 0x8c, 0x7a, 0xbe, 0xd6, + 0x14, 0x16, 0x77, 0xdb, 0x09, 0xe3, 0xa7, 0x9b, + 0x80, 0xca, 0x4b, 0x34, 0x88, 0x12, 0x74, 0xae, + 0xa2, 0x61, 0xe5, 0x60, 0xed, 0x39, 0x30, 0xbe, + 0x34, 0x36, 0xce, 0x55, 0xba, 0xb8, 0xbb, 0x4a, + 0x0d, 0x5b, 0x40, 0xbf, 0xb6, 0x66, 0xd3, 0x4e, + 0x90, 0xdb, 0x8a, 0xdf, 0xba, 0x1d, 0x32, 0x73, + 0x7a, 0xe2, 0x02, 0xfa, 0xcb, 0x9b, 0x4d, 0x39, + 0x95, 0x8e, 0x9f, 0x1b, 0x40, 0xf7, 0x30, 0x2b, + 0x7c, 0xd3, 0xe1, 0x02, 0x5c, 0x49, 0x94, 0x9f, + 0x6c, 0x9b, 0x5b, 0x55, 0xf8, 0xaf, 0x1a, 0xe5, + 0x94, 0xda, 0x4f, 0xf8, 0x7f, 0xd1, 0x23, 0xb4, + 0x74, 0x5e, 0xa5, 0x83, 0x08, 0xbe, 0x29, 0x67, + 0xcb, 0xae, 0x6f, 0x4f, 0x06, 0x9f, 0x95, 0x77, + 0x8a, 0x00, 0x19, 0xf2, 0x02, 0xba, 0x50, 0xc8, + 0x96, 0x78, 0x42, 0xc1, 0x96, 0x88, 0xc6, 0x91, + 0x5f, 0xdc, 0xe6, 0x43, 0x2e, 0x9b, 0xd5, 0x73, + 0x82, 0xbb, 0x4f, 0x76, 0x22, 0x08, 0x5e, 0x49, + 0x03, 0x45, 0xf2, 0x50, 0x42, 0xeb, 0x1f, 0x1c, + 0x19, 0x5e, 0xd1, 0x41, 0xd2, 0x5e, 0xcb, 0x42, + 0x41, 0x92, 0xed, 0xc2, 0x71, 0x78, 0x32, 0x1f, + 0x5d, 0xfc, 0xc5, 0x94, 0x7d, 0xb9, 0xe8, 0x87, + 0x71, 0xcc, 0x4d, 0xf0, 0x58, 0xdb, 0x9d, 0xb0, + 0xee, 0xee, 0x7a, 0x3d, 0xe9, 0x61, 0x72, 0xe4, + 0x45, 0x50, 0x41, 0xf1, 0x77, 0x29, 0xa2, 0xe4, + 0x91, 0x8d, 0xed, 0xfc, 0xd1, 0x13, 0x78, 0xcb, + 0x8e, 0x1b, 0xed, 0xf8, 0x0d, 0x8e, 0x49, 0x13, + 0xb6, 0x59, 0x69, 0x27, 0x65, 0x23, 0x9f, 0x1d, + 0xd0, 0xda, 0x54, 0xfc, 0xd2, 0x08, 0xf7, 0x34, + 0x89, 0xc3, 0x14, 0xb9, 0x42, 0xcb, 0x02, 0xa7, + 0x35, 0xd1, 0x00, 0x89, 0x34, 0xac, 0x90, 0xd1, + 0x44, 0x12, 0x2a, 0x12, 0xde, 0x4a, 0x31, 0x09, + 0x97, 0x4a, 0x0f, 0xc2, 0xe5, 0xa5, 0xef, 0x0b, + 0x81, 0xda, 0x01, 0x39, 0xc1, 0xa9, 0xf5, 0xd7, + 0x0e, 0xd4, 0xca, 0xa7, 0x5a, 0x70, 0xa4, 0x70, + 0x3d, 0x17, 0xe1, 0xce, 0x3d, 0xcd, 0x28, 0x4c, + 0xe1, 0x94, 0x23, 0xfa, 0x87, 0xe7, 0xa3, 0x19, + 0x6d, 0x0e, 0x1e, 0x59, 0xb5, 0x2a, 0x3a, 0x3c, + 0x2c, 0x9c, 0xc2, 0x23, 0x01, 0xb9, 0x96, 0xc6, + 0x67, 0xd4, 0x90, 0x0b, 0x40, 0x22, 0x3a, 0x97, + 0xb4, 0x14, 0x03, 0xb3, 0x27, 0x09, 0x07, 0x77, + 0x1c, 0xbc, 0x68, 0x1a, 0xbc, 0xfe, 0x51, 0x90, + 0x04, 0x0b, 0x76, 0x3e, 0x36, 0x69, 0xb0, 0xc9, + 0x86, 0x72, 0x8b, 0x09, 0xb4, 0xf9, 0x77, 0xb0, + 0x49, 0x4b, 0xb7, 0xf9, 0x68, 0xb0, 0x53, 0x58, + 0xa1, 0xe6, 0xfd, 0x63, 0x93, 0xb1, 0x11, 0x48, + 0x0c, 0x45, 0xa2, 0x6c, 0xdc, 0xd3, 0xf5, 0x3a, + 0x38, 0xe0, 0x85, 0xf9, 0x2f, 0x6a, 0x7c, 0xfa, + 0xe1, 0xdf, 0x24, 0x94, 0x97, 0xc4, 0x7d, 0x7d, + 0x01, 0x7f, 0xa2, 0x1c, 0x28, 0x62, 0xde, 0xbb, + 0xf0, 0x61, 0x94, 0x83, 0x5e, 0xc8, 0x41, 0x4d, + 0x4e, 0xde, 0xb0, 0x7d, 0xad, 0xf0, 0x2a, 0x7b, + 0x45, 0x18, 0xbf, 0x22, 0x72, 0xdb, 0x34, 0x77, + 0x85, 0x8d, 0x50, 0xb6, 0x70, 0xfd, 0x32, 0x38, + 0x0a, 0xf4, 0x5d, 0x1e, 0x2f, 0x0f, 0x9b, 0xf8, + 0x7f, 0xd1, 0x53, 0xff, 0x3f, 0xd7, 0x2c, 0xd1, + 0xd6, 0xcd, 0x23, 0x48, 0x01, 0xa5, 0xbf, 0x93, + 0x77, 0xa7, 0x9c, 0xbc, 0x3b, 0x5e, 0x47, 0x57, + 0xf2, 0x95, 0xdb, 0xa1, 0x02, 0xaa, 0xf4, 0x1a, + 0x4a, 0x54, 0x4b, 0xd6, 0x5b, 0x76, 0x47, 0xc0, + 0xe6, 0x3e, 0xff, 0xa9, 0x3e, 0xe3, 0x12, 0x1b, + 0x89, 0x89, 0x5a, 0xbc, 0xda, 0x52, 0x5c, 0x70, + 0x1d, 0x70, 0x03, 0xb7, 0x1f, 0x27, 0x53, 0x29, + 0x4e, 0x47, 0x82, 0x27, 0xc7, 0x14, 0x00, 0x2c, + 0x28, 0x0c, 0xde, 0xc2, 0x88, 0x2e, 0x4c, 0xe3, + 0x4c, 0x69, 0xfc, 0xfc, 0x7d, 0xdc, 0xac, 0x9b, + 0x21, 0xa3, 0xfb, 0x88, 0x14, 0xc9, 0xe3, 0xa6, + 0x40, 0x11, 0x68, 0x19, 0x48, 0x93, 0x6e, 0x04, + 0xc2, 0x35, 0x26, 0x39, 0xec, 0xfd, 0x10, 0x7b, + 0x2a, 0xab, 0xf3, 0x09, 0x51, 0xf4, 0xd8, 0xf2, + 0xd6, 0xc8, 0x14, 0x9e, 0xdf, 0xee, 0xfe, 0x8e, + 0x29, 0x1b, 0x32, 0x22, 0xcf, 0x1e, 0xa5, 0x96, + 0xe7, 0xeb, 0x38, 0x22, 0xee, 0x29, 0x18, 0x3b, + 0xfa, 0x96, 0xa4, 0xfa, 0xbd, 0x44, 0xb5, 0xff, + 0x3f, 0x22, 0x42, 0x2f, 0x9a, 0x6e, 0xaf, 0x58, + 0x2d, 0x03, 0xe5, 0xe2, 0x2b, 0x0f, 0x91, 0x01, + 0xa8, 0xe4, 0xf6, 0x8d, 0x4e, 0xb0, 0x9a, 0xc9, + 0xa9, 0xdd, 0xdc, 0xaa, 0x7b, 0x36, 0x55, 0x57, + 0xac, 0x7d, 0xf6, 0xbb, 0xe8, 0xa0, 0x18, 0xec, + 0x67, 0xfd, 0x2e, 0x24, 0xe9, 0x12, 0xc7, 0x4f, + 0x73, 0xfb, 0xea, 0x87, 0x95, 0x49, 0x90, 0xff, + 0x50, 0xe9, 0x49, 0xdf, 0x54, 0x2d, 0xdb, 0xbf, + 0xf1, 0x5b, 0x8b, 0x35, 0xcd, 0xf6, 0xfc, 0x72, + 0x4a, 0x0e, 0x77, 0xd2, 0xd9, 0x95, 0x5b, 0x04, + 0x7d, 0xb8, 0x29, 0x5f, 0x1a, 0x65, 0x6e, 0x0f, + 0xda, 0x3f, 0x24, 0xbb, 0xa9, 0x0e, 0x47, 0xc3, + 0xef, 0x2f, 0x12, 0x71, 0xad, 0x69, 0x46, 0x11, + 0x7e, 0x90, 0xa4, 0x71, 0x70, 0xf0, 0xd4, 0x1b, + 0x51, 0xe8, 0x99, 0x67, 0x1e, 0xfc, 0x49, 0xe0, + 0xa1, 0x21, 0x88, 0xc1, 0x63, 0xce, 0x61, 0xfb, + 0x4a, 0xec, 0x8e, 0xcc, 0x7f, 0x3c, 0xcf, 0x4e, + 0x8a, 0xc7, 0x31, 0xbc, 0xe4, 0xb5, 0x9f, 0x02, + 0x79, 0x54, 0xfb, 0xa4, 0x86, 0x6f, 0x9e, 0x3d, + 0xd4, 0x14, 0x20, 0xca, 0x73, 0x53, 0x8b, 0x8f, + 0xf2, 0xb6, 0xab, 0xd6, 0xfe, 0xe2, 0xcd, 0x82, + 0x89, 0x93, 0x11, 0x28, 0x37, 0x58, 0x22, 0xed, + 0x14, 0x2b, 0x09, 0xf0, 0x23, 0x99, 0xc7, 0x4f, + 0x94, 0x26, 0x36, 0x27, 0x5f, 0x5c, 0x37, 0x7f, + 0x8d, 0xa7, 0x57, 0x8a, 0xb4, 0xd6, 0xf5, 0xd4, + 0xe4, 0x1a, 0xf1, 0xb3, 0xc6, 0xa0, 0xce, 0x77, + 0x27, 0xeb, 0x2f, 0x53, 0x3a, 0xa6, 0xb7, 0xfa, + 0x4e, 0xab, 0xd5, 0x63, 0xc5, 0x0e, 0xde, 0x45, + 0x7a, 0x4b, 0x3f, 0x71, 0x27, 0xb4, 0x09, 0xe9, + 0xe0, 0xb0, 0xa1, 0x64, 0xd6, 0x08, 0xa9, 0xd7, + 0x1b, 0x57, 0xa5, 0xca, 0x09, 0xdf, 0xd2, 0x54, + 0x5d, 0x03, 0x7e, 0x1b, 0x15, 0x5a, 0xa5, 0xc8, + 0xb8, 0xd4, 0xa2, 0x2c, 0x88, 0x6c, 0xcf, 0xaf, + 0x67, 0xad, 0x53, 0x3b, 0x63, 0x89, 0x6f, 0xed, + 0xb8, 0x59, 0x44, 0x71, 0xd2, 0x48, 0x25, 0xc4, + 0x00, 0x22, 0xd0, 0x9a, 0xec, 0xc5, 0xaf, 0x62, + 0x6e, 0x46, 0xda, 0x35, 0x57, 0x83, 0x5e, 0x78, + 0xc8, 0x2e, 0x09, 0x61, 0x60, 0xae, 0x99, 0x57, + 0x2c, 0x6e, 0xbd, 0x5d, 0x91, 0x4c, 0xdd, 0x71, + 0xa8, 0x48, 0x65, 0xdc, 0x15, 0x0e, 0xaa, 0x07, + 0xdf, 0x33, 0x36, 0xd2, 0xf9, 0x7e, 0xaf, 0x94, + 0xd0, 0x56, 0x92, 0xa9, 0xcb, 0x24, 0x70, 0x01, + 0xfd, 0x37, 0x8d, 0x2b, 0xcd, 0xc3, 0x10, 0xf1, + 0x67, 0x4e, 0xcf, 0x1b, 0x3d, 0x15, 0xe5, 0x27, + 0x6c, 0x9e, 0x28, 0x9b, 0x94, 0x76, 0xd4, 0x10, + 0x92, 0x7d, 0xd5, 0x0e, 0xc7, 0x4f, 0xc4, 0x8d, + 0x7b, 0x07, 0x03, 0x11, 0xce, 0x8a, 0x3f, 0xee, + 0x35, 0x8a, 0x6a, 0xbe, 0x5d, 0xb9, 0xf5, 0xf1, + 0x71, 0xba, 0x42, 0xfd, 0x45, 0x2c, 0x1b, 0xfd, + 0xa8, 0x5a, 0x89, 0x60, 0xfa, 0x40, 0xd3, 0x7b, + 0x7e, 0xe8, 0xd8, 0xc8, 0x63, 0xa5, 0x11, 0x8b, + 0x04, 0xec, 0x30, 0xcf, 0xdc, 0xd0, 0x65, 0x7a, + 0x2c, 0x2e, 0xbb, 0xa9, 0x70, 0x27, 0x28, 0x0a, + 0xba, 0x0a, 0x2f, 0x5b, 0xae, 0x81, 0x39, 0x4d, + 0x11, 0xee, 0x4d, 0xc9, 0xb6, 0xf0, 0x27, 0x91, + 0xc1, 0x1e, 0x00, 0x2d, 0x4e, 0xf9, 0xb9, 0x56, + 0xc8, 0x09, 0xab, 0x8b, 0xa1, 0x1b, 0x58, 0x05, + 0xb8, 0xf2, 0xdc, 0x13, 0x1b, 0x77, 0xeb, 0x81, + 0xca, 0x02, 0xd1, 0x1a, 0xfc, 0xa5, 0xc7, 0x00, + 0xce, 0xab, 0x82, 0x19, 0x88, 0x65, 0x74, 0xc8, + 0x08, 0x48, 0x9a, 0x44, 0xc4, 0xad, 0x27, 0xf0, + 0xf6, 0xed, 0x5d, 0xad, 0x66, 0x1c, 0x3b, 0x85, + 0xf9, 0x54, 0xaa, 0x08, 0x50, 0xc6, 0x80, 0xd1, + 0xed, 0x80, 0x11, 0x0d, 0x3c, 0x16, 0x03, 0xa5, + 0xb6, 0xd3, 0x94, 0x00, 0xf8, 0x8b, 0x06, 0x2d, + 0xae, 0x2a, 0xfa, 0x7c, 0xe1, 0x8b, 0x0f, 0x51, + 0xc1, 0xc5, 0xa1, 0x9e, 0x71, 0x66, 0xa0, 0x8d, + 0x24, 0x2b, 0x32, 0x2c, 0xb5, 0x8c, 0xf6, 0x65, + 0x0c, 0xea, 0xe1, 0x94, 0x0e, 0xf6, 0x5d, 0x07, + 0xc4, 0x6e, 0x96, 0x34, 0x41, 0x0e, 0x1e, 0xd6, + 0xac, 0x6b, 0x63, 0x7c, 0x0f, 0x78, 0xdd, 0x0c, + 0xeb, 0xcb, 0x29, 0x88, 0xe9, 0xa9, 0x4b, 0x3a, + 0x60, 0x23, 0x60, 0xb6, 0xc7, 0x79, 0x50, 0x13, + 0x60, 0x4d, 0xb1, 0x5d, 0xae, 0x60, 0xf8, 0xba, + 0xad, 0x66, 0xd5, 0x95, 0xae, 0x2c, 0xfc, 0x80, + 0x01, 0xb2, 0x8f, 0xcd, 0xf3, 0x26, 0x6a, 0xae, + 0x00, 0xa8, 0x59, 0xb5, 0x36, 0x8c, 0x25, 0x0b, + 0xb5, 0xf4, 0x24, 0x70, 0xae, 0x24, 0xde, 0x40, + 0xe4, 0x26, 0x37, 0x80, 0x60, 0xea, 0x3d, 0x99, + 0x59, 0xad, 0xf5, 0x0d, 0xe2, 0xe1, 0x93, 0x98, + 0xa5, 0xbc, 0x01, 0x3a, 0x93, 0xe4, 0xb9, 0x49, + 0xd5, 0xcc, 0x6e, 0x4d, 0x2a, 0xbc, 0xa8, 0x49, + 0xe0, 0x66, 0x0e, 0xa0, 0x56, 0xa8, 0x74, 0x50, + 0xd5, 0xd8, 0x41, 0xca, 0x23, 0x2e, 0xea, 0x2d, + 0x21, 0x08, 0x3f, 0x17, 0x89, 0x9f, 0xe6, 0x3e, + 0x55, 0xf7, 0xfb, 0x6b, 0x9e, 0xcf, 0x43, 0x35, + 0x42, 0x5d, 0xbd, 0x74, 0x0b, 0x52, 0x92, 0x1c, + 0x18, 0x16, 0x81, 0x74, 0x6f, 0x45, 0x81, 0xca, + 0x7b, 0x7b, 0xde, 0xf3, 0xca, 0x1c, 0xde, 0x3f, + 0x97, 0x9d, 0x80, 0xa9, 0xa6, 0x7d, 0x35, 0x95, + 0xf5, 0x9c, 0xb4, 0xc0, 0x28, 0x34, 0x07, 0xf8, + 0x3f, 0x01, 0x7e, 0xe2, 0xbc, 0x2a, 0xaf, 0x80, + 0x1d, 0x6d, 0xcc, 0x9a, 0x45, 0x8a, 0x29, 0x83, + 0xe8, 0x0f, 0x98, 0x4c, 0x12, 0x0e, 0x3f, 0x84, + 0x7f, 0x54, 0x29, 0x65, 0x06, 0xa2, 0xe4, 0xdb, + 0x10, 0x38, 0x6f, 0x42, 0x37, 0x40, 0xd2, 0x1a, + 0x0c, 0x16, 0x7a, 0x94, 0x58, 0xeb, 0xab, 0x60, + 0x13, 0xfb, 0xc2, 0x0b, 0x9c, 0x8d, 0xc6, 0x8a, + 0x9b, 0xb5, 0x58, 0x2b, 0x60, 0x97, 0x24, 0x55, + 0x8c, 0xd5, 0x90, 0x7e, 0x97, 0x84, 0x85, 0x7a, + 0x25, 0x98, 0xe9, 0x0e, 0xd9, 0x3c, 0x19, 0x92, + 0x5f, 0x01, 0x7a, 0x5b, 0xd6, 0xc9, 0x57, 0x87, + 0x1e, 0xce, 0x6d, 0xfa, 0xe9, 0x67, 0x7c, 0xa5, + 0x1a, 0x8b, 0x8c, 0x74, 0xf3, 0x2a, 0x53, 0xc2, + 0x6b, 0x75, 0x46, 0xf6, 0x60, 0xd2, 0x1a, 0x1e, + 0x62, 0xc0, 0x60, 0x61, 0x4e, 0x33, 0x2b, 0x59, + 0x54, 0xd6, 0x80, 0xa6, 0xe8, 0xa7, 0x3b, 0x55, + 0x91, 0x17, 0x0f, 0x0e, 0x60, 0x9e, 0x62, 0x45, + 0xfc, 0xee, 0x72, 0xce, 0x0d, 0x0c, 0xcd, 0x31, + 0x11, 0x38, 0x6e, 0x15, 0x3c, 0xb2, 0x23, 0x06, + 0x56, 0x65, 0x45, 0x2f, 0xb1, 0xef, 0xaa, 0x85, + 0x2b, 0x62, 0xb3, 0x9a, 0x7b, 0xca, 0x4b, 0xc3, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x60, 0x9c, 0x06, 0x16, 0x82, 0xf5, 0xb9, 0xd1, + 0x32, 0xcd, 0x72, 0x64, 0x80, 0xfc, 0x86, 0xc9, + 0xad, 0x30, 0xf7, 0x6b, 0x0f, 0x12, 0x76, 0x06, + 0xd8, 0x98, 0x92, 0xc1, 0x2e, 0x2b, 0xd5, 0xd9, + 0x6a, 0xe7, 0xf1, 0x75, 0x15, 0xcc, 0xf9, 0x0d, + 0x0b, 0x12, 0x3f, 0xe3, 0x5e, 0x10, 0x27, 0x94, + 0xb5, 0x7f, 0x71, 0x8d, 0x27, 0xc4, 0x65, 0x74, + 0x5c, 0xbb, 0xf8, 0x0f, 0x78, 0x63, 0x26, 0xef, + }, + .sig_len =3D DILITHIUM87_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM87_CRYPTO_BYTES]){ + 0x75, 0x80, 0xe5, 0x00, 0x5c, 0x28, 0xd0, 0xc3, + 0xfa, 0x12, 0xfc, 0x13, 0x7b, 0x2c, 0x89, 0x20, + 0xf6, 0x40, 0x17, 0xbc, 0xe4, 0x3d, 0x8e, 0xda, + 0xbf, 0xa4, 0x17, 0xa6, 0x7c, 0xcd, 0xf0, 0xdb, + 0xe0, 0x45, 0x9f, 0x8e, 0x57, 0x97, 0x69, 0xa3, + 0xe9, 0x6f, 0xb7, 0x62, 0x28, 0x79, 0x0b, 0x88, + 0x02, 0x36, 0x35, 0x2f, 0x7f, 0x0e, 0xac, 0x5e, + 0x2e, 0x85, 0xb2, 0x32, 0x8c, 0x08, 0x4f, 0x5b, + 0x2e, 0xeb, 0xbc, 0xb3, 0x5f, 0x52, 0x5e, 0x42, + 0x6a, 0x3c, 0x9b, 0xbf, 0xaf, 0x71, 0x1a, 0x4a, + 0xbc, 0x9f, 0xac, 0x5e, 0x95, 0x18, 0x0f, 0xba, + 0xc0, 0xe8, 0xea, 0x56, 0x4e, 0xc1, 0x62, 0x4a, + 0xcb, 0x99, 0x5b, 0xa4, 0x6c, 0xca, 0xec, 0xf6, + 0xc7, 0xd0, 0x4b, 0xb6, 0x6e, 0xca, 0x58, 0xaa, + 0x84, 0x46, 0xb3, 0xbb, 0x2a, 0x67, 0xf6, 0xc5, + 0xf9, 0x40, 0xdf, 0x32, 0xf5, 0x94, 0xec, 0x6a, + 0x96, 0x1c, 0x16, 0x2e, 0x6c, 0xd5, 0xcd, 0xff, + 0xc1, 0x2c, 0xe5, 0x38, 0x78, 0x3a, 0x34, 0xe6, + 0x29, 0xfa, 0xeb, 0x1c, 0xad, 0xff, 0x3c, 0x07, + 0x12, 0xa6, 0xda, 0xaa, 0x44, 0xe2, 0xac, 0x0a, + 0x22, 0xff, 0x53, 0xc7, 0x99, 0xc0, 0x5c, 0x22, + 0x91, 0x82, 0x38, 0xa6, 0x19, 0x47, 0x8f, 0xbc, + 0xc5, 0x66, 0xc8, 0x76, 0x6e, 0x94, 0x09, 0x28, + 0xf0, 0x7e, 0x05, 0x08, 0xf6, 0x14, 0xcd, 0x12, + 0xb1, 0xf9, 0xd8, 0x39, 0x2f, 0x9d, 0x65, 0x52, + 0x6c, 0x7a, 0xc6, 0xb9, 0x7c, 0xe1, 0xc0, 0x7e, + 0x57, 0xe8, 0x26, 0x4b, 0x94, 0xa7, 0xe4, 0xe6, + 0xa2, 0x6a, 0xe2, 0xde, 0x41, 0x56, 0x82, 0x55, + 0xe3, 0x9c, 0xce, 0xf5, 0x94, 0x6e, 0x2a, 0x53, + 0x51, 0x3e, 0x30, 0x0a, 0x51, 0xfc, 0x79, 0xb6, + 0x02, 0x02, 0xbd, 0x12, 0xba, 0xf2, 0x68, 0xb0, + 0xc9, 0x35, 0xcb, 0x99, 0x39, 0x99, 0x94, 0x52, + 0x5d, 0x5e, 0x52, 0x5e, 0xc4, 0xb8, 0xb0, 0xf4, + 0x1f, 0x4a, 0x4e, 0x3a, 0xe8, 0xe0, 0x00, 0x75, + 0x51, 0x4a, 0x8b, 0x81, 0x09, 0x2f, 0x15, 0xd4, + 0x3a, 0xbb, 0x9b, 0x00, 0x34, 0x03, 0xe3, 0xb6, + 0xb9, 0xba, 0x35, 0x28, 0xd4, 0xb8, 0x07, 0x42, + 0x95, 0xf6, 0x27, 0xe4, 0x6e, 0xde, 0xb5, 0xf5, + 0x4f, 0xd5, 0x0b, 0x00, 0x7d, 0x67, 0x04, 0xb8, + 0x80, 0x4f, 0x17, 0x6f, 0x5f, 0xa9, 0x8c, 0x0f, + 0x6e, 0x3d, 0x91, 0xb9, 0xaa, 0x1a, 0x73, 0x5c, + 0x69, 0x53, 0x20, 0x28, 0xd4, 0x2d, 0xbf, 0x2d, + 0x38, 0xf2, 0x2b, 0xbc, 0xa1, 0xc6, 0x54, 0x7a, + 0x9b, 0xde, 0xa6, 0x9f, 0x7c, 0x2f, 0xbd, 0x97, + 0x7d, 0x2e, 0x40, 0x15, 0x78, 0x41, 0x8d, 0xdd, + 0x98, 0xc4, 0x46, 0xdc, 0x26, 0xbd, 0x72, 0x93, + 0xa5, 0xb9, 0x8f, 0xb7, 0xfa, 0x2f, 0xb3, 0x4c, + 0x7e, 0xfd, 0x08, 0xf0, 0x8b, 0xe3, 0x50, 0x23, + 0xcd, 0x8f, 0x74, 0x47, 0xbf, 0xde, 0x58, 0x16, + 0xc5, 0xb3, 0x8d, 0xd4, 0xf0, 0x30, 0x09, 0xbd, + 0xd8, 0x30, 0x04, 0x1c, 0x38, 0xa0, 0xaf, 0xa2, + 0x2a, 0xfa, 0x7b, 0xc7, 0x13, 0xfc, 0xa3, 0xab, + 0x53, 0x66, 0x43, 0x28, 0xcf, 0x1a, 0x86, 0x1f, + 0x54, 0x2e, 0x81, 0x8b, 0xab, 0x44, 0x8d, 0x37, + 0x2d, 0x70, 0x27, 0x55, 0x9a, 0x50, 0x7e, 0x1d, + 0xac, 0xac, 0xe1, 0xea, 0x11, 0x4f, 0x52, 0x4e, + 0xf3, 0x63, 0xd7, 0x2e, 0xdc, 0x3e, 0x5f, 0xfd, + 0x6f, 0x85, 0x7d, 0x23, 0xcb, 0xf0, 0xb1, 0x48, + 0x9f, 0x14, 0x41, 0x89, 0xf5, 0xfa, 0xf0, 0x87, + 0x37, 0x5f, 0xe3, 0x34, 0xce, 0x90, 0xd1, 0x26, + 0xa6, 0x59, 0x46, 0xbc, 0x85, 0xff, 0xdc, 0x32, + 0x10, 0x60, 0xb0, 0x4f, 0x55, 0x5e, 0x73, 0x5c, + 0x7a, 0x82, 0xa6, 0x33, 0xa8, 0xf8, 0xb5, 0xc7, + 0x08, 0x22, 0x47, 0x02, 0x66, 0xa8, 0x9d, 0xfc, + 0xd8, 0x65, 0x35, 0x57, 0xda, 0x61, 0x06, 0x35, + 0x18, 0xf4, 0xe0, 0x92, 0x2f, 0x7a, 0x24, 0x59, + 0x5b, 0x79, 0xcf, 0x06, 0x63, 0x14, 0x2a, 0xc7, + 0x93, 0x36, 0x88, 0x01, 0xdc, 0x1d, 0x13, 0x52, + 0xf5, 0x89, 0x4c, 0x60, 0xea, 0xdc, 0xdf, 0x38, + 0x1e, 0xd3, 0x96, 0xd6, 0x6a, 0x80, 0x07, 0x3c, + 0xd9, 0x60, 0xf7, 0x85, 0xf2, 0xe3, 0x5d, 0xec, + 0x9d, 0xee, 0x4f, 0x9f, 0x8b, 0x21, 0x28, 0x1b, + 0x58, 0xa0, 0xc6, 0xd2, 0xa0, 0xfd, 0xa0, 0x6c, + 0xa6, 0x83, 0xc1, 0x10, 0x48, 0x3c, 0x0d, 0xbd, + 0x8c, 0x70, 0x82, 0xb6, 0x6f, 0xaa, 0xe3, 0xe8, + 0x60, 0x8b, 0xcd, 0x07, 0xb9, 0x6a, 0x9c, 0xc6, + 0xfa, 0x8e, 0x93, 0xe7, 0x78, 0x22, 0xbf, 0x21, + 0x08, 0x72, 0x27, 0xd7, 0xe9, 0x3e, 0x65, 0x86, + 0xf4, 0xbb, 0x6f, 0x07, 0xf5, 0x46, 0x22, 0x28, + 0x16, 0xca, 0x94, 0x21, 0xea, 0x37, 0x3a, 0xf8, + 0x0c, 0xf9, 0x3a, 0x56, 0x69, 0xeb, 0x5f, 0xe2, + 0xb1, 0xff, 0xe5, 0x55, 0x51, 0xac, 0x06, 0xe7, + 0x3c, 0xd6, 0xce, 0x82, 0xfe, 0xe9, 0x2a, 0xe1, + 0x18, 0x33, 0x29, 0xe3, 0xeb, 0x41, 0x2b, 0xfc, + 0x80, 0xdb, 0xa9, 0x68, 0xe1, 0x00, 0x66, 0x6b, + 0x37, 0xc2, 0x69, 0x93, 0xb8, 0xb1, 0x8c, 0x48, + 0xcd, 0x07, 0x4f, 0x93, 0xbd, 0x40, 0x1c, 0x06, + 0x6c, 0x46, 0x96, 0xa8, 0x08, 0xa8, 0x2b, 0xe4, + 0x8e, 0xe5, 0xef, 0x50, 0xbf, 0x59, 0x6d, 0x87, + 0xa7, 0x0a, 0x7f, 0x6a, 0x71, 0x10, 0x65, 0xe3, + 0xe5, 0x14, 0xf6, 0x65, 0xb8, 0xc1, 0xc2, 0x8c, + 0xd8, 0x83, 0xda, 0x8c, 0x1d, 0xd9, 0xb9, 0xdd, + 0xfe, 0x16, 0xa9, 0x44, 0x1b, 0x00, 0x3a, 0xea, + 0x37, 0xdc, 0xaf, 0x31, 0x4a, 0xc1, 0xd3, 0x9c, + 0x5f, 0x50, 0x84, 0x7d, 0x5a, 0x46, 0xb9, 0x90, + 0xd6, 0xbd, 0xe2, 0x0a, 0xed, 0xec, 0xba, 0xb2, + 0x00, 0x98, 0x14, 0x37, 0xc5, 0x4e, 0x77, 0x09, + 0xea, 0xb2, 0xec, 0x6d, 0x5d, 0x89, 0x58, 0xf1, + 0x4e, 0x18, 0x1c, 0xd7, 0xe7, 0xe8, 0x0a, 0x29, + 0xce, 0x68, 0x92, 0xa4, 0xac, 0xbe, 0x38, 0xda, + 0xff, 0xd2, 0x76, 0x87, 0xa3, 0x5f, 0x00, 0xdf, + 0x97, 0xd6, 0x75, 0xa8, 0xb7, 0xf7, 0xa6, 0xd7, + 0xf3, 0xbd, 0x31, 0x7e, 0x32, 0xdc, 0x35, 0xf7, + 0xd0, 0xe3, 0x01, 0xbd, 0x53, 0xcf, 0xd1, 0x32, + 0x16, 0x41, 0x31, 0x0e, 0xa1, 0xa1, 0x4a, 0xe7, + 0x93, 0xcb, 0xe1, 0xdd, 0x4b, 0xa2, 0xcf, 0xbf, + 0x8b, 0xb7, 0x39, 0x17, 0x28, 0xe2, 0xce, 0x7e, + 0x1b, 0x71, 0x9b, 0xf1, 0xbf, 0xf4, 0xb9, 0xe4, + 0xf9, 0x02, 0x95, 0x40, 0x7a, 0x11, 0xf8, 0x7f, + 0x54, 0xd4, 0x80, 0x1c, 0x8d, 0x14, 0xdb, 0xa0, + 0xc0, 0x5f, 0xc6, 0x49, 0x79, 0x11, 0x5f, 0x8d, + 0x6c, 0x3b, 0x13, 0x3b, 0x37, 0xdd, 0x9a, 0x4c, + 0x2f, 0x25, 0x71, 0xdb, 0x94, 0x0f, 0x84, 0x70, + 0xa1, 0x4e, 0xea, 0x6c, 0xac, 0x50, 0x12, 0x85, + 0xa5, 0xe4, 0xdf, 0x13, 0x84, 0x94, 0x3d, 0x40, + 0xbc, 0xac, 0x0f, 0x7d, 0x58, 0x79, 0x00, 0x11, + 0x29, 0xb2, 0x9e, 0x14, 0x2f, 0x5f, 0xc0, 0x7c, + 0xe3, 0xf1, 0x96, 0x9d, 0xea, 0xcd, 0x34, 0xf9, + 0x69, 0x26, 0x98, 0x79, 0xb5, 0x24, 0xa3, 0x63, + 0x2d, 0xd4, 0xc1, 0x32, 0xe8, 0xec, 0x40, 0x25, + 0xf5, 0x74, 0xf4, 0x07, 0x48, 0x5d, 0xc7, 0x56, + 0xc1, 0xde, 0x8d, 0xb5, 0x60, 0x32, 0x72, 0x92, + 0xc6, 0xe1, 0xcb, 0xb1, 0x5c, 0xab, 0x17, 0xef, + 0xb7, 0x0c, 0x20, 0x85, 0xe8, 0xdf, 0xa4, 0x69, + 0xba, 0x9d, 0x90, 0xff, 0x48, 0x51, 0xf1, 0xde, + 0x7a, 0xdf, 0x2a, 0xac, 0x40, 0x0b, 0xf4, 0x3b, + 0x61, 0xe2, 0x94, 0xea, 0x75, 0x53, 0x58, 0xe0, + 0xbd, 0x8f, 0xde, 0xf4, 0x4d, 0x3d, 0x05, 0x78, + 0xfa, 0x80, 0x6a, 0x6a, 0xd0, 0x8d, 0x3e, 0xb8, + 0xb4, 0x21, 0x2c, 0x81, 0x89, 0x1b, 0x18, 0x14, + 0x89, 0xcf, 0xf8, 0x23, 0x1b, 0x8b, 0x17, 0xd1, + 0x71, 0xea, 0xcd, 0x25, 0x15, 0x72, 0x03, 0x04, + 0x58, 0x39, 0x9c, 0x94, 0xe1, 0x3d, 0xad, 0x91, + 0xd9, 0x68, 0x10, 0xbb, 0xbb, 0xe6, 0x7a, 0xb3, + 0xaf, 0x7b, 0xd9, 0xba, 0x26, 0x0d, 0xd4, 0x78, + 0x11, 0x14, 0xf5, 0xc0, 0xfb, 0x09, 0xa9, 0xe8, + 0x8b, 0x09, 0x99, 0x04, 0x05, 0x40, 0xa0, 0x2a, + 0xfd, 0x2a, 0x36, 0xae, 0x33, 0x79, 0x83, 0xdb, + 0x8f, 0xfa, 0x85, 0x5c, 0xa7, 0x44, 0xf7, 0x58, + 0x3e, 0x3b, 0x7b, 0xfd, 0x81, 0xf3, 0xa4, 0xb4, + 0x6f, 0x1b, 0x08, 0xa5, 0xd9, 0xc1, 0xd9, 0x95, + 0x50, 0x8a, 0x9e, 0x0f, 0x6a, 0xc5, 0xae, 0x7d, + 0x21, 0x74, 0x35, 0x5f, 0xfe, 0x4b, 0x8c, 0x9d, + 0x2a, 0xa3, 0x5f, 0xfe, 0x1e, 0xfb, 0x61, 0x04, + 0xf7, 0xc2, 0x20, 0x77, 0x4d, 0xa4, 0x30, 0x53, + 0x17, 0xb3, 0x3d, 0x6c, 0x64, 0xda, 0x2b, 0x49, + 0x4f, 0x75, 0x78, 0x4d, 0x3f, 0x8d, 0xec, 0x65, + 0x53, 0x3c, 0x78, 0x93, 0x4e, 0x51, 0x97, 0x19, + 0xc2, 0x36, 0x2f, 0x9f, 0x1d, 0xf8, 0xe7, 0x41, + 0xfe, 0xb5, 0xe9, 0xeb, 0x56, 0x95, 0x94, 0x7d, + 0x7d, 0xea, 0xb8, 0xdc, 0x7e, 0xf6, 0x43, 0xaf, + 0x37, 0x9b, 0x22, 0x4b, 0x78, 0x38, 0x87, 0x52, + 0x52, 0x1f, 0x2c, 0x8b, 0x26, 0x5a, 0x5a, 0xd2, + 0xb3, 0xd8, 0x83, 0xba, 0x42, 0xce, 0xb2, 0x4d, + 0xf1, 0x8f, 0x2d, 0x0e, 0x82, 0x0d, 0xee, 0xe2, + 0x0f, 0x4d, 0x7b, 0xc9, 0x97, 0x09, 0xd4, 0x6d, + 0x4f, 0xaf, 0xcd, 0x65, 0xfb, 0x6d, 0xf2, 0x54, + 0x02, 0x36, 0x69, 0x92, 0xee, 0xb3, 0x6f, 0x52, + 0xfa, 0xe7, 0x52, 0xd1, 0xbe, 0xa6, 0xb3, 0x4c, + 0x6c, 0xbe, 0x65, 0xd2, 0x83, 0x11, 0x9e, 0xa7, + 0xd2, 0x54, 0x2f, 0x6a, 0x5e, 0x24, 0x3a, 0x27, + 0x37, 0x9f, 0x6c, 0x87, 0x9e, 0x15, 0x71, 0x34, + 0x73, 0x8e, 0x68, 0xbe, 0x60, 0xcb, 0x35, 0xbf, + 0xd1, 0x00, 0xc5, 0xa5, 0xc4, 0xe7, 0x3d, 0xbb, + 0x1d, 0x24, 0x65, 0x0b, 0x49, 0xdf, 0x8b, 0x18, + 0x6a, 0xeb, 0x37, 0x7a, 0xd9, 0xc4, 0x16, 0x00, + 0xfe, 0x99, 0xdf, 0xb8, 0x5d, 0x3c, 0xac, 0x7b, + 0xc4, 0xe3, 0x7b, 0x09, 0x14, 0x19, 0x43, 0xa8, + 0x9f, 0x27, 0xb3, 0xd8, 0xbe, 0x11, 0xd6, 0xeb, + 0xc3, 0x45, 0x60, 0xf7, 0x76, 0x27, 0x96, 0xbe, + 0x2e, 0x50, 0x17, 0x9f, 0x3c, 0x31, 0x5e, 0xac, + 0xe8, 0xf1, 0x4f, 0xf5, 0x47, 0x1a, 0xa7, 0xc8, + 0x37, 0x02, 0xc5, 0xc8, 0x9c, 0xfe, 0xb9, 0x49, + 0x0b, 0x97, 0x80, 0x22, 0x7a, 0x41, 0xe3, 0x28, + 0xa8, 0x82, 0xe5, 0xa2, 0x13, 0x97, 0x4e, 0x0f, + 0x57, 0x6b, 0x6f, 0x12, 0x02, 0x24, 0x63, 0x88, + 0xda, 0xc7, 0x15, 0xd5, 0x0c, 0xb4, 0x44, 0x2f, + 0x8c, 0xcb, 0x84, 0x1a, 0x5f, 0x28, 0x47, 0xe7, + 0xd5, 0xf4, 0x04, 0x71, 0x4a, 0xd6, 0xe2, 0x2c, + 0x75, 0x87, 0x07, 0xcf, 0x0a, 0x2d, 0x77, 0x95, + 0x88, 0xbd, 0xeb, 0xa4, 0x10, 0x16, 0xe5, 0x75, + 0x0c, 0x38, 0x33, 0xe7, 0xf9, 0x09, 0x2a, 0x3e, + 0xcc, 0x0e, 0x1b, 0x6c, 0xa0, 0xd9, 0xc6, 0x7c, + 0xb8, 0x8e, 0xfa, 0xdd, 0xe8, 0xbe, 0x2c, 0xbf, + 0x51, 0xd3, 0x1c, 0xe1, 0x87, 0xf5, 0xbf, 0x20, + 0x6f, 0x62, 0xc9, 0xbd, 0x55, 0x0f, 0xa1, 0xdd, + 0xdf, 0x7a, 0x0d, 0x7d, 0x1c, 0x39, 0x59, 0x1e, + 0x94, 0x4e, 0x43, 0x5e, 0xb8, 0x0f, 0xcb, 0x0d, + 0x1d, 0x49, 0x05, 0x20, 0x63, 0x65, 0x5c, 0xe6, + 0x37, 0x68, 0x0f, 0xd7, 0x0b, 0xf4, 0xaf, 0xab, + 0xc9, 0xce, 0x54, 0xee, 0xbf, 0xb2, 0xbd, 0x36, + 0x44, 0x40, 0x36, 0xcd, 0x8d, 0x26, 0xe5, 0xc5, + 0x5a, 0xbb, 0xd3, 0x94, 0xa3, 0x41, 0x2f, 0x0d, + 0xd5, 0x22, 0x8a, 0x1f, 0x61, 0xc6, 0x07, 0xd9, + 0xae, 0x45, 0x8d, 0x24, 0x16, 0xae, 0x93, 0x9b, + 0xc2, 0x92, 0xd4, 0x72, 0x69, 0x98, 0x22, 0xbb, + 0x4a, 0x00, 0xdf, 0xf0, 0xbb, 0x01, 0xba, 0xbd, + 0x27, 0x90, 0xa1, 0x7e, 0x90, 0x5e, 0xd9, 0xaf, + 0x9b, 0x48, 0xe5, 0x42, 0x70, 0xc4, 0x5b, 0x31, + 0x56, 0x12, 0xf5, 0xb6, 0x14, 0x1d, 0x53, 0xce, + 0xc2, 0x57, 0x62, 0xdd, 0xe6, 0x28, 0x42, 0x97, + 0x67, 0xbf, 0xa6, 0x56, 0x8a, 0xa4, 0xa8, 0x90, + 0x86, 0x61, 0x88, 0x21, 0x64, 0x1d, 0x3f, 0xc7, + 0x9c, 0x44, 0xe2, 0x96, 0xa8, 0x3a, 0x4d, 0xfc, + 0xfc, 0x0b, 0xd8, 0x7a, 0x97, 0x81, 0x05, 0x75, + 0x72, 0xf1, 0xee, 0xcd, 0x21, 0x67, 0x54, 0x2d, + 0x1a, 0xc5, 0x6a, 0x51, 0x14, 0xf9, 0x12, 0x59, + 0x33, 0x5b, 0xf7, 0x3c, 0x5b, 0xca, 0x37, 0xb6, + 0xa9, 0xcb, 0x6f, 0x2e, 0xfa, 0x24, 0x16, 0x3c, + 0xd9, 0xfe, 0x3b, 0x5e, 0xc2, 0x38, 0x19, 0x4f, + 0xcb, 0x33, 0x88, 0x7d, 0x33, 0xf4, 0x1b, 0x0d, + 0xb3, 0xf8, 0xa2, 0xca, 0x88, 0xdc, 0x58, 0x87, + 0x11, 0x21, 0x3d, 0xb7, 0x47, 0x20, 0x56, 0x8f, + 0x4c, 0x54, 0xec, 0xa4, 0x09, 0x65, 0x47, 0xe4, + 0x7f, 0x4e, 0x19, 0xdc, 0x4e, 0x4a, 0x81, 0x51, + 0xb8, 0x5c, 0x7b, 0x2f, 0x33, 0xdd, 0xb9, 0x2b, + 0x13, 0xa4, 0xc4, 0x11, 0xb0, 0x35, 0x74, 0x9f, + 0xea, 0x06, 0xce, 0xe9, 0xec, 0x69, 0x0d, 0x7e, + 0xf5, 0x10, 0x82, 0x10, 0xcf, 0xbd, 0xa8, 0x7f, + 0xe5, 0x50, 0x05, 0x61, 0x30, 0x96, 0x99, 0xee, + 0x62, 0xcd, 0x9c, 0x15, 0x2e, 0x0f, 0xee, 0x80, + 0x37, 0x87, 0x9b, 0xd7, 0x64, 0x04, 0xa6, 0x66, + 0x85, 0xf8, 0xc5, 0xed, 0xe0, 0x2c, 0x7c, 0x26, + 0x4d, 0x69, 0x91, 0xe4, 0xcd, 0x44, 0xd2, 0xda, + 0x27, 0x91, 0x33, 0xea, 0xf8, 0xe0, 0xae, 0x46, + 0x44, 0x47, 0x10, 0xd4, 0x83, 0x55, 0x2c, 0x37, + 0x92, 0xce, 0x16, 0x89, 0x2f, 0x1d, 0x1a, 0xa2, + 0xb9, 0x41, 0xe0, 0xce, 0x16, 0xce, 0x4a, 0x18, + 0x1a, 0x5f, 0x97, 0xd7, 0x3f, 0x2f, 0x4c, 0x07, + 0xf8, 0xcf, 0x03, 0x26, 0x2a, 0x00, 0xa3, 0xe4, + 0x28, 0x45, 0x68, 0x8c, 0x6c, 0x98, 0xa8, 0x96, + 0x09, 0x08, 0x99, 0x34, 0xec, 0x2e, 0x29, 0x1a, + 0xe5, 0x97, 0x37, 0x8d, 0x43, 0x9f, 0x2f, 0xfa, + 0x75, 0xb5, 0x6c, 0xa9, 0x88, 0x77, 0x5e, 0x57, + 0x4d, 0x07, 0x50, 0x4d, 0xb8, 0x32, 0x9f, 0xbd, + 0x6f, 0x59, 0xb1, 0x46, 0x83, 0xef, 0xff, 0x63, + 0xdc, 0x03, 0x49, 0x17, 0xb8, 0x29, 0x32, 0xbf, + 0xc8, 0x71, 0x61, 0xba, 0x8e, 0x35, 0x2d, 0xce, + 0xf4, 0x75, 0x77, 0xe6, 0xab, 0xaf, 0x9c, 0xc5, + 0xd7, 0x4e, 0xb9, 0xfa, 0x53, 0x1b, 0x9a, 0xe7, + 0x52, 0xb6, 0x4f, 0x9a, 0x1d, 0xe9, 0x10, 0x0a, + 0x79, 0xd2, 0xae, 0xb1, 0x61, 0xa3, 0x80, 0x48, + 0x36, 0x4e, 0xc7, 0x47, 0x4a, 0x8d, 0x66, 0x8d, + 0xf1, 0x06, 0xb9, 0x23, 0x27, 0x4b, 0xdf, 0x36, + 0x9f, 0xb8, 0x2a, 0x62, 0xf1, 0x65, 0x65, 0x4d, + 0xa1, 0x5b, 0xaf, 0x0c, 0x0f, 0xb3, 0x9c, 0xc5, + 0x46, 0xff, 0xab, 0x46, 0x80, 0x88, 0xc0, 0x2e, + 0x64, 0xcd, 0x1f, 0x60, 0x3d, 0x52, 0xdf, 0x36, + 0x49, 0x14, 0x6c, 0x8e, 0x0a, 0x11, 0x41, 0x3c, + 0x93, 0x01, 0xe5, 0xf5, 0x46, 0xca, 0x3e, 0x9b, + 0xf8, 0xa3, 0x42, 0xfe, 0x2b, 0x0b, 0xf5, 0xdc, + 0x8d, 0x64, 0x02, 0xd7, 0x27, 0xb9, 0x90, 0xec, + 0x4d, 0xa7, 0x13, 0xc5, 0x92, 0xb8, 0x8b, 0x9b, + 0x7e, 0xc4, 0x3f, 0x25, 0x3d, 0x56, 0xf6, 0x6e, + 0xdc, 0xae, 0xc6, 0xb5, 0x7a, 0x6e, 0x8c, 0x45, + 0x92, 0xbc, 0x88, 0x17, 0x45, 0xd5, 0x35, 0x96, + 0x10, 0xec, 0xaf, 0x61, 0x45, 0xe9, 0x71, 0x26, + 0xd2, 0xf4, 0xb4, 0xe6, 0x11, 0x25, 0xf8, 0x8b, + 0xe1, 0x6d, 0xb0, 0x05, 0x52, 0x53, 0x96, 0xba, + 0x61, 0x9b, 0x94, 0x49, 0xf7, 0x03, 0xa7, 0x1a, + 0x85, 0x10, 0x8e, 0x93, 0xb9, 0xf4, 0xad, 0x0d, + 0x15, 0x0c, 0x58, 0xa3, 0xea, 0xab, 0x17, 0xbd, + 0xbd, 0x88, 0x38, 0x61, 0x73, 0x41, 0xa1, 0xc2, + 0x7d, 0x15, 0x8c, 0x2d, 0x6b, 0xb5, 0x19, 0x63, + 0x46, 0xb7, 0xc3, 0xf7, 0x62, 0x39, 0xd0, 0xbb, + 0x1a, 0x7a, 0xc4, 0x12, 0x11, 0x0f, 0x96, 0xd0, + 0x03, 0x96, 0x8a, 0x8f, 0x83, 0xc8, 0xad, 0xb8, + 0x12, 0x5c, 0xdd, 0xb3, 0xed, 0xc5, 0x55, 0x92, + 0x67, 0xef, 0xf8, 0xdc, 0xfa, 0x60, 0xe2, 0xae, + 0x4b, 0x52, 0xce, 0xbc, 0x97, 0x0c, 0x18, 0xbe, + 0xc3, 0x11, 0xa3, 0xaa, 0x29, 0xe7, 0xfc, 0xf4, + 0x8a, 0x34, 0x49, 0x14, 0x04, 0x29, 0xa2, 0xb1, + 0xe4, 0xf1, 0x38, 0x3c, 0xb0, 0x1f, 0x08, 0x97, + 0xbd, 0xe1, 0xf4, 0x8e, 0xd8, 0x57, 0x3d, 0x95, + 0x38, 0x45, 0x21, 0x74, 0xa2, 0xd4, 0x56, 0xdb, + 0x0e, 0x11, 0xc9, 0x11, 0x6c, 0x67, 0x5b, 0xa4, + 0xa6, 0x4a, 0x65, 0x78, 0xdb, 0xc3, 0x44, 0x10, + 0x40, 0x3f, 0xc3, 0xbf, 0x5d, 0xbf, 0xb1, 0x86, + 0xfe, 0xb5, 0xc9, 0x36, 0xcf, 0x3a, 0xc4, 0x04, + 0xbe, 0x05, 0x11, 0xb4, 0x54, 0x03, 0x5c, 0x72, + 0xcf, 0x1a, 0xbf, 0x3a, 0x02, 0xfd, 0x9d, 0xfa, + 0xe8, 0xa4, 0x8e, 0x69, 0x03, 0x96, 0x3e, 0x89, + 0xc4, 0x41, 0x13, 0x95, 0x45, 0x6e, 0xc1, 0xb6, + 0x8a, 0xdd, 0x0c, 0x6d, 0xc9, 0x6f, 0xd3, 0x4e, + 0xb3, 0xd0, 0x94, 0x93, 0x90, 0x08, 0x8e, 0x23, + 0x64, 0x96, 0x59, 0x63, 0x8d, 0x82, 0x3a, 0x8c, + 0x24, 0xc5, 0x4f, 0x6b, 0x32, 0xa3, 0x3c, 0x6c, + 0x2c, 0x70, 0xbc, 0x9a, 0x57, 0x57, 0x1b, 0x18, + 0x57, 0x91, 0xb3, 0xc4, 0xc9, 0x12, 0x76, 0xb0, + 0x2c, 0x10, 0xa2, 0xe4, 0xd2, 0xdd, 0x96, 0x99, + 0x15, 0x81, 0xa6, 0xe7, 0xe6, 0x58, 0x83, 0xcb, + 0xc0, 0xa1, 0x71, 0xdb, 0x67, 0x41, 0xda, 0x58, + 0x8b, 0x90, 0x5d, 0x32, 0xa7, 0x6d, 0x98, 0x9a, + 0x72, 0x9c, 0x17, 0x07, 0x38, 0xc6, 0xad, 0x38, + 0x28, 0x56, 0x73, 0x95, 0x70, 0x6b, 0xad, 0x66, + 0xc5, 0x91, 0x5b, 0x0c, 0x82, 0x82, 0xaf, 0x4d, + 0xf8, 0xba, 0x3f, 0xd1, 0x03, 0xc4, 0x0c, 0x10, + 0xa3, 0xc0, 0x85, 0x15, 0xdd, 0x46, 0xe0, 0x12, + 0xb0, 0xb6, 0x40, 0x9e, 0x92, 0x38, 0xfd, 0x7e, + 0xa3, 0x87, 0xb1, 0x04, 0x08, 0x3c, 0x24, 0xc8, + 0xac, 0xa2, 0x5a, 0xb4, 0x28, 0xd6, 0xc2, 0xad, + 0x2e, 0xa8, 0x2d, 0xc7, 0x40, 0xb1, 0x0d, 0x1f, + 0xfd, 0xbe, 0x7e, 0x60, 0x49, 0xf5, 0x20, 0x4d, + 0x23, 0xfd, 0x07, 0x22, 0x04, 0xbf, 0x44, 0xfd, + 0x98, 0x99, 0x4d, 0x58, 0xc8, 0x21, 0x7d, 0x59, + 0x46, 0xd0, 0x9c, 0x97, 0x59, 0x4f, 0x0a, 0x84, + 0xc7, 0x2c, 0x89, 0x84, 0x9e, 0x9a, 0x1e, 0xc7, + 0xc1, 0x31, 0x5c, 0x68, 0xf2, 0x80, 0x7f, 0xf6, + 0xb9, 0x4e, 0x14, 0xb8, 0xf9, 0xa3, 0xf8, 0x26, + 0xc4, 0xf4, 0xad, 0xdd, 0xaf, 0x3b, 0xd5, 0xc6, + 0xd2, 0x05, 0xe2, 0xdf, 0xb8, 0x2b, 0x91, 0x26, + 0x3c, 0x10, 0xbc, 0x0c, 0x37, 0x51, 0x9b, 0x29, + 0x1e, 0x3d, 0x99, 0x6e, 0xa5, 0x8e, 0xcc, 0xd4, + 0x59, 0x25, 0xc4, 0xcb, 0x5c, 0xef, 0xbb, 0x25, + 0x5b, 0x79, 0xa3, 0x32, 0x4c, 0xbd, 0x1f, 0xaa, + 0x2b, 0x5a, 0xc7, 0x65, 0x54, 0x1d, 0x13, 0xad, + 0x9f, 0xae, 0x13, 0x29, 0xb5, 0x8e, 0x30, 0x57, + 0xef, 0xb6, 0x9d, 0x5b, 0x66, 0xeb, 0xaf, 0x49, + 0x6a, 0xc0, 0x56, 0xf9, 0x76, 0x94, 0xc5, 0x91, + 0xbf, 0x20, 0xd7, 0x8d, 0x66, 0x7f, 0xe4, 0x63, + 0x60, 0x93, 0x47, 0x3f, 0x60, 0x06, 0xe5, 0x93, + 0xbd, 0x2b, 0xc4, 0x8e, 0x22, 0xe8, 0xba, 0x49, + 0x2d, 0x19, 0xad, 0x87, 0x69, 0x7b, 0x20, 0x6f, + 0x66, 0x5c, 0x11, 0x30, 0xeb, 0xc1, 0x6e, 0x15, + 0x5f, 0x60, 0x67, 0xb9, 0x80, 0xbb, 0x07, 0x95, + 0xf9, 0x6d, 0x30, 0x4b, 0x7a, 0x59, 0xd1, 0x99, + 0x11, 0x6c, 0x0d, 0x92, 0x81, 0x8e, 0xe3, 0xcb, + 0x72, 0x3f, 0x4e, 0x37, 0x89, 0x8f, 0xff, 0x72, + 0xc5, 0x3d, 0x27, 0x41, 0x2c, 0xc4, 0x74, 0xd2, + 0x39, 0xe7, 0x95, 0xf4, 0xf7, 0xac, 0xcc, 0x76, + 0x6e, 0x55, 0xe0, 0x98, 0x98, 0x64, 0xde, 0xdf, + 0xa2, 0x70, 0x07, 0x4c, 0x69, 0x5a, 0xe4, 0xec, + 0x88, 0x51, 0xd3, 0x2f, 0xba, 0x49, 0x2c, 0x70, + 0x55, 0x68, 0x90, 0x6c, 0x83, 0xb3, 0xfe, 0xf0, + 0xe8, 0x6d, 0x30, 0x60, 0x74, 0x70, 0x96, 0xa7, + 0xce, 0x4c, 0x61, 0x36, 0xfa, 0x3e, 0x07, 0x1f, + 0x49, 0xe9, 0x50, 0xea, 0x1f, 0xf2, 0x6c, 0x6c, + 0x87, 0xa7, 0x4f, 0x2e, 0x1b, 0x3d, 0x26, 0xde, + 0x3a, 0x2f, 0xda, 0x7b, 0x1c, 0x6c, 0x1f, 0x37, + 0xd1, 0xdd, 0x58, 0xb4, 0xe1, 0x45, 0x9e, 0xbb, + 0xe8, 0xae, 0xed, 0xa1, 0x4b, 0x83, 0x50, 0xfe, + 0x98, 0xb7, 0xc1, 0x7e, 0x50, 0x03, 0xc4, 0xae, + 0x4c, 0x07, 0x82, 0xc3, 0x59, 0x94, 0x58, 0x45, + 0x6a, 0xf8, 0xd4, 0x20, 0xf2, 0x39, 0xf4, 0xb3, + 0x34, 0xab, 0xb0, 0xc3, 0x73, 0xc6, 0xd9, 0x7f, + 0x1c, 0x13, 0xe1, 0x18, 0x23, 0xa5, 0xff, 0x53, + 0xe7, 0x71, 0x79, 0xe3, 0x66, 0xc3, 0x5b, 0xe4, + 0x07, 0xf4, 0x1f, 0xe6, 0xd4, 0x9d, 0xb9, 0x42, + 0x4e, 0xce, 0x91, 0x94, 0x69, 0xea, 0xa7, 0x79, + 0x70, 0x84, 0x8a, 0x2d, 0xe7, 0x61, 0xca, 0x1f, + 0xf0, 0x8d, 0x88, 0x7c, 0x15, 0xa9, 0x30, 0x38, + 0x86, 0x0b, 0x49, 0x1c, 0xf3, 0x92, 0xfd, 0xa8, + 0xf6, 0x91, 0x1f, 0x42, 0x95, 0x9b, 0x29, 0xdc, + 0x35, 0x2c, 0xf8, 0xc9, 0xf1, 0x77, 0x60, 0xe3, + 0x0a, 0x7b, 0xa5, 0x21, 0xff, 0xb2, 0x93, 0x45, + 0x50, 0xf2, 0xb9, 0xce, 0xd4, 0xbd, 0x68, 0x82, + 0x31, 0xea, 0xa8, 0x7b, 0x4e, 0x0b, 0x12, 0x1d, + 0x07, 0x97, 0x91, 0xb2, 0xb7, 0x6e, 0xeb, 0x76, + 0xf5, 0x3b, 0x1a, 0xa4, 0x79, 0x83, 0x80, 0xfc, + 0x0f, 0x80, 0x73, 0xfd, 0x54, 0x2c, 0xa6, 0x14, + 0xb8, 0xad, 0xdd, 0x2c, 0x84, 0xf7, 0xd9, 0xf1, + 0x6f, 0x74, 0x2c, 0xe7, 0xe7, 0xfa, 0x16, 0x03, + 0x3e, 0xe5, 0xa3, 0x69, 0x59, 0x3c, 0x16, 0x59, + 0x00, 0xa2, 0x8a, 0xa4, 0x37, 0x06, 0xbe, 0x10, + 0xef, 0x24, 0xec, 0x06, 0x84, 0xb6, 0xd2, 0x23, + 0xa8, 0x00, 0x10, 0x06, 0x80, 0xdd, 0x6a, 0xb7, + 0x21, 0x50, 0xae, 0xf0, 0x51, 0xba, 0x5b, 0x29, + 0xe0, 0x8f, 0xb0, 0x11, 0x11, 0x47, 0x79, 0x47, + 0x66, 0x42, 0x44, 0x8e, 0x00, 0x6c, 0x13, 0x7f, + 0xcc, 0xff, 0xa1, 0xcb, 0x36, 0xf6, 0x2d, 0x09, + 0x72, 0x45, 0x81, 0xce, 0xf6, 0x84, 0xff, 0x51, + 0xf3, 0x7b, 0x4b, 0x44, 0xcb, 0xeb, 0xec, 0xbd, + 0x2d, 0xee, 0xe6, 0x71, 0x6f, 0x8a, 0xa4, 0x2b, + 0x28, 0xdf, 0x15, 0xa5, 0xfc, 0xce, 0xfe, 0x95, + 0x2d, 0xda, 0x17, 0x40, 0x0c, 0xce, 0xad, 0x53, + 0xb1, 0x18, 0x7b, 0x26, 0x85, 0x82, 0xce, 0x77, + 0x44, 0x2c, 0x4f, 0x78, 0xdd, 0x1c, 0x5b, 0xd0, + 0x0e, 0xe9, 0x9b, 0xf2, 0xa2, 0x25, 0xeb, 0x74, + 0x90, 0x62, 0x7a, 0x43, 0xe4, 0x91, 0xf8, 0xad, + 0x52, 0xbd, 0xbe, 0xec, 0x83, 0x06, 0x5a, 0x4b, + 0x2b, 0x06, 0x6e, 0x3a, 0xc6, 0xec, 0x60, 0x0e, + 0x0a, 0x86, 0xbf, 0x69, 0x21, 0x74, 0x5a, 0xd2, + 0xbf, 0x79, 0x3b, 0xd4, 0x17, 0xc4, 0x94, 0x25, + 0xed, 0x6c, 0xec, 0x2a, 0xeb, 0x3f, 0xf9, 0x3a, + 0xba, 0xf4, 0x4d, 0xda, 0xfc, 0x6e, 0x46, 0x93, + 0xd7, 0x24, 0x2f, 0xb2, 0xec, 0xbb, 0x2f, 0x16, + 0x7a, 0xee, 0x2a, 0xcf, 0xf6, 0x2e, 0xf5, 0x5f, + 0xb1, 0x79, 0xdf, 0xc1, 0x46, 0xb1, 0xc0, 0x60, + 0x65, 0x88, 0x96, 0x75, 0x5e, 0xfd, 0x29, 0xe4, + 0xf0, 0x01, 0x9d, 0xcd, 0x8f, 0xf8, 0x16, 0xb4, + 0xfd, 0x6f, 0x27, 0x6b, 0xf9, 0x3c, 0x18, 0xb6, + 0x94, 0x67, 0xb4, 0x4c, 0x29, 0x53, 0xa3, 0x83, + 0xa2, 0x44, 0x4b, 0xfd, 0x1d, 0xc3, 0xe4, 0xe0, + 0x5c, 0x3c, 0x45, 0x25, 0x02, 0x68, 0x67, 0xdc, + 0x84, 0x92, 0x1b, 0x5b, 0x42, 0xf7, 0x19, 0x6d, + 0xbc, 0x3e, 0x0f, 0x9d, 0xe4, 0xf2, 0x2d, 0x48, + 0xc3, 0xc4, 0x8c, 0xa7, 0x58, 0x2f, 0x55, 0xdd, + 0x37, 0x22, 0x2c, 0x34, 0xba, 0x5c, 0x48, 0x7a, + 0x05, 0x5b, 0x75, 0x62, 0x74, 0x17, 0x1d, 0xec, + 0xd3, 0x61, 0x6f, 0xbc, 0x31, 0x49, 0x9b, 0xc1, + 0x6e, 0x53, 0x8e, 0xf3, 0xea, 0x00, 0x7f, 0xad, + 0xe9, 0xd2, 0xb1, 0x3e, 0x92, 0x9e, 0x72, 0xe9, + 0x09, 0xfe, 0x61, 0x82, 0x75, 0x41, 0xc4, 0x9e, + 0xe9, 0x81, 0x7b, 0xe4, 0x60, 0x4e, 0x2d, 0xf5, + 0xb6, 0x71, 0x43, 0x15, 0x43, 0x33, 0x34, 0x3e, + 0x7d, 0x8f, 0xb5, 0xc9, 0xe7, 0x13, 0xdc, 0x95, + 0xf1, 0x18, 0x43, 0x83, 0x68, 0x3b, 0x2c, 0x11, + 0xc2, 0x75, 0x34, 0x44, 0x96, 0x70, 0x5e, 0xfc, + 0x95, 0x10, 0x06, 0xe9, 0xff, 0xd8, 0x4f, 0x51, + 0x39, 0x9e, 0xb8, 0x00, 0x1c, 0x07, 0x9f, 0x83, + 0xfe, 0x3f, 0x3b, 0xcb, 0xda, 0xfe, 0xbe, 0x61, + 0xe8, 0xa9, 0x13, 0xf5, 0x0f, 0xcf, 0x69, 0xf1, + 0xc2, 0xcf, 0xf2, 0x2f, 0xe9, 0x06, 0x3b, 0x75, + 0x1e, 0xd2, 0x01, 0x85, 0x1b, 0xa3, 0x44, 0x55, + 0x4c, 0x79, 0x23, 0xeb, 0x69, 0xa2, 0x3d, 0x30, + 0x45, 0xd8, 0xc5, 0x95, 0xfb, 0xe8, 0x86, 0x36, + 0x67, 0xb5, 0x8c, 0x81, 0x1d, 0x39, 0xfe, 0x0e, + 0x4d, 0x53, 0xaf, 0x06, 0x7a, 0x14, 0xcc, 0xf0, + 0xba, 0x04, 0xf8, 0x43, 0x07, 0x19, 0xc0, 0x2e, + 0xd6, 0x61, 0xb8, 0xf5, 0x4c, 0x2f, 0x49, 0x27, + 0x70, 0xd1, 0x14, 0xa3, 0xbc, 0x5f, 0xdd, 0x15, + 0x52, 0x0e, 0x6f, 0x4f, 0xbe, 0x8a, 0x6d, 0xf7, + 0x44, 0x6a, 0x52, 0x76, 0xb7, 0xb3, 0x7e, 0x3c, + 0xd7, 0x3a, 0x44, 0xf3, 0x0c, 0x87, 0xa4, 0x85, + 0x19, 0x96, 0xbd, 0x84, 0x60, 0x05, 0x3b, 0x8f, + 0x2d, 0xfa, 0x1c, 0x2e, 0xae, 0x43, 0xca, 0xca, + 0x9a, 0x9f, 0xd5, 0x82, 0xa2, 0x15, 0x86, 0xad, + 0xc7, 0x88, 0xc6, 0x8a, 0x1f, 0xdd, 0xac, 0x12, + 0x82, 0x73, 0x06, 0x01, 0xf2, 0x8a, 0x81, 0xeb, + 0x00, 0x05, 0x77, 0xbd, 0xea, 0xf5, 0x25, 0xc6, + 0x1d, 0xce, 0xac, 0xa9, 0x5d, 0x16, 0xa0, 0x17, + 0xbb, 0x46, 0xde, 0x15, 0x2c, 0xfa, 0x8b, 0xf7, + 0x73, 0xa6, 0x5c, 0x93, 0x2f, 0xa4, 0x05, 0x1a, + 0x2b, 0x44, 0xe3, 0x28, 0xab, 0xfc, 0x14, 0x31, + 0xcd, 0xae, 0x9b, 0xed, 0xa5, 0xe6, 0x07, 0x24, + 0x22, 0xdf, 0xdd, 0x42, 0x61, 0x46, 0x2c, 0x54, + 0x5f, 0x35, 0x72, 0x76, 0xa7, 0xda, 0x3d, 0xff, + 0x93, 0x1b, 0x89, 0x4d, 0xe4, 0x49, 0xa5, 0xaa, + 0xd4, 0x59, 0x16, 0xfe, 0xd6, 0xf6, 0x12, 0xc5, + 0x96, 0x1a, 0x3d, 0x3b, 0x12, 0xac, 0x5f, 0x40, + 0xaa, 0x42, 0x7f, 0x8f, 0x24, 0xa3, 0x70, 0x10, + 0x03, 0x68, 0x73, 0x2e, 0x20, 0x04, 0x63, 0xdb, + 0x08, 0xce, 0x22, 0x17, 0x49, 0xf7, 0x43, 0xf1, + 0x20, 0x23, 0x2b, 0x5b, 0x50, 0x09, 0x22, 0xfa, + 0x38, 0x70, 0x32, 0x08, 0x0e, 0xda, 0xf2, 0xcc, + 0xef, 0x9f, 0xe0, 0x4f, 0x4f, 0x6c, 0x8f, 0x76, + 0x42, 0x6f, 0x91, 0xa1, 0xdb, 0x34, 0xcd, 0xa6, + 0x45, 0xab, 0x85, 0x3f, 0xf6, 0x5f, 0xa8, 0x73, + 0x21, 0x58, 0x7b, 0x5b, 0xa3, 0xcc, 0x0b, 0x1f, + 0x69, 0x64, 0x1d, 0x5e, 0x13, 0x6d, 0x35, 0x27, + 0x02, 0x99, 0xce, 0x64, 0x0c, 0x13, 0xaf, 0x10, + 0x91, 0x46, 0x0e, 0x9c, 0x8e, 0xb8, 0x4f, 0x25, + 0x50, 0x90, 0xd0, 0x16, 0x41, 0xc6, 0x02, 0xec, + 0x82, 0x47, 0xf4, 0xa0, 0x71, 0x72, 0xcd, 0xf0, + 0x7a, 0x3e, 0x60, 0x14, 0xe3, 0x0a, 0x8a, 0xe5, + 0xe6, 0x1c, 0x32, 0x48, 0xb3, 0x77, 0xb5, 0x0d, + 0x50, 0xbc, 0x98, 0xcd, 0xb9, 0xd2, 0xb0, 0xc8, + 0x7a, 0x7b, 0xd3, 0xb6, 0x69, 0xaa, 0x6e, 0xc2, + 0x22, 0x7d, 0x2a, 0xbd, 0x3a, 0xfc, 0x11, 0x3f, + 0xdd, 0x3e, 0x49, 0xfe, 0xe7, 0x49, 0x6b, 0x5b, + 0x95, 0x35, 0xf9, 0xa1, 0x39, 0x66, 0x85, 0xe0, + 0x14, 0x91, 0x1f, 0xdc, 0x19, 0x65, 0x35, 0x3c, + 0xdf, 0x5e, 0xf2, 0x5e, 0xad, 0x49, 0x67, 0x16, + 0xbd, 0x3b, 0x4a, 0xdb, 0x44, 0xb8, 0xaf, 0xff, + 0x4e, 0x88, 0x5c, 0x42, 0x40, 0xfc, 0x2c, 0xaf, + 0xb1, 0xc4, 0x58, 0x97, 0xf6, 0xeb, 0xaf, 0x1c, + 0xac, 0xfe, 0x91, 0xcd, 0x5d, 0xa1, 0x8f, 0x24, + 0x8f, 0x02, 0x3c, 0xea, 0x48, 0x0b, 0xb4, 0x95, + 0x45, 0xf7, 0xc7, 0xbc, 0x2a, 0x6a, 0x99, 0xd2, + 0x0f, 0xed, 0x70, 0xe6, 0xbb, 0x95, 0x8d, 0x08, + 0x65, 0x8b, 0xe0, 0x19, 0xd2, 0x61, 0x68, 0xe3, + 0x88, 0x67, 0xd5, 0x89, 0x97, 0xd0, 0x16, 0x3d, + 0xa5, 0x8f, 0xfc, 0x06, 0xa3, 0xd8, 0xa0, 0x88, + 0xc0, 0x5c, 0xf9, 0x03, 0xd3, 0x64, 0x2c, 0xf0, + 0xb7, 0x63, 0x3c, 0xfb, 0xdc, 0x9a, 0x19, 0x35, + 0x2f, 0x8b, 0xe8, 0x3e, 0x7b, 0xd4, 0x90, 0xd7, + 0x18, 0xbb, 0x62, 0xaa, 0x90, 0x54, 0xbe, 0x95, + 0xbc, 0x29, 0x9f, 0xf2, 0xca, 0x62, 0x0f, 0xfa, + 0x8d, 0xe7, 0x7c, 0xad, 0x3e, 0xe5, 0x6c, 0xa9, + 0x7f, 0xa7, 0xd4, 0xeb, 0x87, 0x05, 0xe3, 0xd8, + 0xa4, 0x66, 0x0a, 0xc9, 0x0e, 0x61, 0x47, 0xaf, + 0x86, 0x50, 0x61, 0x41, 0x23, 0x35, 0x59, 0x41, + 0x17, 0xa2, 0xe7, 0x33, 0x6e, 0x8b, 0x4d, 0x10, + 0x83, 0x70, 0xaa, 0xbd, 0x66, 0x2f, 0x71, 0x5e, + 0x8e, 0x15, 0x5b, 0x50, 0x8c, 0x0e, 0x77, 0xd4, + 0x66, 0x34, 0x4a, 0x3b, 0x6d, 0x6e, 0x1a, 0x28, + 0xcf, 0x8d, 0x4b, 0x8a, 0xba, 0x19, 0xfe, 0xb3, + 0xbe, 0x8b, 0x11, 0x98, 0xa3, 0x8e, 0x00, 0x5a, + 0x9b, 0x0e, 0x57, 0x42, 0x9d, 0xd8, 0x8a, 0x61, + 0xd8, 0x2d, 0x74, 0x7e, 0xdb, 0x49, 0xe0, 0x33, + 0xaa, 0xe5, 0xc7, 0x1a, 0x5e, 0x82, 0x8b, 0x09, + 0x2c, 0xc1, 0xeb, 0x12, 0x20, 0xb3, 0xc4, 0x7b, + 0x6b, 0xbb, 0xb6, 0x70, 0x29, 0x01, 0x7e, 0x36, + 0xf6, 0x8c, 0x6a, 0xc9, 0x5d, 0x34, 0x00, 0xec, + 0x4d, 0x5b, 0x32, 0xdb, 0xe8, 0xda, 0x87, 0x66, + 0xe3, 0x17, 0xd2, 0x9a, 0x85, 0x87, 0xc7, 0x1d, + 0xfd, 0x14, 0x99, 0xdc, 0xa1, 0xa1, 0xef, 0xa4, + 0xae, 0x7e, 0x4d, 0xa4, 0xd1, 0x13, 0x03, 0x85, + 0x21, 0xe6, 0x55, 0xef, 0xec, 0xf4, 0x88, 0xe5, + 0x13, 0x81, 0x88, 0xcd, 0xd5, 0x68, 0xd4, 0x76, + 0x0c, 0x64, 0x0a, 0x42, 0xc1, 0x16, 0x70, 0x00, + 0x6b, 0xec, 0x32, 0x14, 0xab, 0xa2, 0x4b, 0x19, + 0x9f, 0xde, 0x8a, 0xa6, 0x92, 0x95, 0x97, 0x4a, + 0x72, 0x3d, 0x8f, 0x9d, 0x1b, 0x15, 0x2e, 0x06, + 0x94, 0x65, 0xc3, 0x00, 0xf9, 0xe7, 0x32, 0x41, + 0x54, 0xdd, 0x35, 0xf1, 0x0a, 0x63, 0xc9, 0xfd, + 0x38, 0x1e, 0xa0, 0x17, 0xa2, 0xbb, 0x7b, 0xc0, + 0x08, 0xd1, 0xdd, 0x76, 0x8d, 0xb4, 0x98, 0x28, + 0xf2, 0x5e, 0xe4, 0x8f, 0xcd, 0xcb, 0x72, 0x5c, + 0x8b, 0x2f, 0x73, 0x09, 0x88, 0x92, 0x91, 0xf1, + 0xb7, 0x68, 0xb1, 0xec, 0xa8, 0xc3, 0x64, 0x2e, + 0x15, 0x6f, 0x02, 0x37, 0x59, 0x47, 0x38, 0x62, + 0x2c, 0x17, 0xdb, 0x1e, 0xa7, 0xb8, 0x10, 0xb2, + 0x2b, 0x63, 0x85, 0x0b, 0x5c, 0xcb, 0x6f, 0xb4, + 0x5c, 0x20, 0x94, 0x04, 0xf8, 0x85, 0x9b, 0x5e, + 0x78, 0xff, 0x7a, 0xc8, 0x69, 0x14, 0x70, 0xb0, + 0xac, 0x89, 0x3f, 0x70, 0xc6, 0x67, 0x76, 0xd3, + 0x12, 0x22, 0x81, 0x79, 0xfc, 0x0d, 0x07, 0xce, + 0xc1, 0xb6, 0x4a, 0x7c, 0x7d, 0x89, 0xbc, 0x94, + 0xf8, 0x9d, 0x59, 0xa8, 0xe5, 0x58, 0xe1, 0x01, + 0xef, 0xa8, 0x26, 0x8c, 0x78, 0x2f, 0xeb, 0xf5, + 0xfb, 0xa3, 0x1c, 0x5a, 0xf6, 0x2a, 0x96, 0xeb, + 0x36, 0x8c, 0xfd, 0xc4, 0x08, 0x10, 0x72, 0xaa, + 0xd8, 0xc5, 0x8a, 0xf8, 0xe5, 0x1f, 0xb9, 0x9d, + 0x9a, 0x65, 0x97, 0x90, 0x95, 0xf8, 0x79, 0xae, + 0x77, 0x13, 0x87, 0xc8, 0x2b, 0x30, 0x71, 0x3d, + 0x69, 0xd0, 0x0a, 0x7a, 0xbd, 0x9d, 0x4c, 0x31, + 0x63, 0xfe, 0x14, 0x64, 0x8d, 0x9e, 0xda, 0xcb, + 0x0a, 0xd2, 0x77, 0x31, 0xb7, 0x17, 0x26, 0xfc, + 0x91, 0x4e, 0x32, 0xa9, 0x03, 0x4a, 0x53, 0xef, + 0xb7, 0x3f, 0x79, 0x45, 0x26, 0x50, 0xbf, 0x3a, + 0x73, 0x32, 0x07, 0x66, 0xf0, 0x7d, 0xab, 0x34, + 0x41, 0x74, 0xba, 0x56, 0x0c, 0x43, 0xe8, 0x0a, + 0x39, 0x01, 0xce, 0x6f, 0xd8, 0x18, 0xc3, 0xa1, + 0x3b, 0x86, 0xf2, 0x2f, 0xf2, 0x25, 0x4f, 0x65, + 0xf5, 0x84, 0x88, 0x99, 0x3d, 0xdc, 0x4e, 0x38, + 0xc4, 0xc2, 0xf2, 0x57, 0x07, 0x6a, 0xe8, 0x58, + 0xe4, 0x12, 0xbf, 0xcf, 0xe2, 0x3d, 0xd1, 0xac, + 0x78, 0xef, 0x17, 0x38, 0x26, 0x28, 0xc0, 0x7a, + 0x36, 0x9a, 0x8a, 0xde, 0xe0, 0xd5, 0x90, 0x58, + 0x62, 0x26, 0xc2, 0x02, 0x3d, 0xbd, 0xbe, 0x94, + 0xd2, 0x42, 0xa0, 0x51, 0xcc, 0x53, 0x70, 0xdb, + 0x16, 0xe2, 0x15, 0x82, 0x76, 0xf8, 0xc9, 0x91, + 0x86, 0xd4, 0x67, 0xf6, 0xa1, 0xfb, 0x38, 0x8a, + 0x0f, 0x94, 0x98, 0x01, 0xbb, 0x31, 0x4c, 0x9f, + 0xea, 0xf8, 0x7e, 0xc0, 0xbd, 0x05, 0x69, 0xeb, + 0x25, 0x32, 0xd1, 0xd0, 0x08, 0xa3, 0x9f, 0x5c, + 0x18, 0x40, 0x02, 0xd0, 0xea, 0xb2, 0xf9, 0x4f, + 0x77, 0xcc, 0x18, 0xa6, 0x2a, 0x54, 0xa0, 0x1c, + 0xc1, 0x9b, 0x1d, 0x87, 0x29, 0xcd, 0x79, 0x33, + 0xc6, 0x33, 0x26, 0x68, 0x3a, 0x5f, 0x2b, 0xe3, + 0xb4, 0x24, 0xa0, 0x20, 0xf9, 0x90, 0xcd, 0xad, + 0x34, 0x66, 0x90, 0x93, 0x22, 0xfe, 0x77, 0xc9, + 0xb3, 0x83, 0x2d, 0x3c, 0xda, 0x71, 0x81, 0x15, + 0xb1, 0xda, 0x30, 0x8a, 0x9a, 0xf5, 0x21, 0x86, + 0x8e, 0x40, 0x36, 0x71, 0x45, 0x05, 0x7a, 0xcc, + 0xc7, 0x0b, 0x06, 0x4c, 0x14, 0xd7, 0x09, 0x20, + 0x8c, 0xb3, 0xbc, 0x7b, 0xa7, 0xed, 0x71, 0x46, + 0xc3, 0xe5, 0xd8, 0xe1, 0xca, 0x9c, 0xfb, 0x2a, + 0xc2, 0x19, 0xb1, 0xfd, 0xbd, 0x94, 0xae, 0x58, + 0xb6, 0x89, 0x7d, 0x95, 0x06, 0xe3, 0xd3, 0xe1, + 0xf8, 0x7b, 0x35, 0xcb, 0x31, 0x15, 0xb6, 0xa1, + 0x34, 0x78, 0xba, 0xbc, 0x94, 0xb0, 0xf9, 0x9f, + 0x0c, 0xbe, 0xdc, 0x2e, 0x1c, 0xa6, 0x33, 0xe4, + 0x75, 0x9a, 0xa8, 0xbe, 0x0d, 0xd6, 0xfd, 0x30, + 0x1b, 0x43, 0xfa, 0x26, 0x5a, 0x05, 0xf4, 0x1a, + 0x7c, 0x8d, 0x0a, 0x64, 0xb7, 0xe3, 0x13, 0x06, + 0x10, 0xf5, 0xb4, 0xf0, 0xd7, 0xef, 0x35, 0xbf, + 0x26, 0x27, 0x60, 0x65, 0x85, 0xc7, 0xd1, 0xef, + 0xf7, 0x0c, 0x33, 0x6f, 0x84, 0x99, 0xb4, 0xc7, + 0xd4, 0x4f, 0x59, 0x64, 0x92, 0xa3, 0xe9, 0xff, + 0x13, 0x20, 0x29, 0x4e, 0x5c, 0x66, 0x86, 0x88, + 0xd1, 0x09, 0x0c, 0xab, 0xc3, 0xc7, 0xd8, 0xf6, + 0x2f, 0x5f, 0x65, 0x79, 0xbe, 0xbf, 0xdd, 0xf6, + 0x30, 0x33, 0x5c, 0x6f, 0x85, 0x91, 0xdf, 0xe1, + 0xe6, 0x5c, 0x78, 0x7f, 0xa4, 0xa5, 0xa6, 0xf9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x11, 0x18, 0x21, 0x28, + 0x30, 0x39, 0x40, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa87", + .pk_len =3D DILITHIUM87_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM87_PUBLICKEYBYTES]){ + 0xb8, 0xdd, 0x1b, 0x8f, 0x82, 0x82, 0x8e, 0x9f, + 0x0a, 0x02, 0x15, 0xbd, 0x8f, 0xa8, 0x63, 0x72, + 0xd4, 0x3f, 0x9c, 0xcf, 0xea, 0x88, 0x2a, 0x53, + 0x95, 0x67, 0xe9, 0x96, 0xd0, 0xe3, 0x7e, 0x3c, + 0x95, 0x1c, 0xc0, 0x8f, 0x83, 0x5e, 0x86, 0x4a, + 0xd1, 0x52, 0x41, 0x68, 0xad, 0x66, 0xa7, 0xf8, + 0xc8, 0xe5, 0xed, 0x99, 0x55, 0xf9, 0xce, 0xd6, + 0x85, 0x3a, 0x8c, 0xe1, 0x48, 0xca, 0x2a, 0xcc, + 0x7b, 0x4d, 0x4e, 0xe8, 0x47, 0x75, 0x35, 0x92, + 0x24, 0xad, 0x7f, 0x35, 0x1f, 0xa6, 0x6c, 0xa2, + 0x6d, 0xab, 0xe3, 0xc8, 0xf7, 0xde, 0xaa, 0x2d, + 0xb4, 0x88, 0xbb, 0x55, 0x17, 0x49, 0x2a, 0x71, + 0x17, 0xda, 0x4d, 0xc6, 0xc5, 0xc1, 0xd6, 0xc6, + 0xb7, 0x8b, 0xa2, 0x86, 0xbd, 0x19, 0x2d, 0xc8, + 0x42, 0x3b, 0xa6, 0x56, 0x82, 0xc9, 0x4e, 0xfd, + 0x96, 0x46, 0xe2, 0xb8, 0x2b, 0xb4, 0x1f, 0x42, + 0xb6, 0x4f, 0x25, 0xa4, 0x6e, 0xe3, 0xad, 0xd3, + 0xc1, 0xc6, 0x54, 0xca, 0x62, 0x98, 0xf5, 0x8d, + 0xc0, 0xc2, 0x58, 0xcb, 0xf2, 0x22, 0x19, 0xa4, + 0x4e, 0xdc, 0xea, 0x7b, 0x36, 0x9f, 0x68, 0x06, + 0x9d, 0x24, 0x3e, 0xa3, 0xef, 0xc7, 0x00, 0xfc, + 0xb3, 0x78, 0x41, 0x4c, 0xc8, 0x9e, 0x83, 0x93, + 0x64, 0x1b, 0x14, 0x80, 0xdb, 0xcc, 0xfd, 0xa7, + 0xe2, 0x56, 0x13, 0x93, 0x79, 0xfd, 0xf9, 0xd2, + 0x02, 0x71, 0x9c, 0xec, 0x2a, 0xa6, 0x39, 0xfe, + 0xac, 0x25, 0x3c, 0x4b, 0x8c, 0xac, 0x8b, 0x82, + 0x3c, 0xde, 0xb0, 0x63, 0x52, 0x7f, 0xc5, 0xfe, + 0x8f, 0x90, 0xa1, 0x18, 0x71, 0xdd, 0x10, 0xb8, + 0xc7, 0xf6, 0x4c, 0xaa, 0x87, 0xf2, 0xec, 0x66, + 0xd7, 0xfe, 0x8a, 0xf0, 0x0e, 0x70, 0x88, 0x9d, + 0x21, 0x9e, 0x07, 0xe6, 0x11, 0x61, 0xcc, 0x19, + 0xb2, 0xa4, 0x79, 0x98, 0xff, 0xdc, 0xe2, 0xf5, + 0x4d, 0x04, 0xd9, 0x94, 0x51, 0x89, 0x28, 0x06, + 0xb5, 0x8a, 0x7b, 0xb5, 0x6d, 0x03, 0x24, 0xe4, + 0x37, 0x60, 0x43, 0xf4, 0x08, 0x26, 0xcc, 0xa1, + 0x32, 0xeb, 0x28, 0x1b, 0x70, 0x5c, 0xc0, 0x2f, + 0xcf, 0x7b, 0x05, 0x2a, 0x0f, 0x38, 0xf4, 0x15, + 0x1a, 0xc9, 0xbd, 0x94, 0x9d, 0x4a, 0x4c, 0xd7, + 0x63, 0x31, 0x83, 0xab, 0xc5, 0x0d, 0xb0, 0xce, + 0xfc, 0x24, 0x1f, 0xee, 0xa6, 0xac, 0xe5, 0x85, + 0xe3, 0xcc, 0x29, 0xf4, 0x9b, 0x21, 0x1a, 0x1a, + 0xa9, 0x5a, 0xf6, 0x5e, 0x2e, 0xe1, 0xd8, 0xa0, + 0x1e, 0x04, 0xdf, 0x76, 0xfe, 0xf2, 0x34, 0x7a, + 0xa1, 0xfd, 0xda, 0x9c, 0x8e, 0x9b, 0xd3, 0x6f, + 0xf3, 0x92, 0x19, 0xd6, 0x8d, 0xf5, 0x61, 0x1e, + 0xd6, 0x9d, 0xb9, 0x15, 0x2d, 0xcb, 0x5c, 0xb0, + 0x6f, 0x86, 0xb6, 0xa1, 0x5e, 0x2c, 0x88, 0x59, + 0xc7, 0x39, 0xfb, 0x20, 0xc9, 0x07, 0x12, 0x16, + 0x92, 0x92, 0xdb, 0x59, 0xaf, 0x63, 0xe3, 0xb4, + 0x05, 0x5e, 0x4a, 0x62, 0xcf, 0xe7, 0x07, 0x39, + 0x74, 0x7e, 0xc8, 0xc3, 0x1d, 0x2e, 0x07, 0xa1, + 0x25, 0x33, 0x6e, 0xce, 0x35, 0xfd, 0x61, 0xd8, + 0xd5, 0xb4, 0x6d, 0xe2, 0xd1, 0x0a, 0x04, 0x95, + 0x4b, 0xc9, 0x78, 0x4e, 0xb0, 0xa9, 0xf6, 0x71, + 0xc3, 0x8e, 0xff, 0xea, 0xcb, 0x0b, 0x7b, 0xca, + 0x13, 0x2a, 0x23, 0x4b, 0x4d, 0x0a, 0xad, 0x6f, + 0x9b, 0xa3, 0x58, 0x69, 0x5b, 0xdc, 0x5c, 0xaa, + 0xfc, 0x8e, 0xbc, 0xf9, 0xcd, 0x6f, 0xf5, 0x1c, + 0xe8, 0x66, 0x10, 0x61, 0xac, 0x5c, 0xb7, 0x78, + 0x8a, 0x4e, 0x1f, 0xce, 0x7f, 0x35, 0xfc, 0x6c, + 0x1a, 0xd7, 0xf3, 0x7b, 0x95, 0x2d, 0x2b, 0x8d, + 0xf9, 0x97, 0x1d, 0x6e, 0x2d, 0x1b, 0x92, 0xd7, + 0xcd, 0x5f, 0xac, 0x0b, 0x18, 0xdf, 0x04, 0x09, + 0x69, 0x4e, 0x8e, 0xb7, 0xe2, 0x63, 0x30, 0xb7, + 0x72, 0x32, 0x25, 0x5c, 0x7e, 0x30, 0xdd, 0x1a, + 0x4f, 0x9f, 0x9f, 0x32, 0xe0, 0x63, 0x2c, 0x68, + 0x9d, 0xc6, 0xd5, 0x63, 0x5e, 0x8c, 0x41, 0x00, + 0xf3, 0x70, 0x2e, 0xf2, 0x7d, 0x1a, 0x59, 0x84, + 0xc5, 0xc5, 0x3d, 0xfd, 0xf5, 0x36, 0xba, 0x00, + 0x34, 0x7b, 0x87, 0x5c, 0xa0, 0xe2, 0xd1, 0x5c, + 0x26, 0xd7, 0xd6, 0xc6, 0x4a, 0x0c, 0xfe, 0xde, + 0xf0, 0xc8, 0xa4, 0x44, 0xea, 0xc3, 0x86, 0xcf, + 0x70, 0xeb, 0x01, 0xfb, 0x3e, 0xa4, 0xb4, 0x20, + 0x10, 0x23, 0x5e, 0xde, 0x52, 0xf2, 0x19, 0x20, + 0x62, 0x67, 0x26, 0x76, 0x5c, 0x70, 0xd2, 0x5c, + 0xd1, 0xbe, 0x68, 0xa0, 0xe0, 0x48, 0x12, 0xe1, + 0xda, 0x4c, 0x25, 0x7f, 0xf2, 0xca, 0xf6, 0xd6, + 0x4d, 0xd6, 0x10, 0x5e, 0xe5, 0xab, 0x47, 0x5b, + 0x03, 0xb7, 0x0c, 0x1c, 0xca, 0x09, 0x2c, 0x0f, + 0x6f, 0x50, 0x6f, 0xc4, 0x2e, 0x6c, 0x1d, 0x95, + 0x4a, 0xee, 0x1d, 0x67, 0x37, 0x12, 0x91, 0xef, + 0xd4, 0x3b, 0xc4, 0xb0, 0x82, 0x37, 0x7c, 0x9b, + 0x18, 0x13, 0xa8, 0x18, 0xdf, 0xe1, 0x68, 0xbb, + 0xfa, 0x22, 0x66, 0x58, 0xb5, 0xac, 0xa9, 0x4f, + 0xbd, 0x19, 0x38, 0x8b, 0x70, 0x58, 0xa1, 0x48, + 0xcc, 0xf1, 0x6b, 0xdd, 0xd4, 0xf7, 0xb4, 0x59, + 0x6c, 0x47, 0x30, 0x7c, 0x29, 0x6f, 0xca, 0xbf, + 0xfa, 0xd9, 0x1e, 0x46, 0x9e, 0x2a, 0x78, 0x45, + 0x1a, 0xe9, 0x65, 0x8e, 0x8e, 0xe9, 0x4a, 0xfa, + 0xf1, 0xca, 0x6b, 0x7f, 0xdc, 0xf4, 0x04, 0x4e, + 0xb7, 0x6e, 0x7e, 0x9b, 0x45, 0xee, 0xfb, 0xca, + 0x0f, 0xa6, 0xe1, 0x45, 0x48, 0xd9, 0xf0, 0xfd, + 0xc8, 0x4b, 0xc2, 0x09, 0x7e, 0xd7, 0x97, 0xb9, + 0x88, 0xbb, 0x0c, 0x16, 0x55, 0x4f, 0x68, 0x55, + 0x83, 0xd2, 0xd8, 0xd6, 0x0b, 0x9d, 0x1c, 0xb6, + 0x4f, 0xbf, 0x99, 0x4b, 0x31, 0xd4, 0x6f, 0x80, + 0x07, 0x9f, 0x6c, 0xfe, 0x7d, 0x59, 0xf7, 0x3d, + 0xd2, 0xb3, 0x62, 0xd3, 0xf6, 0x1e, 0x6c, 0xc1, + 0x75, 0x45, 0x9a, 0x84, 0x7a, 0x7d, 0x31, 0x67, + 0x06, 0x5a, 0x72, 0xbe, 0x25, 0x3a, 0x30, 0x12, + 0xba, 0xe2, 0x0e, 0xa0, 0x6e, 0x5d, 0x72, 0xbc, + 0x8d, 0x58, 0x7f, 0xcb, 0x20, 0x57, 0x15, 0xe1, + 0x33, 0xdb, 0x90, 0xd4, 0xa6, 0xe1, 0xb0, 0x15, + 0xa1, 0x2f, 0xf1, 0x6f, 0x76, 0x42, 0xfa, 0xfd, + 0xdf, 0x66, 0x44, 0x0b, 0xf1, 0xe2, 0x47, 0xfd, + 0x1b, 0xc6, 0x95, 0xbe, 0x89, 0xdc, 0x3a, 0x53, + 0x6e, 0xbb, 0x70, 0xad, 0xb5, 0xa9, 0x8b, 0x7a, + 0x7e, 0xbb, 0x1e, 0x6e, 0x4f, 0x27, 0x1c, 0x0d, + 0xb1, 0x21, 0x4e, 0xaa, 0xb2, 0x47, 0x9e, 0x2b, + 0x17, 0x18, 0x41, 0x04, 0x83, 0x1a, 0x35, 0xe9, + 0xd6, 0xdc, 0x71, 0x06, 0x1e, 0x1c, 0x1b, 0x56, + 0x08, 0x86, 0xbd, 0x68, 0x12, 0xf8, 0x38, 0xdc, + 0xeb, 0x72, 0xc4, 0xda, 0x8a, 0x89, 0x67, 0xa6, + 0x13, 0x13, 0x27, 0x31, 0x47, 0x70, 0x12, 0x87, + 0x9b, 0x9f, 0xbb, 0x01, 0x76, 0x5b, 0x07, 0x9b, + 0x03, 0x78, 0xf1, 0x19, 0xd8, 0x8b, 0x92, 0x8c, + 0xb6, 0xcc, 0x43, 0x4d, 0x10, 0xbf, 0xac, 0x81, + 0x3e, 0x98, 0x8f, 0xcd, 0x43, 0x93, 0x9a, 0x8e, + 0x73, 0x47, 0x21, 0x34, 0x1d, 0x01, 0x85, 0x44, + 0xa8, 0xc9, 0x9c, 0xda, 0x0d, 0xcd, 0x4c, 0xe7, + 0xbd, 0xd7, 0xf5, 0x69, 0x95, 0xa0, 0x80, 0x5b, + 0x25, 0x3a, 0xe1, 0x93, 0x03, 0xbb, 0xa1, 0xdd, + 0xe5, 0x2c, 0xd0, 0x80, 0x5d, 0xb9, 0x4a, 0xb9, + 0x3d, 0x98, 0x95, 0x9d, 0x86, 0x07, 0xdf, 0x62, + 0x98, 0x19, 0x49, 0xdf, 0x8c, 0x36, 0x07, 0x2e, + 0x33, 0x1b, 0xbf, 0x7d, 0x64, 0x99, 0x01, 0xc0, + 0x2b, 0xcd, 0xba, 0x62, 0xf9, 0x72, 0x0d, 0x48, + 0xec, 0xd6, 0xde, 0xb7, 0x51, 0x03, 0x12, 0x05, + 0x09, 0x92, 0xee, 0xda, 0x0b, 0x16, 0x4b, 0xbe, + 0x1e, 0xc2, 0x9b, 0x5c, 0xcc, 0x9e, 0x2f, 0xc5, + 0xd5, 0x41, 0x22, 0x30, 0xb1, 0xff, 0xc4, 0x38, + 0x41, 0x05, 0xb5, 0x47, 0x9c, 0x16, 0xd0, 0x66, + 0x67, 0x64, 0xc6, 0x81, 0xad, 0xe7, 0x8d, 0x82, + 0x03, 0x2e, 0x2a, 0xfa, 0x22, 0xe4, 0x9d, 0x0f, + 0xf4, 0xfe, 0x83, 0x4f, 0x0e, 0x99, 0xcb, 0xcb, + 0x62, 0x3e, 0x1e, 0x07, 0x65, 0x6e, 0x51, 0x72, + 0x28, 0x00, 0xcb, 0xab, 0xb6, 0x76, 0xf0, 0x9d, + 0x3a, 0xa4, 0x82, 0xd6, 0x4c, 0xb6, 0x72, 0xf4, + 0x58, 0xdb, 0x5c, 0x65, 0x29, 0xf5, 0xe0, 0x00, + 0xa0, 0x33, 0x11, 0xe3, 0xff, 0x6b, 0x39, 0x27, + 0x36, 0x95, 0x12, 0x46, 0xe3, 0xe4, 0x1b, 0x04, + 0x78, 0xc1, 0x09, 0xf8, 0x3e, 0x76, 0x73, 0xff, + 0x4d, 0xc3, 0xc8, 0x4b, 0xb9, 0xec, 0xef, 0x04, + 0x4a, 0x3e, 0x63, 0x42, 0x31, 0x51, 0x34, 0x42, + 0xe2, 0x92, 0xe4, 0xf8, 0xe2, 0x4a, 0x35, 0x82, + 0x6f, 0x07, 0x77, 0x86, 0xc0, 0x1d, 0xef, 0x15, + 0xde, 0x7e, 0xc0, 0xff, 0x69, 0x04, 0x38, 0xad, + 0x95, 0xfa, 0x0e, 0x93, 0xd8, 0x7f, 0x05, 0xe9, + 0xd2, 0x3c, 0x94, 0xf8, 0xb7, 0x4c, 0x3f, 0x7f, + 0xbf, 0x8b, 0x10, 0x60, 0xc0, 0x8e, 0x76, 0x64, + 0x00, 0xdb, 0xeb, 0x9e, 0x94, 0x14, 0x99, 0x31, + 0x3c, 0x79, 0xef, 0xa1, 0x90, 0x7e, 0x22, 0xa6, + 0x22, 0x21, 0xb3, 0x70, 0x20, 0x7d, 0x49, 0x38, + 0x24, 0x7b, 0x49, 0x75, 0x56, 0x97, 0x6c, 0xe1, + 0x62, 0xd6, 0x3b, 0xed, 0xbd, 0xe8, 0x13, 0x33, + 0x3b, 0x55, 0x9a, 0xaf, 0x4a, 0x76, 0x22, 0x73, + 0xf6, 0xfd, 0xce, 0xeb, 0xd7, 0xc5, 0xa7, 0x79, + 0xd5, 0x24, 0xef, 0x08, 0x3b, 0x9a, 0x06, 0x54, + 0x5c, 0xfa, 0x87, 0x8a, 0x36, 0x2f, 0x67, 0xa5, + 0x56, 0x39, 0x33, 0x1a, 0xe9, 0xc9, 0x75, 0xbd, + 0xfe, 0xff, 0xd5, 0x09, 0xad, 0xfe, 0xa6, 0x83, + 0x7b, 0x1e, 0x88, 0x1a, 0xf5, 0xca, 0x3b, 0x2e, + 0xf4, 0xfa, 0x50, 0x62, 0x8f, 0x1f, 0xc8, 0xa6, + 0x93, 0x18, 0x59, 0x45, 0x03, 0xa2, 0xc0, 0x76, + 0x35, 0x0d, 0x08, 0x64, 0x88, 0x73, 0x90, 0x3f, + 0xb9, 0x08, 0xc8, 0xe8, 0xd0, 0x50, 0x3b, 0x0a, + 0xe6, 0xa8, 0x42, 0xab, 0x20, 0x5d, 0x2d, 0x91, + 0xe9, 0x10, 0x03, 0x46, 0x68, 0x06, 0x10, 0xa8, + 0x1a, 0x3c, 0x55, 0x20, 0x13, 0x14, 0x96, 0x27, + 0xba, 0xcc, 0xc9, 0xf6, 0xf9, 0xa9, 0x14, 0x13, + 0x9e, 0x09, 0xee, 0x2e, 0x34, 0x1f, 0xab, 0x6f, + 0xbc, 0x5b, 0x19, 0x78, 0xd4, 0x8e, 0xc7, 0x2e, + 0x19, 0x0b, 0x6d, 0x17, 0x14, 0xbc, 0x41, 0x2c, + 0x83, 0x7b, 0x09, 0x8e, 0x06, 0x49, 0x4d, 0x18, + 0x91, 0xda, 0xac, 0x7f, 0x77, 0xf9, 0x4e, 0x28, + 0x40, 0x65, 0xc5, 0x63, 0xce, 0x9f, 0xe2, 0xd2, + 0x97, 0x04, 0x28, 0xe5, 0x23, 0xf9, 0x88, 0xc5, + 0x65, 0xfa, 0xe5, 0x15, 0xb4, 0x05, 0xb9, 0x7c, + 0xd2, 0x89, 0x4e, 0x8b, 0x36, 0x5b, 0x7a, 0xfe, + 0x41, 0xd5, 0x38, 0x86, 0x67, 0xbb, 0xed, 0xde, + 0x09, 0xf2, 0x25, 0x9f, 0x74, 0x9e, 0xb9, 0xd1, + 0x4c, 0x88, 0x00, 0xbb, 0xff, 0x28, 0x8e, 0x57, + 0x27, 0x2a, 0xc6, 0xfa, 0xc3, 0x82, 0x84, 0xd6, + 0xfc, 0x10, 0x2f, 0xcd, 0x07, 0xec, 0x7c, 0x38, + 0xb7, 0xf1, 0x95, 0xb9, 0x39, 0x98, 0x88, 0x7d, + 0x30, 0x9e, 0x0c, 0x14, 0x54, 0xcb, 0xe7, 0x00, + 0xd6, 0xaf, 0x86, 0x31, 0x11, 0x81, 0x80, 0x0a, + 0x47, 0xa8, 0xa0, 0xbc, 0x09, 0x01, 0xca, 0xb7, + 0xfa, 0x90, 0x37, 0xd9, 0xe1, 0x8e, 0x02, 0x4f, + 0x42, 0x26, 0x6a, 0xad, 0x90, 0x11, 0x7c, 0x9a, + 0xf7, 0x99, 0x92, 0x72, 0xcc, 0x3b, 0x00, 0x86, + 0x8d, 0x24, 0xc9, 0xb2, 0x05, 0xd7, 0x69, 0x3b, + 0x07, 0x36, 0xbf, 0x9f, 0xfc, 0xb0, 0x56, 0x24, + 0xfb, 0x9e, 0xc4, 0xe0, 0xba, 0x16, 0x87, 0xb1, + 0xfe, 0x7d, 0x35, 0x32, 0xa3, 0xa2, 0xdb, 0x2b, + 0x52, 0x82, 0x88, 0xdf, 0x4a, 0x25, 0x60, 0xc9, + 0x0a, 0xc0, 0xd0, 0x06, 0xfe, 0x91, 0x78, 0x37, + 0x38, 0xc3, 0xe8, 0x3a, 0x60, 0x89, 0x7a, 0x14, + 0xf7, 0xad, 0x0c, 0x2f, 0x71, 0x54, 0xf4, 0xb7, + 0x4f, 0x69, 0x20, 0x1f, 0xa2, 0x48, 0xb3, 0x66, + 0x0d, 0xbf, 0xb9, 0x90, 0x34, 0x32, 0x64, 0x23, + 0x53, 0x05, 0x74, 0xa0, 0x49, 0x56, 0x73, 0x6c, + 0xbb, 0x23, 0xd1, 0x58, 0x8a, 0xd8, 0x6c, 0x7d, + 0xf8, 0x30, 0x7c, 0x21, 0xf7, 0xaf, 0xfe, 0x49, + 0x5a, 0x68, 0x83, 0x76, 0xaa, 0x74, 0x14, 0x6c, + 0xa1, 0x0f, 0x61, 0xc3, 0xfe, 0x79, 0xb3, 0x3d, + 0xd5, 0x9b, 0x31, 0x18, 0xdc, 0xc9, 0xbd, 0x4a, + 0xd0, 0x7d, 0x8a, 0x9f, 0xdd, 0xb8, 0xa0, 0x4c, + 0xb6, 0xf2, 0x88, 0xd7, 0xc6, 0x32, 0x36, 0x45, + 0xe0, 0x00, 0x27, 0x02, 0x44, 0x83, 0x1d, 0x9d, + 0xc8, 0xa5, 0x99, 0x17, 0x96, 0xbd, 0x3e, 0x8f, + 0xa6, 0x79, 0xd7, 0xfb, 0xdf, 0xe2, 0x1b, 0xa4, + 0xb7, 0x1c, 0x40, 0x0c, 0x55, 0xf9, 0xcd, 0x18, + 0x78, 0x7f, 0xc4, 0x71, 0xdd, 0xd5, 0x75, 0x11, + 0xc0, 0x67, 0x87, 0xfb, 0x87, 0x31, 0x8a, 0x6f, + 0x54, 0x89, 0x0c, 0x0f, 0xcb, 0x26, 0x0f, 0xb2, + 0x96, 0x41, 0x19, 0x0c, 0xc5, 0x94, 0x65, 0x98, + 0xb9, 0x52, 0xe5, 0x7b, 0x67, 0xa2, 0xe1, 0xde, + 0x4e, 0xe8, 0xf3, 0x10, 0x2c, 0xcc, 0x40, 0xbd, + 0x07, 0x9e, 0x95, 0x9c, 0xae, 0x3f, 0x84, 0xeb, + 0x0f, 0xb0, 0xfb, 0x79, 0x1a, 0x89, 0x22, 0x59, + 0x33, 0x45, 0x86, 0x6d, 0x58, 0x75, 0x20, 0xb4, + 0xd8, 0x37, 0xc8, 0x2a, 0x35, 0x65, 0x7c, 0x2f, + 0x8e, 0x7d, 0xd6, 0xc0, 0x64, 0x80, 0xd8, 0x88, + 0x4b, 0xf3, 0x1e, 0x7f, 0x94, 0x73, 0x5c, 0x88, + 0x21, 0xf3, 0xc8, 0x18, 0x81, 0x08, 0xc1, 0x6b, + 0xaa, 0x5b, 0x80, 0x2b, 0x67, 0x0c, 0xcf, 0x9a, + 0x58, 0xbe, 0xbc, 0xff, 0x25, 0x7f, 0x07, 0xf2, + 0xdd, 0x02, 0xf7, 0xd2, 0x0d, 0xec, 0xd4, 0x4a, + 0x13, 0x37, 0x6d, 0xbf, 0xaa, 0xbc, 0x67, 0xf3, + 0x99, 0xf9, 0x35, 0x9a, 0x7b, 0x2f, 0x2d, 0x61, + 0x69, 0x14, 0x89, 0x3d, 0xd7, 0xcd, 0x7a, 0xac, + 0xba, 0xda, 0xe2, 0x4f, 0xc0, 0x0b, 0xf1, 0x15, + 0xbd, 0x4e, 0x37, 0xbc, 0xe2, 0x36, 0x93, 0xb8, + 0xad, 0xa3, 0x0a, 0x35, 0x76, 0x88, 0x34, 0x50, + 0x76, 0x40, 0xb3, 0xdc, 0xaf, 0xf2, 0x1f, 0xfe, + 0xd7, 0x2e, 0xf9, 0x44, 0xff, 0xda, 0xf2, 0x89, + 0xbf, 0x3c, 0xc7, 0xdc, 0x3b, 0x0a, 0x70, 0xc9, + 0x0b, 0x6a, 0x6e, 0x79, 0xce, 0x27, 0xba, 0x8c, + 0x52, 0x98, 0x71, 0x04, 0xba, 0xd7, 0x6a, 0x52, + 0x94, 0x41, 0xa0, 0xae, 0xd4, 0xcb, 0xc7, 0xd9, + 0x87, 0xea, 0x1d, 0x1a, 0x04, 0xa4, 0x51, 0x4a, + 0x9b, 0xfb, 0x42, 0xe9, 0x2f, 0x60, 0x12, 0xb2, + 0x7b, 0x76, 0x81, 0xfc, 0xc1, 0x9b, 0xc0, 0x4d, + 0x16, 0x53, 0x44, 0x2f, 0x48, 0x86, 0x42, 0x41, + 0x2c, 0xb3, 0x1f, 0x4d, 0xa9, 0x9d, 0xb9, 0xf9, + 0x93, 0x78, 0x18, 0x05, 0x90, 0xb3, 0x49, 0xdb, + 0x1b, 0xfa, 0x57, 0xbb, 0x94, 0xa8, 0xd8, 0x37, + 0xf6, 0x92, 0xc5, 0x15, 0xa4, 0x47, 0xa3, 0x0f, + 0x4e, 0x09, 0x0d, 0x2d, 0xdd, 0xac, 0xd2, 0xbd, + 0xeb, 0x46, 0xe1, 0x32, 0x7a, 0x51, 0x21, 0xd8, + 0xd3, 0x9e, 0xbf, 0xf1, 0x7a, 0xbc, 0x65, 0xd9, + 0x31, 0xfe, 0xbb, 0xd2, 0x48, 0xf8, 0x62, 0x02, + 0x4d, 0x59, 0x17, 0xd2, 0x78, 0x68, 0xbd, 0xc2, + 0xb6, 0xc5, 0x7e, 0x5f, 0x12, 0x51, 0x58, 0x3a, + 0xd3, 0x60, 0x96, 0x26, 0x30, 0xfd, 0x72, 0x81, + 0x46, 0xaa, 0x75, 0xe7, 0xa4, 0xc4, 0x97, 0xe3, + 0x64, 0x1a, 0xb7, 0x6e, 0x9e, 0x60, 0xe4, 0x59, + 0x40, 0x3d, 0x2d, 0xe0, 0x2e, 0xbb, 0x90, 0xa5, + 0xe4, 0xfb, 0xc2, 0xf0, 0xad, 0x4a, 0xa1, 0x3d, + 0x91, 0xdf, 0x9c, 0x89, 0x69, 0x04, 0x13, 0xd0, + 0x71, 0x9b, 0xe1, 0x37, 0x99, 0x82, 0x0e, 0xf4, + 0x53, 0x66, 0xf5, 0x03, 0x89, 0xe1, 0x0f, 0x17, + 0x3a, 0x87, 0xf3, 0x2d, 0xad, 0x67, 0xc4, 0xd0, + 0x3c, 0x86, 0x28, 0x4f, 0x89, 0x68, 0x23, 0x88, + 0x2d, 0xb3, 0xb2, 0x28, 0xd7, 0xd0, 0x8b, 0xbf, + 0x38, 0x87, 0x02, 0x5f, 0x02, 0x51, 0xeb, 0xc6, + 0xa0, 0x7d, 0xb0, 0x9d, 0xa2, 0x14, 0x55, 0xd1, + 0x34, 0xda, 0x01, 0x1b, 0x02, 0x9e, 0x7a, 0x74, + 0xa3, 0x9c, 0xa5, 0xe7, 0xb9, 0x96, 0x84, 0x31, + 0xb1, 0x59, 0xc3, 0xe3, 0xf3, 0x41, 0xa7, 0xb7, + 0x0e, 0x9e, 0x3f, 0x38, 0x82, 0xac, 0x3e, 0x42, + 0x8e, 0x13, 0x45, 0xea, 0xd5, 0xde, 0x77, 0xe0, + 0xe8, 0x14, 0x82, 0x95, 0x46, 0xac, 0x4c, 0xe0, + 0x74, 0x54, 0x5e, 0x5d, 0x05, 0x54, 0x8d, 0x0f, + 0x4e, 0x23, 0xe7, 0x37, 0x28, 0xd2, 0xfd, 0xc9, + 0xb9, 0x11, 0x1b, 0xe7, 0x2f, 0x2f, 0x85, 0x3e, + 0x18, 0xf5, 0x03, 0x56, 0x37, 0x5b, 0xae, 0x67, + 0x5f, 0x9e, 0x0e, 0x9f, 0x39, 0xe2, 0x1a, 0x5b, + 0x63, 0xbb, 0x6a, 0x1b, 0xeb, 0x16, 0x3a, 0x5c, + 0x83, 0xdb, 0xb4, 0xf6, 0x42, 0xa5, 0x51, 0x40, + 0xf3, 0x5c, 0xcf, 0x91, 0x51, 0x3d, 0x41, 0x7e, + 0xd2, 0x18, 0xca, 0x39, 0x54, 0x13, 0x9c, 0xc4, + 0xa9, 0xb3, 0x86, 0x79, 0xfe, 0x80, 0xf9, 0x87, + 0x8f, 0xf5, 0x43, 0xbe, 0x4c, 0xb6, 0x78, 0xd6, + 0x5a, 0xe4, 0x53, 0x08, 0xcc, 0xad, 0xd1, 0x02, + 0x8f, 0xeb, 0xab, 0x49, 0x3b, 0x68, 0x3d, 0x16, + 0x5b, 0x6f, 0x48, 0x2c, 0x83, 0x22, 0x73, 0x14, + 0xb6, 0x8c, 0x1d, 0x60, 0x56, 0x19, 0x03, 0x49, + 0x03, 0x62, 0x58, 0x37, 0xf7, 0xc6, 0xe0, 0x25, + 0x39, 0x4c, 0x85, 0x8e, 0x8e, 0xbc, 0xc1, 0xcd, + 0xce, 0x8a, 0x71, 0x9e, 0xa2, 0x22, 0x7c, 0x0a, + 0x03, 0x92, 0xfa, 0x36, 0x49, 0x9f, 0x25, 0xc9, + 0xc0, 0xda, 0xcf, 0x97, 0x2f, 0x50, 0x5b, 0xa6, + 0x1e, 0x19, 0xb6, 0x13, 0xed, 0x01, 0xc2, 0x8d, + 0xef, 0x80, 0xde, 0x6d, 0x83, 0xa8, 0x8f, 0xb5, + 0x78, 0xeb, 0x2c, 0x3c, 0x6f, 0x8e, 0x58, 0x9f, + 0x28, 0xcf, 0x5b, 0xc3, 0xfe, 0x0e, 0x51, 0xc1, + 0x0c, 0x4f, 0xfa, 0xa0, 0xb9, 0x39, 0x12, 0x17, + 0x99, 0x0c, 0xcd, 0xcb, 0x78, 0x71, 0xbd, 0x94, + 0x05, 0xc4, 0x46, 0xd5, 0xf1, 0x94, 0xf6, 0xc3, + 0x88, 0x15, 0xc1, 0x1c, 0x77, 0x75, 0xd1, 0x71, + 0x0c, 0xd9, 0x99, 0x36, 0xcd, 0xb1, 0x75, 0x87, + 0xbd, 0x31, 0xba, 0xff, 0x20, 0xdb, 0xcf, 0x58, + 0xe8, 0x51, 0xfc, 0xd4, 0xd4, 0x89, 0x37, 0x01, + 0x30, 0xc8, 0x6e, 0xe5, 0xa6, 0x52, 0xec, 0xd6, + 0xaf, 0x1d, 0x96, 0x2d, 0x74, 0xd0, 0x1a, 0x98, + 0xd9, 0x46, 0x4c, 0x6f, 0x34, 0xcf, 0x92, 0x41, + 0x33, 0xff, 0x8f, 0xb8, 0xaa, 0x9f, 0x5d, 0x51, + 0x11, 0x9b, 0xca, 0xf9, 0x26, 0xf3, 0xe5, 0xda, + 0x33, 0x20, 0xe7, 0x6e, 0xe4, 0x7b, 0x92, 0xab, + 0x39, 0x21, 0x20, 0xe6, 0x58, 0xe8, 0x36, 0x24, + 0x53, 0x55, 0x66, 0x6b, 0x11, 0x74, 0xab, 0x17, + 0x6c, 0xc3, 0x67, 0xd2, 0xf6, 0x70, 0x63, 0x86, + 0x51, 0xe4, 0x53, 0xbe, 0xa4, 0xf3, 0xe0, 0x67, + 0x41, 0x17, 0x44, 0x70, 0xc3, 0xc0, 0xbe, 0x98, + 0x8a, 0x8b, 0x5a, 0x65, 0x4d, 0xec, 0x5a, 0xc6, + 0xec, 0xc6, 0x66, 0xf2, 0x3a, 0x75, 0xd4, 0xab, + 0xb4, 0x14, 0x5b, 0xc6, 0xf8, 0x6f, 0xe1, 0x99, + 0xd0, 0x57, 0x42, 0x29, 0x35, 0x09, 0x99, 0x65, + 0x99, 0x98, 0xd8, 0xa7, 0xc6, 0x78, 0xa1, 0xd0, + 0x16, 0x7b, 0xb0, 0x03, 0x4d, 0x79, 0x81, 0x45, + 0x8c, 0x07, 0x3c, 0xa0, 0x59, 0xa2, 0xdf, 0xf5, + 0xa7, 0xb0, 0x18, 0x00, 0x8d, 0x10, 0xca, 0x4a, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x36, 0xf0, 0x59, 0x02, 0xad, 0xbc, 0xce, 0x83, + 0xe2, 0xe5, 0x4d, 0x6d, 0x0c, 0x61, 0xbd, 0x20, + 0x27, 0x5f, 0x55, 0x63, 0xc7, 0x02, 0x8f, 0xd5, + 0x01, 0x45, 0xb9, 0x4f, 0x41, 0x27, 0xd8, 0x0d, + 0x87, 0x63, 0xb3, 0x53, 0x67, 0xa1, 0x82, 0x5f, + 0xf3, 0xff, 0xef, 0xd0, 0x1b, 0x34, 0x9d, 0x27, + 0xf0, 0xbb, 0xb9, 0x66, 0x4e, 0xbd, 0x25, 0x57, + 0xae, 0x21, 0xf9, 0x2f, 0x7f, 0x46, 0x71, 0x11, + }, + .sig_len =3D DILITHIUM87_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM87_CRYPTO_BYTES]){ + 0x27, 0x29, 0xe8, 0x15, 0x0d, 0x05, 0x00, 0xb6, + 0xc3, 0xb9, 0x44, 0xfc, 0x1e, 0xbd, 0xc3, 0x83, + 0x2b, 0x43, 0x95, 0x93, 0x14, 0x69, 0x36, 0x9d, + 0x65, 0x8c, 0xf6, 0x3f, 0xcb, 0x1e, 0x09, 0xa9, + 0x9b, 0x31, 0x52, 0xd8, 0x85, 0x08, 0x5c, 0xbd, + 0xfb, 0x7e, 0x43, 0xb8, 0x7b, 0x56, 0x14, 0xfc, + 0x08, 0x13, 0x59, 0x87, 0x4e, 0xd9, 0xc0, 0xdb, + 0xfc, 0xd4, 0x71, 0x81, 0x56, 0x35, 0x86, 0x90, + 0x2e, 0x74, 0x71, 0x67, 0xe3, 0x1c, 0xc6, 0x59, + 0x97, 0x4e, 0x05, 0x0f, 0xfc, 0xf3, 0x31, 0x00, + 0x90, 0x94, 0x93, 0x89, 0x6b, 0x8b, 0xfe, 0x2d, + 0xb2, 0xa1, 0x27, 0x15, 0x4a, 0x92, 0xec, 0x6c, + 0xa9, 0x29, 0x0f, 0x7f, 0x3c, 0x30, 0x7a, 0x27, + 0xe2, 0x37, 0x06, 0x8c, 0x4a, 0x7d, 0x8b, 0x3d, + 0x8d, 0xee, 0x89, 0x40, 0xd1, 0x64, 0x03, 0xf7, + 0x9e, 0x6d, 0x23, 0x25, 0xfd, 0xcb, 0x16, 0x12, + 0xcb, 0x2e, 0x7e, 0x87, 0x5c, 0x66, 0x9a, 0x9c, + 0x0f, 0x78, 0xd3, 0x71, 0xbb, 0xc6, 0xce, 0x38, + 0x68, 0x2c, 0xae, 0x8a, 0x28, 0xce, 0x61, 0xed, + 0x22, 0xd1, 0x5c, 0xb2, 0x3a, 0xc7, 0xa8, 0x90, + 0xb8, 0xfb, 0x35, 0xca, 0x85, 0x6a, 0xab, 0xbd, + 0x48, 0xae, 0x2d, 0x4b, 0x53, 0x6f, 0xa0, 0x46, + 0xad, 0x30, 0x82, 0xdf, 0x01, 0xb1, 0x6f, 0x65, + 0x8c, 0x29, 0xab, 0xc7, 0x19, 0xfc, 0x97, 0x01, + 0x13, 0x5a, 0x7c, 0xc1, 0x06, 0x29, 0x26, 0xbc, + 0x8b, 0xa1, 0xca, 0x77, 0xca, 0x5e, 0xa4, 0x09, + 0x14, 0xf4, 0xbb, 0xfc, 0xac, 0x46, 0x1f, 0xb0, + 0xd9, 0xf5, 0x9a, 0x16, 0xab, 0x32, 0xd3, 0x15, + 0xd3, 0xe6, 0x4e, 0x09, 0xa7, 0x6c, 0x50, 0x76, + 0x47, 0xee, 0x27, 0xbe, 0x85, 0x9b, 0xc2, 0xad, + 0xb7, 0x95, 0x30, 0x26, 0x75, 0x32, 0xdc, 0xfe, + 0x4b, 0x6f, 0x76, 0x48, 0xa9, 0x48, 0x68, 0x3d, + 0x44, 0x5b, 0xf0, 0xcd, 0xce, 0x24, 0x91, 0x91, + 0x74, 0x4f, 0x9f, 0x4b, 0x32, 0xd3, 0x87, 0x9a, + 0x4a, 0x8c, 0xe4, 0x13, 0xc0, 0x3b, 0xc0, 0x56, + 0x57, 0xc9, 0x4e, 0x49, 0xff, 0x64, 0x0a, 0xa8, + 0x94, 0x6a, 0xa2, 0xdb, 0x60, 0x29, 0xd3, 0x16, + 0x09, 0x48, 0x30, 0x59, 0x85, 0x61, 0x23, 0xb8, + 0x9c, 0x77, 0xab, 0xeb, 0xed, 0xc8, 0xe5, 0x6a, + 0xef, 0xbc, 0x24, 0xc0, 0x80, 0x74, 0x54, 0xe3, + 0xf4, 0xea, 0xdc, 0xc3, 0x97, 0x62, 0xc7, 0x99, + 0xb6, 0x9b, 0x20, 0x86, 0x86, 0xd0, 0x35, 0x1a, + 0x37, 0xee, 0xca, 0x18, 0x88, 0xd4, 0xf0, 0xb0, + 0x18, 0xad, 0x63, 0x80, 0x89, 0x04, 0xaa, 0x78, + 0x93, 0x6a, 0x58, 0x64, 0x84, 0x8c, 0x10, 0x95, + 0x5b, 0x7b, 0x18, 0x62, 0x5f, 0xce, 0xf1, 0x51, + 0xde, 0x8c, 0xd7, 0x4c, 0x98, 0x1d, 0x03, 0x7b, + 0xa0, 0x41, 0x20, 0x9d, 0x71, 0xcd, 0xb3, 0xf4, + 0x16, 0x36, 0x93, 0x53, 0x2e, 0x1c, 0x25, 0xfc, + 0xaa, 0xed, 0xaf, 0x54, 0x26, 0x52, 0xa3, 0xd0, + 0x60, 0xc5, 0xad, 0x3b, 0x52, 0x6b, 0x70, 0x19, + 0xa3, 0x0f, 0x5f, 0x7f, 0x36, 0x9e, 0xe2, 0x32, + 0xb2, 0xe2, 0xc1, 0xd2, 0xca, 0xbd, 0x42, 0xa8, + 0xb9, 0x82, 0x7b, 0x12, 0xf5, 0x84, 0x49, 0x17, + 0x7a, 0x66, 0x76, 0xf9, 0x95, 0x2c, 0x66, 0xf7, + 0x2e, 0xa4, 0xdc, 0x5d, 0xd1, 0x15, 0xc7, 0x9e, + 0x19, 0x3d, 0x0e, 0x91, 0xdc, 0xcd, 0x14, 0xbc, + 0xef, 0x59, 0x10, 0xcd, 0x3b, 0x73, 0x47, 0xe5, + 0xe1, 0x50, 0x1f, 0xbb, 0x1f, 0xf2, 0x14, 0xe3, + 0x13, 0xd5, 0x61, 0x71, 0x1d, 0xf5, 0x0f, 0x10, + 0x2c, 0x4b, 0xde, 0x31, 0x99, 0x6f, 0x7b, 0x23, + 0x08, 0x29, 0x36, 0x15, 0x93, 0x61, 0xe4, 0x5a, + 0xce, 0xe1, 0xcb, 0x2b, 0x20, 0x5d, 0x87, 0xf4, + 0x39, 0x83, 0xf4, 0xf3, 0xfa, 0xb7, 0xc5, 0x86, + 0x2e, 0x37, 0x62, 0x6d, 0x6b, 0xbd, 0x9d, 0xcd, + 0x65, 0xe4, 0x9e, 0x12, 0xe0, 0xf0, 0x79, 0x16, + 0xe6, 0x62, 0x3c, 0xb6, 0x5e, 0x9e, 0x78, 0x90, + 0xee, 0xd7, 0x46, 0x41, 0x88, 0xdf, 0x3a, 0xe3, + 0x28, 0xa3, 0x0b, 0x66, 0xa3, 0xb2, 0x80, 0x9d, + 0x26, 0x68, 0x07, 0x58, 0x94, 0xbd, 0x2a, 0x90, + 0x2d, 0x2c, 0x22, 0x7e, 0x89, 0xff, 0x8b, 0xbb, + 0xb3, 0x1e, 0xbe, 0x43, 0xee, 0x35, 0x3c, 0x2d, + 0x45, 0xf0, 0x14, 0x4d, 0xe2, 0xca, 0x01, 0x57, + 0x0b, 0x12, 0xf2, 0xe1, 0x8a, 0x0e, 0x47, 0x1b, + 0xa6, 0x7f, 0xef, 0xa4, 0x82, 0xc3, 0x88, 0x34, + 0xd7, 0xe2, 0xec, 0x0b, 0xf4, 0x1e, 0xf5, 0x81, + 0x14, 0x40, 0xac, 0x50, 0xf3, 0x06, 0x2b, 0xec, + 0x12, 0x7b, 0x68, 0x24, 0x22, 0x03, 0x0f, 0xe9, + 0x69, 0x9f, 0x4f, 0x73, 0x26, 0x79, 0x0b, 0x00, + 0x24, 0x6a, 0x84, 0x7d, 0xa7, 0x74, 0xa0, 0xee, + 0x95, 0x46, 0x1f, 0x8d, 0x72, 0x19, 0xd5, 0x1a, + 0x4d, 0xe5, 0x0a, 0x69, 0x3d, 0xe0, 0x42, 0x5c, + 0xc4, 0x6b, 0x8f, 0xb1, 0xd9, 0xe4, 0x4e, 0xf6, + 0x34, 0xc0, 0xcc, 0x66, 0x7d, 0x23, 0xb0, 0xc4, + 0xde, 0x41, 0x41, 0xe6, 0xf9, 0x7d, 0x9a, 0x71, + 0x5a, 0xfd, 0x81, 0x28, 0xd6, 0x17, 0x14, 0xc8, + 0xc9, 0x51, 0x06, 0xb6, 0xb7, 0xa2, 0xeb, 0xbe, + 0x04, 0xc5, 0xbf, 0xa1, 0xeb, 0x8b, 0xf9, 0x69, + 0xb6, 0x31, 0xec, 0xd8, 0xb3, 0x71, 0x6c, 0x67, + 0x22, 0x33, 0xe6, 0x90, 0x3e, 0xe6, 0xa7, 0x7c, + 0xd7, 0x36, 0x2e, 0x06, 0x30, 0x3c, 0x36, 0xf4, + 0xca, 0xdc, 0xe6, 0xaa, 0xee, 0x1c, 0x84, 0x3b, + 0x43, 0x64, 0x65, 0x0e, 0xb4, 0xc9, 0x68, 0x9e, + 0x53, 0x21, 0x95, 0x8e, 0x49, 0xbc, 0x77, 0xfa, + 0x30, 0x7d, 0x72, 0x81, 0x30, 0x76, 0x34, 0x75, + 0x06, 0xa9, 0xc9, 0x1a, 0x95, 0xf1, 0xd7, 0x7b, + 0x0e, 0xe3, 0x11, 0xdb, 0xe8, 0x3e, 0xd4, 0x8f, + 0xb9, 0xc1, 0x85, 0x30, 0x1b, 0xb2, 0x73, 0xc7, + 0x63, 0x8c, 0x70, 0x4a, 0x8b, 0x61, 0xc3, 0xca, + 0x8e, 0xcd, 0x95, 0xd2, 0x51, 0x9b, 0xae, 0x58, + 0xbc, 0x0a, 0x26, 0x31, 0x98, 0x28, 0x8e, 0xed, + 0x96, 0x81, 0x28, 0xec, 0x0a, 0xb6, 0x75, 0xa1, + 0xd1, 0x77, 0xc9, 0xc7, 0x9a, 0x30, 0xf3, 0xe8, + 0xea, 0xae, 0x41, 0x61, 0x92, 0x9c, 0xd7, 0xec, + 0x69, 0x53, 0x4f, 0xd3, 0x7d, 0xee, 0x3b, 0x98, + 0xf9, 0x9e, 0xa0, 0xe9, 0x47, 0xd4, 0x8f, 0xdc, + 0x19, 0x25, 0xff, 0x72, 0xeb, 0x96, 0x48, 0x16, + 0x63, 0x44, 0xb1, 0xb1, 0xec, 0x93, 0x3f, 0x0c, + 0xd3, 0x7c, 0x57, 0xa3, 0x75, 0xb0, 0x58, 0xcf, + 0xbc, 0x73, 0xdf, 0xb6, 0xb9, 0xe6, 0x54, 0x6a, + 0x84, 0x02, 0x01, 0xc9, 0xb2, 0x37, 0x52, 0x58, + 0x72, 0xb0, 0x17, 0xe5, 0xe9, 0x05, 0xf9, 0x79, + 0x6f, 0xf0, 0xab, 0x67, 0x33, 0xf2, 0xaf, 0xd4, + 0x00, 0x3e, 0x51, 0xc2, 0x03, 0x3f, 0x95, 0x08, + 0x99, 0xc4, 0x91, 0x3e, 0xff, 0x97, 0x5f, 0xf6, + 0x0e, 0x5a, 0xcf, 0x6f, 0x24, 0xbb, 0x6c, 0x70, + 0x26, 0x24, 0x51, 0x32, 0xd9, 0x6d, 0xa9, 0xcb, + 0x7d, 0x8c, 0x76, 0xb4, 0x34, 0x30, 0x7d, 0xb9, + 0x9d, 0x69, 0xe5, 0x22, 0x42, 0xf8, 0x6c, 0x77, + 0xdc, 0x0b, 0x87, 0x00, 0xd9, 0x22, 0x72, 0x94, + 0x82, 0x0e, 0xd5, 0xa3, 0x3b, 0x92, 0xeb, 0xee, + 0x1e, 0xe8, 0x73, 0xb4, 0xab, 0x41, 0x55, 0x10, + 0x53, 0x6a, 0x61, 0x54, 0x76, 0xa0, 0x94, 0x90, + 0xd5, 0xe4, 0x74, 0x2c, 0xdb, 0xe3, 0x94, 0x5c, + 0x09, 0x31, 0x1e, 0x16, 0x2e, 0x0a, 0xb5, 0x34, + 0x85, 0x15, 0x43, 0x5a, 0x41, 0x83, 0xcb, 0xd1, + 0xda, 0xbf, 0x71, 0xcc, 0x77, 0x09, 0x82, 0xc6, + 0x08, 0x79, 0xf3, 0x78, 0x1f, 0xfd, 0xef, 0x8c, + 0x56, 0xe5, 0x7d, 0x68, 0x06, 0x93, 0xf9, 0x4b, + 0x91, 0x07, 0xb4, 0x09, 0x4d, 0xc6, 0xb1, 0xf5, + 0x92, 0x62, 0x3d, 0x2f, 0x35, 0x49, 0xaf, 0x15, + 0xb9, 0x6c, 0xab, 0x2e, 0xa7, 0x9e, 0x20, 0x59, + 0xe7, 0x7d, 0xf6, 0x8d, 0x18, 0x5e, 0xed, 0x68, + 0x5c, 0x94, 0xf5, 0x45, 0x44, 0xb5, 0x5d, 0x86, + 0x4c, 0xe3, 0x69, 0x0f, 0xe3, 0x29, 0xb2, 0xf6, + 0x2a, 0xd4, 0xee, 0x7c, 0x9b, 0xe6, 0xad, 0xcf, + 0x90, 0x34, 0x85, 0xca, 0xc5, 0xa1, 0x36, 0xdd, + 0x7b, 0xaf, 0x36, 0x5e, 0x7c, 0xf3, 0x55, 0xf9, + 0xae, 0x8d, 0x23, 0xcf, 0x33, 0x98, 0xdc, 0x4e, + 0x09, 0xcb, 0x81, 0x12, 0x2f, 0x88, 0x52, 0x5a, + 0xd8, 0xeb, 0x56, 0x86, 0xab, 0x30, 0x57, 0xe9, + 0x26, 0x62, 0x02, 0xfd, 0xb0, 0xf4, 0xfd, 0xff, + 0xf7, 0xf7, 0xe5, 0x65, 0x94, 0x7e, 0x3b, 0xc5, + 0x76, 0x4e, 0x3f, 0x4d, 0x31, 0xc8, 0x46, 0xbe, + 0xbf, 0x98, 0x70, 0x46, 0x71, 0x61, 0xd1, 0x02, + 0x98, 0xd9, 0xf8, 0xc0, 0xcc, 0x0c, 0x08, 0x09, + 0x71, 0x10, 0xb1, 0x30, 0xa9, 0x7f, 0x0a, 0x21, + 0xf9, 0xc5, 0x28, 0x35, 0x23, 0x1e, 0xfe, 0xab, + 0x03, 0x18, 0x2a, 0x34, 0xe0, 0xcb, 0x5c, 0x19, + 0x45, 0x2b, 0xec, 0x63, 0xfe, 0xaf, 0x60, 0x72, + 0x61, 0x2e, 0x7a, 0xd9, 0x7d, 0x08, 0xb2, 0xd7, + 0x90, 0x7a, 0xc8, 0xbe, 0x4d, 0xf6, 0xa1, 0xf5, + 0xe4, 0xe5, 0xd1, 0x6d, 0x02, 0xec, 0x2a, 0x01, + 0x9c, 0xc4, 0xee, 0x41, 0x10, 0x47, 0xee, 0x22, + 0x30, 0x12, 0xf6, 0xd3, 0x3c, 0x0e, 0xa6, 0x78, + 0x77, 0x2e, 0x61, 0xfd, 0xa2, 0x5f, 0x73, 0x9c, + 0x25, 0xbc, 0xa3, 0xf2, 0x72, 0xe0, 0xc6, 0xdc, + 0xb6, 0xc7, 0x7b, 0xb5, 0x93, 0xc2, 0x60, 0x1e, + 0x52, 0xd3, 0x25, 0x28, 0xbd, 0xd0, 0x0d, 0xd7, + 0x31, 0xd9, 0x2c, 0xe8, 0xb3, 0xb9, 0x5c, 0x1e, + 0x74, 0x6b, 0x91, 0xff, 0xd2, 0x0f, 0x03, 0x32, + 0x36, 0x75, 0x26, 0x12, 0xee, 0xa0, 0x25, 0xdb, + 0x23, 0x5f, 0x3e, 0x6f, 0x36, 0x7f, 0x4e, 0x89, + 0xa3, 0x4d, 0x30, 0xd6, 0xa2, 0xe4, 0x66, 0xfc, + 0x0b, 0x4b, 0x07, 0x53, 0xa9, 0xd6, 0x61, 0x7b, + 0x4b, 0xa4, 0xe9, 0x5a, 0xe6, 0xf6, 0xed, 0xe5, + 0x9b, 0xb0, 0xc0, 0x6a, 0xa6, 0x7e, 0x13, 0xa4, + 0x66, 0xb9, 0x39, 0xf5, 0x2a, 0x27, 0x26, 0x35, + 0x58, 0x36, 0x73, 0x8c, 0x7a, 0x9d, 0x69, 0x31, + 0x25, 0xd5, 0x14, 0xdf, 0x21, 0x68, 0xe3, 0xa3, + 0xa4, 0x43, 0x07, 0x2d, 0x0b, 0x7f, 0x8b, 0xa5, + 0x0b, 0x13, 0xe0, 0xe2, 0x0b, 0xcf, 0xc6, 0x9b, + 0xe6, 0xe4, 0x39, 0x13, 0xf7, 0x2a, 0x44, 0x76, + 0x60, 0x88, 0x96, 0xd9, 0xe4, 0xf1, 0xe0, 0xc9, + 0xc8, 0xf4, 0x17, 0x56, 0x4c, 0x06, 0xda, 0x2d, + 0xea, 0xf4, 0x6b, 0x51, 0xb1, 0xff, 0xbc, 0x2e, + 0x08, 0xbd, 0x8f, 0xe2, 0x40, 0xac, 0x78, 0x7a, + 0x16, 0xf7, 0xb8, 0xd5, 0x31, 0xd0, 0x3c, 0xab, + 0x75, 0x0f, 0xf1, 0xd0, 0x29, 0x6c, 0x88, 0xa6, + 0x08, 0x64, 0xb0, 0x21, 0x6a, 0x0d, 0x21, 0xfb, + 0x36, 0xd0, 0xe4, 0x65, 0xe8, 0x82, 0x95, 0x35, + 0xfb, 0xde, 0x07, 0x10, 0xfd, 0x84, 0xc0, 0xf8, + 0x99, 0xe2, 0x58, 0xa3, 0x16, 0xe0, 0xb6, 0x62, + 0xf2, 0xa1, 0xd9, 0xb0, 0xf4, 0x28, 0xa0, 0xbf, + 0x2a, 0x40, 0x5c, 0xef, 0xa3, 0xbc, 0xb1, 0x2e, + 0x45, 0xd8, 0xbc, 0x21, 0x5d, 0x9d, 0x91, 0x33, + 0xc1, 0x38, 0xd5, 0x68, 0x61, 0x67, 0x8e, 0xb0, + 0x37, 0xf8, 0x6d, 0xf6, 0xc5, 0x5d, 0x89, 0xd0, + 0x5a, 0x4f, 0xde, 0x74, 0x9a, 0x3d, 0x70, 0x79, + 0xfc, 0xa7, 0x18, 0x4f, 0x52, 0xd9, 0xbc, 0x5c, + 0x60, 0xd6, 0xfb, 0x95, 0x8f, 0xa9, 0x90, 0xc0, + 0x71, 0xe7, 0xc4, 0x51, 0xbd, 0x10, 0x13, 0xcf, + 0xf9, 0x3a, 0x04, 0xae, 0x92, 0x1e, 0xd3, 0x6a, + 0x54, 0x67, 0x92, 0xa7, 0x14, 0x04, 0x67, 0x53, + 0xb9, 0x9f, 0xe1, 0xd2, 0xfc, 0x50, 0x20, 0xd5, + 0x98, 0x02, 0xb7, 0xbc, 0x72, 0xac, 0xf6, 0x53, + 0x1f, 0x7b, 0x8d, 0x05, 0x21, 0xdd, 0x43, 0x43, + 0x38, 0x11, 0x8b, 0x1c, 0x11, 0xb0, 0x27, 0x87, + 0xba, 0xf3, 0x09, 0xc2, 0x2a, 0x2b, 0x89, 0x49, + 0x2c, 0xdc, 0xc4, 0x95, 0x92, 0x3a, 0x8e, 0xec, + 0x7b, 0xf4, 0x18, 0xf0, 0xc2, 0x39, 0x6c, 0xaa, + 0x24, 0xc6, 0xd3, 0x36, 0x73, 0x48, 0xe5, 0x33, + 0x02, 0x8a, 0x5c, 0x03, 0xee, 0x9f, 0xa7, 0x04, + 0x87, 0x85, 0x28, 0x03, 0xd5, 0x6b, 0xca, 0x0a, + 0xac, 0xfd, 0xb6, 0xc7, 0x1e, 0x5d, 0x50, 0xf9, + 0x7e, 0xc9, 0x61, 0x59, 0xb5, 0x31, 0xe2, 0x30, + 0xd5, 0xa6, 0xac, 0x44, 0x3d, 0x47, 0x04, 0x18, + 0x54, 0x67, 0xae, 0x0a, 0xea, 0x3d, 0xd0, 0x33, + 0x24, 0xb3, 0x56, 0x55, 0xe8, 0xea, 0x07, 0xa4, + 0x6a, 0x0e, 0xd3, 0xbd, 0x56, 0x7f, 0x8a, 0x5a, + 0xbf, 0xd3, 0x40, 0xd4, 0xd8, 0x3e, 0xa3, 0xe6, + 0xc0, 0x4e, 0x01, 0x4d, 0x6a, 0xe9, 0x7e, 0x91, + 0x8b, 0x1f, 0x3d, 0x6d, 0x38, 0x4a, 0xbd, 0xdb, + 0x8e, 0xf3, 0x0a, 0x1d, 0xb7, 0x2c, 0x95, 0xb7, + 0xff, 0xaf, 0x6d, 0xed, 0x68, 0xd4, 0x68, 0x20, + 0x86, 0x13, 0x45, 0x19, 0xc4, 0x50, 0x6c, 0x94, + 0xc2, 0x71, 0xea, 0x69, 0x9d, 0x12, 0xff, 0xe1, + 0xd0, 0xc7, 0x1b, 0x9f, 0x21, 0xce, 0x1d, 0x19, + 0x3a, 0x3c, 0xf3, 0x5f, 0x24, 0x89, 0x95, 0x2a, + 0x37, 0x85, 0x18, 0xd7, 0x4f, 0xf4, 0x6f, 0x53, + 0x9c, 0x63, 0xce, 0x41, 0x0f, 0x76, 0x99, 0xa1, + 0x23, 0xdd, 0x30, 0x52, 0xde, 0x56, 0xe1, 0xe5, + 0xef, 0xbf, 0x9e, 0x96, 0xd5, 0x1f, 0x3b, 0x37, + 0x3d, 0x2b, 0xd1, 0xaf, 0xf2, 0x00, 0x70, 0xa5, + 0x03, 0xe0, 0xb2, 0xcb, 0xa1, 0xa5, 0x77, 0xb0, + 0xc3, 0xfe, 0xb9, 0x55, 0xe2, 0x45, 0x7f, 0xf4, + 0x10, 0xe0, 0x0d, 0x58, 0x4c, 0x80, 0x2a, 0xb1, + 0xf0, 0x2f, 0x69, 0xc1, 0x14, 0xa1, 0xe0, 0x47, + 0xed, 0x02, 0x1e, 0x6c, 0x70, 0x83, 0x61, 0xc9, + 0xa5, 0x6d, 0xeb, 0xfd, 0xb7, 0x3d, 0x76, 0x39, + 0xd8, 0x8e, 0xbc, 0xbc, 0x5a, 0xe1, 0xe0, 0x01, + 0x8d, 0xb7, 0xd9, 0x1c, 0x97, 0x2b, 0xb6, 0x12, + 0x6f, 0x61, 0x29, 0x08, 0xe9, 0x59, 0xb6, 0x88, + 0x37, 0x47, 0x7d, 0x91, 0xc2, 0x6c, 0x84, 0x1f, + 0xc0, 0xc8, 0x93, 0x98, 0xe3, 0xc3, 0xdc, 0x74, + 0x1d, 0x3e, 0xe3, 0x8e, 0x1e, 0xd3, 0x4f, 0x57, + 0x92, 0xd0, 0xf5, 0x12, 0x93, 0xe3, 0x27, 0x8d, + 0x0e, 0xa1, 0xad, 0x6a, 0x04, 0x4e, 0xac, 0x79, + 0xb1, 0xff, 0x35, 0x36, 0x57, 0x2a, 0x18, 0x1e, + 0xcc, 0xe2, 0x8e, 0x4b, 0x58, 0x76, 0x6b, 0xc8, + 0xe7, 0x8b, 0x0f, 0x18, 0xe0, 0x56, 0xa7, 0x87, + 0x21, 0xd0, 0xd5, 0xd9, 0x76, 0x44, 0x6b, 0xd0, + 0xe7, 0x0d, 0xaa, 0x4b, 0x3c, 0xb9, 0x15, 0x68, + 0xfe, 0xad, 0x89, 0x9f, 0x11, 0x6d, 0x6d, 0x29, + 0x51, 0xc4, 0x07, 0x95, 0x9d, 0x33, 0xa2, 0xee, + 0x02, 0xab, 0x31, 0x65, 0xfd, 0x8c, 0x5c, 0x3a, + 0x38, 0x46, 0xcb, 0x29, 0x33, 0x53, 0xd9, 0x81, + 0xdd, 0xbb, 0x4a, 0x71, 0xfc, 0x7d, 0xd4, 0x38, + 0xf2, 0x81, 0x6c, 0xbc, 0xb5, 0x4d, 0x1e, 0xd6, + 0x6c, 0x21, 0x51, 0x4d, 0x63, 0x28, 0x57, 0x9f, + 0x8f, 0xd4, 0x7f, 0x92, 0x70, 0x4f, 0xe7, 0x0d, + 0x2f, 0xe0, 0x74, 0x28, 0x16, 0xf0, 0x40, 0x97, + 0x5c, 0xd0, 0x37, 0x93, 0x23, 0x57, 0xa1, 0xb7, + 0x2f, 0x44, 0xd8, 0xd1, 0x1b, 0xea, 0x10, 0x85, + 0x76, 0x3b, 0xa6, 0xb3, 0x94, 0x26, 0x26, 0xa8, + 0xd7, 0xbf, 0x69, 0x43, 0x1c, 0xdd, 0x58, 0xb7, + 0x3b, 0x4d, 0x77, 0xae, 0x0d, 0xea, 0x35, 0x73, + 0xa7, 0x5e, 0xe1, 0x94, 0xa8, 0xc4, 0x3f, 0x42, + 0xef, 0x79, 0x19, 0xf3, 0xbf, 0x4f, 0xd7, 0x65, + 0x81, 0xe0, 0xcd, 0x5d, 0x98, 0x5c, 0x30, 0x1c, + 0x51, 0x25, 0xb8, 0xfe, 0x04, 0x93, 0x45, 0x9c, + 0xee, 0xee, 0x4d, 0x03, 0x75, 0x35, 0x08, 0x1e, + 0x94, 0x08, 0x50, 0xa8, 0x6b, 0x14, 0x4e, 0xbe, + 0x92, 0x48, 0x9f, 0xd7, 0x9c, 0x34, 0x0f, 0xa2, + 0x31, 0x49, 0xe9, 0xd7, 0x9d, 0xed, 0x08, 0xcf, + 0xb2, 0x28, 0xd6, 0x4f, 0x78, 0xfc, 0x84, 0xca, + 0xb4, 0xeb, 0xa8, 0x61, 0x31, 0xe5, 0xcc, 0xfd, + 0x4d, 0x24, 0x31, 0xb0, 0x18, 0x4c, 0x68, 0x45, + 0x0d, 0xcd, 0x3f, 0xbc, 0x1d, 0xa5, 0xec, 0xe4, + 0xe1, 0x66, 0xaa, 0x52, 0x2c, 0xc2, 0x0b, 0xdc, + 0xeb, 0xf4, 0xe3, 0x31, 0xc6, 0x86, 0xb2, 0x32, + 0x24, 0x44, 0x95, 0x0a, 0x3d, 0x87, 0x97, 0xc7, + 0xff, 0x40, 0x65, 0x75, 0x04, 0x51, 0x4d, 0x81, + 0x2f, 0x60, 0x8e, 0x58, 0xf9, 0x66, 0x10, 0xb2, + 0x5e, 0xdb, 0xf0, 0x64, 0x9c, 0x49, 0x8b, 0x91, + 0xb7, 0x2e, 0x47, 0xf9, 0xaf, 0x80, 0x5c, 0x34, + 0xf4, 0x32, 0x12, 0x76, 0x91, 0x9b, 0x46, 0x1c, + 0xce, 0xa5, 0x94, 0xb8, 0xd3, 0x97, 0xfc, 0x35, + 0xc0, 0x40, 0xc0, 0xd6, 0x49, 0xd9, 0x32, 0x2c, + 0x0a, 0x1e, 0xab, 0x00, 0xab, 0xf5, 0xd6, 0xd6, + 0x77, 0xad, 0xc4, 0xfd, 0x2a, 0x48, 0xc7, 0x73, + 0xbc, 0xc6, 0x63, 0x53, 0x7c, 0x2b, 0x92, 0xdf, + 0xd8, 0x33, 0xec, 0x34, 0x1e, 0xd0, 0x29, 0x8a, + 0x52, 0xd8, 0xf7, 0xd3, 0xcb, 0xd1, 0x55, 0x3b, + 0x0d, 0x14, 0xb6, 0x96, 0xf1, 0x62, 0xc5, 0x09, + 0x30, 0xee, 0xef, 0x0f, 0xef, 0xf9, 0x5b, 0x96, + 0x0a, 0xf2, 0x06, 0x82, 0x5f, 0x25, 0x59, 0xaa, + 0xa4, 0xa3, 0x65, 0x33, 0xa1, 0x0c, 0xd5, 0xeb, + 0xf2, 0xf3, 0xc2, 0x40, 0x06, 0x4a, 0xb3, 0x9c, + 0xd2, 0xc7, 0x3f, 0xa1, 0xd6, 0xe9, 0xb3, 0x0a, + 0x4e, 0x3b, 0x37, 0x40, 0x17, 0x76, 0xd7, 0x3d, + 0x8e, 0xff, 0x40, 0x13, 0xa8, 0xe9, 0xee, 0x68, + 0x06, 0xdd, 0x8b, 0x0d, 0x83, 0x11, 0xd3, 0x86, + 0x6b, 0x1d, 0x19, 0x51, 0xa2, 0xd7, 0x16, 0x45, + 0xd6, 0x98, 0x75, 0xf7, 0x6d, 0x6f, 0x61, 0x95, + 0x5f, 0x7e, 0xe2, 0xf7, 0x42, 0x82, 0x0c, 0x72, + 0x69, 0xa9, 0x15, 0xb3, 0x2a, 0xc0, 0xc5, 0x5d, + 0x89, 0x41, 0x7f, 0xa7, 0x12, 0xa3, 0x03, 0x7e, + 0x3e, 0x76, 0x38, 0xc7, 0xb6, 0x1c, 0xc0, 0xb6, + 0x2f, 0xe7, 0x17, 0x80, 0x8a, 0xd0, 0xee, 0x38, + 0xbc, 0x63, 0xe2, 0xa1, 0xd6, 0x34, 0x3d, 0xa9, + 0x97, 0x6c, 0x5f, 0x39, 0xac, 0x1c, 0x25, 0x87, + 0xc1, 0x1f, 0x2b, 0x4b, 0xda, 0x09, 0xa3, 0xb9, + 0x91, 0x71, 0xdb, 0x48, 0x79, 0xd2, 0xa2, 0xfb, + 0x5f, 0x36, 0xfd, 0x74, 0x1f, 0x40, 0x51, 0x5f, + 0xc3, 0x21, 0x33, 0x7a, 0xea, 0x03, 0x94, 0x83, + 0x89, 0x73, 0x08, 0x91, 0xf5, 0x6a, 0x1d, 0x31, + 0x69, 0x86, 0xd1, 0xed, 0xf8, 0x0a, 0x7c, 0xe4, + 0xb8, 0xfb, 0x4f, 0x3d, 0x14, 0x73, 0xe7, 0xdc, + 0x7a, 0xb9, 0xd0, 0xaf, 0xad, 0x0d, 0x15, 0x08, + 0xb4, 0xb9, 0x0a, 0x48, 0x06, 0xe8, 0xbb, 0xd4, + 0x7e, 0xf7, 0xee, 0xdd, 0x65, 0x88, 0x6a, 0xbc, + 0x6b, 0x40, 0x49, 0x5b, 0x53, 0x11, 0x10, 0x17, + 0x92, 0x0a, 0xb9, 0x4a, 0xfd, 0xa2, 0x4c, 0xe4, + 0x18, 0xd8, 0xbb, 0x6e, 0x60, 0xb1, 0xba, 0x36, + 0xd0, 0xa6, 0xd2, 0x2f, 0x6b, 0x42, 0x9f, 0x31, + 0xaf, 0xe0, 0x36, 0x5c, 0xc0, 0x64, 0x48, 0x07, + 0xd6, 0x2a, 0xe3, 0xb5, 0x9e, 0xcf, 0x26, 0x9a, + 0x8e, 0x49, 0xaf, 0xe5, 0xd7, 0x94, 0x5b, 0x20, + 0xab, 0x59, 0x3b, 0xe2, 0xdb, 0x39, 0xab, 0x65, + 0xda, 0xdb, 0x56, 0xfc, 0x20, 0x0e, 0xb7, 0xa5, + 0xa4, 0x96, 0x1f, 0xd2, 0xe4, 0xce, 0x7a, 0xba, + 0x83, 0x00, 0xac, 0x89, 0x9b, 0xcb, 0x01, 0x3d, + 0xba, 0xf0, 0x57, 0x47, 0xba, 0xdd, 0xa1, 0xf7, + 0xe3, 0x84, 0x28, 0xdf, 0xf7, 0x70, 0xd3, 0x08, + 0xcf, 0xb9, 0x9b, 0x97, 0x14, 0x48, 0x80, 0x40, + 0xd8, 0x6b, 0x1e, 0xaa, 0xa1, 0x5b, 0x42, 0x17, + 0x05, 0xe9, 0x61, 0x8f, 0x98, 0x5f, 0x26, 0x19, + 0x84, 0x26, 0x30, 0x94, 0x52, 0xce, 0x50, 0xaa, + 0x9b, 0x13, 0x0c, 0xad, 0x97, 0x96, 0xcb, 0x10, + 0xc1, 0xb0, 0x85, 0x7b, 0x7c, 0xe9, 0xc6, 0xae, + 0x96, 0x39, 0xfc, 0x43, 0x7c, 0x77, 0x12, 0x53, + 0x70, 0xf0, 0xec, 0x95, 0x2a, 0x7c, 0x60, 0x18, + 0x50, 0x3f, 0x0d, 0x35, 0x88, 0x0b, 0xc1, 0x7b, + 0xba, 0x55, 0xc6, 0xad, 0x4b, 0xc8, 0x52, 0x11, + 0xec, 0xe3, 0x60, 0xc1, 0xe1, 0x79, 0xb4, 0x57, + 0x3f, 0x84, 0x9a, 0xb6, 0xef, 0x6f, 0x7e, 0x57, + 0xba, 0xcc, 0xae, 0xd4, 0xca, 0x5f, 0xe1, 0xb5, + 0x11, 0x5a, 0x44, 0x91, 0x3a, 0x2e, 0x5c, 0xbc, + 0xd2, 0x13, 0x4f, 0x00, 0x58, 0x69, 0xbf, 0xa4, + 0x14, 0x89, 0xcf, 0x88, 0x9a, 0xf4, 0x6c, 0x16, + 0x3a, 0xdb, 0x83, 0x0b, 0x4d, 0xe7, 0x69, 0x37, + 0x17, 0xe1, 0xf0, 0xfb, 0x1c, 0xab, 0x20, 0xac, + 0xe7, 0x54, 0x4a, 0xd6, 0x0f, 0x6e, 0x61, 0x30, + 0xbe, 0xff, 0xbf, 0x1e, 0x3f, 0xaf, 0x25, 0x62, + 0x17, 0x25, 0xfc, 0xca, 0x39, 0x36, 0x74, 0xed, + 0xa9, 0xfa, 0x35, 0xd3, 0xa6, 0xf7, 0x6f, 0xa5, + 0x4a, 0x33, 0x6b, 0x58, 0x82, 0x5d, 0x79, 0x71, + 0x9c, 0x9f, 0x38, 0xb6, 0x98, 0xe1, 0x4f, 0xce, + 0xa3, 0xbb, 0x6e, 0xb4, 0x6c, 0x7f, 0xd1, 0x99, + 0x02, 0x36, 0xbd, 0xa1, 0xe9, 0xc9, 0xbc, 0x8b, + 0xeb, 0xbf, 0xf1, 0xb8, 0xea, 0xda, 0x71, 0x39, + 0xd4, 0x95, 0xc5, 0xb7, 0x6c, 0x2a, 0x92, 0xc9, + 0xd7, 0x68, 0xd8, 0xd2, 0xc1, 0x5e, 0xda, 0xac, + 0x0a, 0x44, 0x6c, 0x0a, 0x1f, 0xaf, 0x0a, 0x2f, + 0xa1, 0x1c, 0x7e, 0x2b, 0x53, 0x47, 0x7c, 0x60, + 0x36, 0x7a, 0xb2, 0x9a, 0x01, 0xec, 0x8a, 0x72, + 0x08, 0xe8, 0xb9, 0xc5, 0x03, 0x86, 0x13, 0x6b, + 0x88, 0x20, 0xf3, 0x5e, 0x53, 0x22, 0x08, 0x9b, + 0x43, 0xce, 0x4e, 0x6d, 0x98, 0xed, 0xb5, 0x7b, + 0x9e, 0x9b, 0xc0, 0xda, 0xff, 0x8e, 0x55, 0x40, + 0x4d, 0xdb, 0xe5, 0xc0, 0x34, 0x18, 0x4c, 0x6f, + 0x7a, 0x10, 0xac, 0x8d, 0xc0, 0xf1, 0xdd, 0xdc, + 0xa7, 0xea, 0x86, 0xcf, 0x8e, 0x73, 0x31, 0x54, + 0x0b, 0x1f, 0x1d, 0x1d, 0xa3, 0x9a, 0x92, 0x14, + 0x72, 0xc6, 0x2b, 0x9f, 0x36, 0x25, 0xbe, 0x4a, + 0x6f, 0xe4, 0xfd, 0xe9, 0xd4, 0x44, 0x12, 0xff, + 0xbd, 0xfa, 0xc4, 0xac, 0xe6, 0xad, 0x15, 0x60, + 0x75, 0x76, 0x54, 0x76, 0x05, 0xb8, 0xde, 0xed, + 0x73, 0xd2, 0x91, 0x1a, 0x23, 0x11, 0xde, 0x4b, + 0x49, 0x7d, 0xd4, 0xdd, 0x77, 0x45, 0xb5, 0xc6, + 0xfc, 0xb7, 0x55, 0x29, 0x84, 0x03, 0x8a, 0xcc, + 0x5a, 0x88, 0x88, 0xb0, 0x6c, 0x14, 0x33, 0xc7, + 0xab, 0x79, 0x75, 0x9a, 0x46, 0xa1, 0xab, 0x5e, + 0x93, 0x8f, 0x2c, 0x4f, 0xc7, 0x54, 0xaa, 0x27, + 0x64, 0x91, 0xbe, 0xb6, 0xa0, 0xc3, 0x9e, 0x08, + 0xea, 0x06, 0x8f, 0x7e, 0x0c, 0x50, 0x1f, 0xfc, + 0x2e, 0xd3, 0xdf, 0x06, 0x23, 0x35, 0xa7, 0xbb, + 0x0d, 0xe6, 0xd2, 0x18, 0x24, 0x7a, 0xbd, 0xa7, + 0x0c, 0x40, 0x69, 0x92, 0x62, 0xec, 0xe3, 0x04, + 0x9e, 0x43, 0x16, 0xb8, 0xa3, 0x5f, 0x3d, 0x00, + 0xf3, 0xc6, 0xfc, 0x73, 0x8c, 0xa8, 0xda, 0x76, + 0xaf, 0x20, 0x3c, 0x0c, 0xdb, 0xc4, 0x21, 0x86, + 0xcd, 0x21, 0xac, 0x2c, 0xd4, 0x8e, 0xc3, 0x18, + 0xdb, 0x6b, 0xa6, 0xe3, 0x84, 0xcc, 0xd2, 0xa0, + 0x0a, 0xb0, 0x83, 0x56, 0xbf, 0x24, 0x6b, 0x25, + 0xa1, 0xe7, 0xe4, 0x58, 0x13, 0x5d, 0xa2, 0x25, + 0x09, 0xae, 0x97, 0x79, 0x1e, 0x2e, 0x56, 0xb7, + 0x35, 0x55, 0xf0, 0x1a, 0xa1, 0x7b, 0x11, 0x0c, + 0x4b, 0xad, 0x83, 0x26, 0x6e, 0x14, 0xea, 0x89, + 0x6d, 0x39, 0x7d, 0x27, 0x67, 0x9b, 0xaf, 0x05, + 0x58, 0x25, 0xc9, 0x99, 0xe8, 0x9a, 0x3c, 0xff, + 0xc9, 0x1c, 0x1a, 0x3c, 0xeb, 0x87, 0xba, 0xd4, + 0xcb, 0x7d, 0x9a, 0x36, 0x42, 0xb7, 0xa3, 0x62, + 0xed, 0xf2, 0xd2, 0x67, 0x48, 0x63, 0x82, 0xc1, + 0x77, 0x10, 0x04, 0x74, 0x24, 0x66, 0x28, 0x9f, + 0xd5, 0xcb, 0x0d, 0xbb, 0x74, 0x3f, 0x1a, 0x02, + 0xcc, 0x47, 0x8d, 0x59, 0xba, 0xcf, 0xc6, 0xe8, + 0xcb, 0x7f, 0xbc, 0xc5, 0xdf, 0x08, 0x12, 0xd0, + 0x88, 0x1c, 0x6f, 0xa3, 0xad, 0xdd, 0x67, 0x90, + 0x23, 0x4e, 0xe9, 0x07, 0x77, 0x62, 0x4f, 0x1e, + 0x4c, 0xa8, 0x3b, 0xe7, 0xcf, 0x37, 0xfb, 0xa1, + 0x7f, 0x13, 0xe5, 0x90, 0xd7, 0xdf, 0x96, 0x10, + 0x16, 0x9a, 0x3e, 0x40, 0x73, 0x77, 0x11, 0x72, + 0x04, 0x7e, 0x31, 0x37, 0xdf, 0x14, 0xdf, 0xcc, + 0x83, 0xaf, 0xa8, 0x44, 0xf3, 0x68, 0xb6, 0xe6, + 0x6c, 0x21, 0x0c, 0x28, 0x2e, 0xdb, 0xd0, 0xd8, + 0x11, 0x33, 0x54, 0x4c, 0x9a, 0x89, 0x95, 0x81, + 0xbd, 0x2b, 0x73, 0x2c, 0x63, 0x80, 0x91, 0xef, + 0x0d, 0x29, 0xdc, 0xb3, 0x31, 0xfb, 0xc7, 0x3e, + 0x02, 0x2f, 0x37, 0x68, 0x2d, 0xa2, 0xf3, 0x39, + 0x20, 0xb1, 0x99, 0xc6, 0x91, 0xd6, 0x7a, 0xa7, + 0x23, 0x7e, 0x09, 0x72, 0xb8, 0x4f, 0x19, 0x43, + 0xba, 0x5a, 0x2e, 0x9b, 0xea, 0x07, 0xcf, 0xab, + 0x95, 0x14, 0x2a, 0xdc, 0xf7, 0x6a, 0x67, 0xe9, + 0xf5, 0xf9, 0x08, 0x4b, 0x9d, 0x1e, 0x44, 0x9e, + 0x25, 0x3e, 0xb6, 0x2f, 0xc9, 0xa0, 0x6a, 0x53, + 0xdd, 0xaa, 0x6d, 0xc7, 0xba, 0x0a, 0x83, 0x82, + 0xda, 0x28, 0x8b, 0x08, 0xd9, 0xc1, 0xcf, 0xb5, + 0x12, 0xea, 0x57, 0xf2, 0xc7, 0x2b, 0x6e, 0xdd, + 0xdc, 0xff, 0x2e, 0xf6, 0xa8, 0xe1, 0x52, 0xd4, + 0x93, 0x85, 0x02, 0x4a, 0x5f, 0xc7, 0x94, 0x4b, + 0x4c, 0x79, 0xfb, 0xd4, 0xfd, 0xc2, 0x97, 0x47, + 0xf0, 0xce, 0xda, 0x16, 0x17, 0xf7, 0xf8, 0x2f, + 0x70, 0x74, 0x9e, 0xe5, 0xb9, 0x30, 0x86, 0x3f, + 0x6d, 0xed, 0x56, 0x81, 0xb7, 0x6d, 0xf6, 0x60, + 0x6f, 0xc4, 0xd0, 0x98, 0x13, 0xa3, 0xd9, 0x43, + 0x12, 0x4f, 0xa0, 0x62, 0xfa, 0xfe, 0xe6, 0xbb, + 0xea, 0x5e, 0xd6, 0xdf, 0x01, 0x83, 0x21, 0x40, + 0xc5, 0x8b, 0x3d, 0xc7, 0xaf, 0x01, 0xdd, 0xa9, + 0x18, 0x17, 0x2a, 0x70, 0x24, 0x03, 0x78, 0xc0, + 0xe3, 0x6a, 0x06, 0xcf, 0xd2, 0x7f, 0xa3, 0x44, + 0x9e, 0xa0, 0xbc, 0x1a, 0x7b, 0x4e, 0x2c, 0x3f, + 0x13, 0x31, 0xf3, 0x58, 0x1f, 0x37, 0x11, 0x3d, + 0x16, 0x25, 0x9e, 0x31, 0x15, 0x61, 0xa2, 0x64, + 0xc0, 0x01, 0xe3, 0x1c, 0x20, 0x59, 0x63, 0x04, + 0x36, 0x1b, 0x10, 0x6d, 0x3a, 0x30, 0xac, 0x40, + 0x99, 0x76, 0xdf, 0x47, 0xc0, 0x89, 0x64, 0x2b, + 0x85, 0x07, 0x18, 0x6d, 0x40, 0x47, 0xe7, 0x03, + 0x31, 0x29, 0x33, 0xc5, 0x46, 0x51, 0x4f, 0x0c, + 0x79, 0xb2, 0x45, 0x0e, 0xd9, 0xa9, 0xe7, 0xed, + 0x15, 0x60, 0xa7, 0xec, 0xbd, 0x15, 0x47, 0xba, + 0x40, 0x7a, 0xa6, 0xb2, 0x29, 0x13, 0xcc, 0xc3, + 0x3b, 0xbc, 0x00, 0x69, 0xc6, 0x4a, 0x16, 0xc4, + 0x60, 0xc2, 0x9a, 0x30, 0xd2, 0x16, 0x67, 0x83, + 0x03, 0xee, 0x01, 0x62, 0xb7, 0xa5, 0x15, 0x62, + 0x89, 0x09, 0xd0, 0x9b, 0x71, 0x58, 0x4f, 0x8b, + 0x1a, 0x14, 0x85, 0xfd, 0x39, 0x69, 0x06, 0x5b, + 0xb5, 0xf2, 0xe1, 0x4b, 0xcf, 0xaa, 0x7b, 0x76, + 0xe3, 0x17, 0x2f, 0x6e, 0x1c, 0xd0, 0xb9, 0x5b, + 0xa7, 0x5a, 0x65, 0x6e, 0x46, 0x8d, 0x7b, 0xb2, + 0xec, 0x39, 0x08, 0x2f, 0x6d, 0xaf, 0x0a, 0xe2, + 0xcd, 0xa7, 0xc6, 0xea, 0x59, 0xfe, 0xc0, 0x5d, + 0x31, 0x3e, 0x5d, 0x90, 0x67, 0x2f, 0xee, 0xd4, + 0xad, 0xde, 0xdb, 0x08, 0x1d, 0x0d, 0x9a, 0xfa, + 0xe4, 0xea, 0xa0, 0x02, 0xf8, 0x4f, 0x70, 0x5d, + 0xda, 0x0b, 0xb2, 0x16, 0x7c, 0x5c, 0xbf, 0x91, + 0x10, 0x6f, 0x6d, 0x8a, 0x57, 0x45, 0x2a, 0x20, + 0xe0, 0xd5, 0x94, 0x69, 0x84, 0x49, 0xd6, 0x0e, + 0x94, 0x5f, 0x40, 0x15, 0xf6, 0x6c, 0xa1, 0xbc, + 0xef, 0x79, 0x8c, 0xdd, 0x86, 0xe3, 0x74, 0x91, + 0x1d, 0xc6, 0x7b, 0x95, 0xc2, 0x4d, 0x26, 0xec, + 0x26, 0x98, 0xc8, 0x13, 0xdc, 0x86, 0xfb, 0x50, + 0x15, 0x2d, 0xce, 0x19, 0x71, 0x1c, 0x78, 0xad, + 0x9e, 0xc5, 0x92, 0xa3, 0x68, 0xf4, 0x87, 0xf4, + 0x6d, 0x74, 0xd2, 0x4e, 0x63, 0x0b, 0x98, 0x17, + 0xdf, 0x47, 0xa5, 0x73, 0x1f, 0x99, 0xac, 0x16, + 0xd8, 0x44, 0xff, 0xc4, 0xf7, 0x5c, 0xec, 0x51, + 0xd1, 0x55, 0xb9, 0xcb, 0x2b, 0xa7, 0x5b, 0x95, + 0xe8, 0x9c, 0x22, 0x6c, 0x2d, 0x75, 0xab, 0x74, + 0x56, 0xd7, 0x75, 0x3b, 0x32, 0xfa, 0x63, 0x90, + 0x03, 0x32, 0x94, 0xfa, 0x8c, 0x0b, 0x1e, 0x0b, + 0xa9, 0x8b, 0x65, 0x15, 0x17, 0xd1, 0x2c, 0x12, + 0x7c, 0xa5, 0xaa, 0x12, 0x56, 0x09, 0x33, 0x02, + 0xa5, 0xd7, 0x51, 0xc0, 0xa2, 0x96, 0x9d, 0x92, + 0x2f, 0x92, 0xfd, 0x9a, 0x7e, 0xca, 0x14, 0x54, + 0xa6, 0xbf, 0xa8, 0x68, 0x80, 0xff, 0x0e, 0x2f, + 0xe4, 0x8b, 0xef, 0x29, 0xa5, 0x84, 0x01, 0x5d, + 0xa1, 0x18, 0xe8, 0x29, 0x16, 0xfa, 0x88, 0xdc, + 0x06, 0x1a, 0x0f, 0xb2, 0xf8, 0x66, 0x9c, 0x7d, + 0x55, 0x3e, 0x7f, 0xf8, 0x8b, 0xbc, 0x35, 0x19, + 0x82, 0x73, 0x4e, 0xe8, 0x89, 0x40, 0x6d, 0x2f, + 0xec, 0xa2, 0x28, 0x11, 0x3b, 0x8d, 0xa3, 0x91, + 0xa4, 0xbd, 0x03, 0x2d, 0xbe, 0x53, 0x1f, 0x7d, + 0x86, 0x6d, 0x0d, 0xf2, 0x1c, 0x5b, 0x2b, 0xe0, + 0x30, 0xc8, 0xf9, 0xe9, 0x38, 0x17, 0xa5, 0x4b, + 0x0e, 0xa5, 0xba, 0xb6, 0x4a, 0xfc, 0xf7, 0x01, + 0xd2, 0x84, 0x13, 0x81, 0x77, 0xad, 0x0a, 0x19, + 0x0a, 0x42, 0xc2, 0xb0, 0x62, 0x17, 0x18, 0x6f, + 0xee, 0x85, 0x04, 0x52, 0xef, 0x60, 0x9a, 0xf2, + 0x22, 0xfe, 0x60, 0x50, 0xbd, 0x40, 0x77, 0x22, + 0x30, 0x80, 0x98, 0xcd, 0x3f, 0xbd, 0xc1, 0xc2, + 0x8e, 0x0c, 0xd1, 0xae, 0xa4, 0x24, 0x1f, 0x6e, + 0x88, 0x22, 0x49, 0x47, 0x5c, 0x18, 0xc3, 0xc2, + 0xd6, 0xc7, 0x60, 0x63, 0x6a, 0xc0, 0x91, 0x21, + 0x43, 0x14, 0xd8, 0x6e, 0x87, 0xa0, 0xe4, 0xf2, + 0xd2, 0x15, 0x69, 0xdf, 0xfb, 0x2e, 0x30, 0x98, + 0x1e, 0xba, 0xa6, 0xfd, 0x9f, 0xc2, 0x10, 0x49, + 0x63, 0xe3, 0x1b, 0x62, 0x53, 0x7d, 0xb6, 0x5a, + 0xd0, 0xcb, 0x96, 0x06, 0x78, 0x9d, 0x6b, 0x3b, + 0x5e, 0xa4, 0x97, 0x68, 0xb7, 0x64, 0xd0, 0xbd, + 0x12, 0x04, 0x04, 0xcf, 0x33, 0x86, 0x44, 0xc7, + 0x82, 0xac, 0xb5, 0x60, 0xb2, 0x3a, 0x27, 0x1c, + 0x61, 0xc9, 0x22, 0x61, 0x62, 0x2d, 0xd8, 0x85, + 0xa8, 0x1e, 0x10, 0x97, 0xf8, 0x01, 0x8f, 0x0c, + 0x89, 0xdc, 0x08, 0xdf, 0xbc, 0x56, 0xff, 0x05, + 0xaf, 0xc4, 0x4c, 0xa8, 0x86, 0xec, 0x4a, 0xc1, + 0xdd, 0x87, 0x49, 0x62, 0x85, 0xa3, 0x2e, 0x3a, + 0x07, 0x65, 0xa3, 0xb4, 0x1b, 0x94, 0xc6, 0x89, + 0x31, 0xfc, 0xca, 0x2c, 0x1b, 0xdc, 0xab, 0x07, + 0x73, 0xed, 0xc3, 0xf8, 0xd8, 0x98, 0xd0, 0x04, + 0x8a, 0xf2, 0x47, 0xad, 0x70, 0x31, 0x8e, 0x3e, + 0x68, 0x25, 0x2b, 0x1d, 0x2e, 0xda, 0x01, 0x69, + 0x76, 0xec, 0x59, 0xe0, 0x7f, 0xc0, 0x98, 0x5a, + 0xed, 0x58, 0xa0, 0x34, 0x0b, 0x9c, 0x33, 0x26, + 0x9a, 0x21, 0x8c, 0x9c, 0x57, 0x3b, 0x44, 0x91, + 0xdc, 0x46, 0x7a, 0x6f, 0xed, 0xc9, 0x6b, 0xb1, + 0x96, 0x2e, 0x98, 0x4d, 0x46, 0xe3, 0xe8, 0x6e, + 0x07, 0xa6, 0x14, 0xec, 0xeb, 0x7d, 0xb7, 0xb1, + 0x8f, 0x4e, 0x1b, 0x26, 0xe1, 0xda, 0xde, 0xc0, + 0xdf, 0x91, 0xa7, 0xa6, 0xaa, 0xc5, 0x5a, 0x47, + 0x73, 0x5f, 0xa2, 0x42, 0x8a, 0x9a, 0x5b, 0x42, + 0x75, 0x18, 0x7f, 0x95, 0xf0, 0x2a, 0x85, 0x38, + 0x9a, 0x79, 0xdc, 0x75, 0x1a, 0x4a, 0xb2, 0x50, + 0x0e, 0x00, 0xaf, 0x0b, 0x22, 0xf5, 0x0e, 0xe8, + 0x8f, 0x29, 0xca, 0x6e, 0x14, 0x30, 0x35, 0xbd, + 0xbe, 0x3b, 0x2d, 0x61, 0xaa, 0xd3, 0x88, 0x3d, + 0x24, 0x85, 0x06, 0xaf, 0x20, 0xec, 0x0b, 0xe3, + 0xaf, 0x95, 0x60, 0x8c, 0x57, 0xff, 0x5c, 0x0b, + 0x73, 0xc5, 0x8e, 0x92, 0xe0, 0xdc, 0x32, 0x0c, + 0xf2, 0x5c, 0xb7, 0x17, 0x6f, 0x27, 0x1e, 0x85, + 0x78, 0xb4, 0x20, 0x65, 0x72, 0xab, 0x25, 0x20, + 0x4a, 0x2a, 0xe0, 0x1c, 0x1b, 0x80, 0xa0, 0x5f, + 0xa5, 0x9c, 0x43, 0x5b, 0xbe, 0xa1, 0x09, 0xce, + 0x26, 0xce, 0x04, 0x73, 0xa2, 0x1b, 0x4e, 0x03, + 0x1a, 0xa7, 0x76, 0xc3, 0x07, 0x35, 0xec, 0x9f, + 0x00, 0xa0, 0x3a, 0xc5, 0xed, 0x9d, 0x88, 0xc8, + 0x56, 0xdf, 0x0a, 0xd4, 0xa9, 0x06, 0xab, 0x0f, + 0xcf, 0x87, 0xb0, 0xd7, 0x6f, 0x10, 0xe9, 0x62, + 0x5c, 0x0c, 0x0b, 0x2d, 0x82, 0x94, 0x18, 0x34, + 0xda, 0xdc, 0xd8, 0x19, 0x36, 0xc5, 0xaf, 0x39, + 0x74, 0xd4, 0xf4, 0x75, 0x63, 0x70, 0x27, 0xdd, + 0x6f, 0xf5, 0xe6, 0xa9, 0x71, 0x5a, 0xd2, 0xdf, + 0x2c, 0x23, 0x95, 0x0c, 0x3e, 0x35, 0x63, 0x71, + 0xc9, 0xab, 0x90, 0x1c, 0x2a, 0x83, 0xc2, 0x2d, + 0x6d, 0x22, 0x23, 0x9c, 0x49, 0x97, 0x07, 0x6b, + 0xaf, 0x70, 0xdd, 0x07, 0x6a, 0x1c, 0x1e, 0x36, + 0xee, 0x1e, 0x17, 0xf2, 0x52, 0x52, 0x3a, 0xf6, + 0xe8, 0xc4, 0x57, 0x9b, 0x64, 0xa7, 0xf5, 0xcd, + 0xf3, 0xdd, 0xc4, 0xd2, 0x53, 0x1b, 0x9a, 0xa0, + 0x58, 0x22, 0x29, 0xde, 0x8b, 0xd8, 0xd5, 0x0f, + 0xd7, 0x0a, 0x61, 0x2d, 0xee, 0x80, 0x2d, 0x5e, + 0x16, 0x57, 0x07, 0x09, 0xce, 0x19, 0x58, 0xfd, + 0xfd, 0x27, 0xa1, 0x15, 0xe1, 0x22, 0xf9, 0x4a, + 0x8c, 0x46, 0x11, 0xf8, 0x67, 0x64, 0x44, 0x95, + 0x9f, 0x13, 0x0a, 0xd7, 0x24, 0x26, 0x2a, 0x6c, + 0x51, 0xd4, 0x19, 0xec, 0xd8, 0xd1, 0x9f, 0x81, + 0x28, 0x77, 0xc8, 0x24, 0xf6, 0xbf, 0x48, 0xab, + 0x85, 0xa1, 0x85, 0x69, 0x68, 0x2f, 0x53, 0x84, + 0xd0, 0x43, 0x68, 0x86, 0x20, 0xd8, 0x71, 0x1f, + 0xc3, 0x97, 0xaa, 0x71, 0x97, 0xe7, 0x1d, 0x4b, + 0xf1, 0x1f, 0x8e, 0x1b, 0x66, 0x82, 0xd8, 0x4f, + 0xcc, 0xfe, 0xee, 0x59, 0xdc, 0xb8, 0x3e, 0x36, + 0x27, 0x05, 0x60, 0x3d, 0x72, 0x22, 0x03, 0xbb, + 0x5b, 0xd8, 0x95, 0x6d, 0xa1, 0xd3, 0xd4, 0xef, + 0x6e, 0xe9, 0xe9, 0x2c, 0x93, 0x72, 0xec, 0x52, + 0xac, 0x4d, 0xf9, 0x8a, 0xb8, 0xd1, 0x7d, 0x65, + 0xf3, 0x1f, 0x07, 0xab, 0x1f, 0x53, 0xcf, 0x3b, + 0x21, 0x9b, 0xa9, 0xc1, 0xc4, 0xd6, 0xdb, 0x31, + 0x75, 0xa9, 0xb0, 0xdf, 0xe4, 0xf9, 0x16, 0x30, + 0x3f, 0x46, 0x58, 0x61, 0x9f, 0xa2, 0xce, 0xf4, + 0x3b, 0x4c, 0x84, 0xac, 0xc4, 0xd2, 0xed, 0xf1, + 0x1b, 0x42, 0x7d, 0x9c, 0xaf, 0xc4, 0xd2, 0xf6, + 0xff, 0x17, 0x1c, 0x24, 0x43, 0x55, 0x5a, 0x5b, + 0x63, 0x66, 0x6b, 0x6e, 0x97, 0xa6, 0xb1, 0xb3, + 0xd7, 0x56, 0x57, 0x60, 0xdc, 0xe9, 0xfc, 0x08, + 0x15, 0x24, 0x35, 0x4d, 0x55, 0x90, 0x94, 0x97, + 0xae, 0xc2, 0x00, 0x07, 0x0e, 0x18, 0x20, 0x29, + 0x39, 0x3f, 0x4a, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa87", + .pk_len =3D DILITHIUM87_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM87_PUBLICKEYBYTES]){ + 0xa3, 0xf7, 0x20, 0x75, 0xd5, 0x7e, 0x0a, 0xaa, + 0xcc, 0x5c, 0xfb, 0x8c, 0xdd, 0x90, 0x74, 0xe4, + 0xc6, 0x08, 0xdd, 0x16, 0xf7, 0xd3, 0xbd, 0xa9, + 0x05, 0xba, 0xf9, 0xc5, 0xac, 0x63, 0x0e, 0x22, + 0xb5, 0x97, 0x18, 0x5e, 0x6c, 0x69, 0x5b, 0x1e, + 0x00, 0x7c, 0xb4, 0x33, 0x5c, 0xe0, 0x1e, 0x8e, + 0x6a, 0x4a, 0xc7, 0x7c, 0xb6, 0x85, 0xa1, 0xc1, + 0x31, 0x0d, 0x50, 0x4f, 0x6e, 0x57, 0x03, 0x4d, + 0x3d, 0x77, 0x40, 0x5b, 0x87, 0xaf, 0xd2, 0xf9, + 0xf4, 0xd0, 0xa5, 0x9e, 0x12, 0x86, 0x17, 0x17, + 0xc6, 0x13, 0x78, 0x8d, 0xaa, 0x6a, 0x54, 0xb8, + 0x62, 0x82, 0xc2, 0x78, 0x76, 0x7c, 0x4e, 0xfd, + 0x5b, 0x8b, 0x19, 0x82, 0x25, 0x4f, 0x6c, 0xf2, + 0xf0, 0x50, 0x5b, 0x1d, 0x2d, 0xa9, 0x32, 0xf0, + 0x0d, 0x46, 0x34, 0xca, 0xa2, 0x7d, 0xe5, 0x32, + 0x0b, 0x8b, 0x6c, 0x8e, 0xab, 0x92, 0xb8, 0xc1, + 0x6a, 0x9c, 0x4a, 0x4e, 0x4b, 0x2f, 0xf2, 0x66, + 0xcf, 0xd3, 0x3e, 0x87, 0xe1, 0x0e, 0x90, 0xdb, + 0x7f, 0xc1, 0x6b, 0xf9, 0x70, 0xdc, 0x7a, 0xc5, + 0x86, 0x7e, 0x49, 0x17, 0x0f, 0xdf, 0xbd, 0x72, + 0x36, 0x24, 0x5a, 0x4f, 0x55, 0x6d, 0xe0, 0xce, + 0x9c, 0x3b, 0x7a, 0x5c, 0xd8, 0xa3, 0xf1, 0xe8, + 0x3c, 0x17, 0x9f, 0x88, 0x64, 0x82, 0xe0, 0xeb, + 0x10, 0xa2, 0x94, 0xbf, 0x08, 0xe4, 0x42, 0x5d, + 0xbe, 0xad, 0x4a, 0xd3, 0x61, 0x8c, 0x97, 0x5b, + 0xab, 0xb1, 0xae, 0xbe, 0xe2, 0x51, 0xf4, 0x47, + 0xc8, 0xcf, 0x3c, 0x22, 0xbb, 0xee, 0xb9, 0x66, + 0x2e, 0x83, 0xe6, 0x0b, 0x49, 0x96, 0x23, 0xad, + 0xa7, 0xe1, 0xad, 0x21, 0x2c, 0x86, 0xa1, 0xcc, + 0xcd, 0xb3, 0x5e, 0x8e, 0x46, 0xa9, 0x2f, 0x59, + 0x6c, 0x67, 0xbb, 0x4b, 0x44, 0x8b, 0xfe, 0xee, + 0x76, 0x90, 0x95, 0x8d, 0xdc, 0x14, 0x42, 0x72, + 0x5a, 0x0b, 0x24, 0x56, 0x77, 0x74, 0x17, 0x90, + 0x06, 0x93, 0xe1, 0x1a, 0x4c, 0x2b, 0x8e, 0x96, + 0xa2, 0x2d, 0xa0, 0xb0, 0x55, 0xcc, 0x9e, 0xda, + 0x5e, 0xc3, 0x7c, 0x22, 0xd9, 0x23, 0x58, 0xf9, + 0x02, 0x22, 0x7b, 0xb1, 0x02, 0x60, 0xfc, 0xa8, + 0x54, 0x22, 0x07, 0x9f, 0x11, 0x51, 0x67, 0xef, + 0xf3, 0x67, 0x40, 0x43, 0x8f, 0xa7, 0x5a, 0xcc, + 0xb9, 0x1d, 0xd5, 0x43, 0x99, 0x67, 0x30, 0x46, + 0x6d, 0x7c, 0x7a, 0x56, 0x7a, 0xef, 0x6c, 0x88, + 0x87, 0xa4, 0xdd, 0xa3, 0xfd, 0x72, 0x9b, 0xc4, + 0xfb, 0xb1, 0xb4, 0xc1, 0xf6, 0xf2, 0x5d, 0x23, + 0xa1, 0x05, 0xe7, 0xb4, 0xeb, 0x8c, 0x35, 0xf6, + 0x55, 0x98, 0x64, 0x23, 0xca, 0x3a, 0x14, 0xfd, + 0x1e, 0x22, 0xe0, 0xae, 0x67, 0xfa, 0x07, 0x48, + 0xda, 0x3f, 0xb5, 0x12, 0xec, 0xb1, 0xe8, 0x7c, + 0xc3, 0xc7, 0x2e, 0x69, 0x23, 0xda, 0x4a, 0x62, + 0xdd, 0x8a, 0xba, 0xca, 0xe7, 0x19, 0xb2, 0x84, + 0x00, 0x39, 0xce, 0x1e, 0x90, 0x47, 0x2b, 0x85, + 0x02, 0xe9, 0xfe, 0x96, 0x60, 0x2b, 0x47, 0x5d, + 0xd5, 0x5e, 0xb5, 0x47, 0xc2, 0xec, 0x34, 0xf5, + 0x99, 0x91, 0xc6, 0xc2, 0x83, 0x93, 0x0c, 0xee, + 0x90, 0xda, 0x42, 0x62, 0x4b, 0xba, 0x33, 0x10, + 0xb2, 0xb4, 0x73, 0x41, 0xe6, 0x83, 0x56, 0xe2, + 0x4f, 0x1c, 0x3d, 0x81, 0x85, 0xfd, 0xc2, 0xa1, + 0x7b, 0x74, 0x9c, 0x7f, 0x6b, 0x08, 0x17, 0xe7, + 0xc3, 0xb7, 0xd4, 0xf3, 0x89, 0x88, 0x69, 0xe5, + 0xee, 0xc5, 0x97, 0xe8, 0x08, 0x0f, 0xa4, 0x0d, + 0xe2, 0x52, 0xaa, 0xb1, 0x15, 0xa7, 0x17, 0xd0, + 0x54, 0x56, 0x75, 0x1d, 0xc9, 0x69, 0x95, 0x24, + 0x82, 0x32, 0xcd, 0x93, 0x48, 0xa6, 0xfd, 0xec, + 0xe7, 0x75, 0x0e, 0xef, 0x65, 0xa0, 0x2d, 0x69, + 0x54, 0xba, 0x93, 0xd7, 0x9a, 0x48, 0x22, 0x8d, + 0xb8, 0x38, 0x4a, 0x1b, 0x61, 0x38, 0x00, 0x8f, + 0xd1, 0xb1, 0x89, 0x74, 0xba, 0x57, 0x16, 0xa5, + 0x2f, 0x22, 0x03, 0x17, 0xa0, 0x4b, 0x61, 0xdb, + 0x2c, 0xa8, 0xa6, 0x6c, 0x2e, 0xb4, 0x4e, 0x15, + 0xe4, 0x41, 0x9b, 0xb1, 0x66, 0x66, 0xc5, 0x0f, + 0xef, 0xa0, 0x71, 0xd9, 0xa5, 0xbc, 0x1b, 0x6d, + 0x40, 0xd1, 0xe6, 0xee, 0xe9, 0x03, 0x1f, 0x81, + 0x9d, 0x57, 0xb1, 0x16, 0xf8, 0xe4, 0x6e, 0x36, + 0x81, 0xff, 0x09, 0x65, 0x1a, 0x6f, 0x71, 0xcd, + 0x94, 0x91, 0x2e, 0x41, 0x0a, 0xf2, 0x4b, 0x5f, + 0x7a, 0xf1, 0xe2, 0x97, 0x96, 0xca, 0x05, 0x38, + 0x5b, 0xa6, 0x00, 0xec, 0x1c, 0x8a, 0xac, 0x15, + 0x21, 0x8e, 0xe5, 0x97, 0xd1, 0xd9, 0xd8, 0x70, + 0x98, 0xdd, 0xde, 0xd7, 0xc6, 0x91, 0x84, 0x8b, + 0x8c, 0xf6, 0x86, 0x89, 0x72, 0x8c, 0x5f, 0xae, + 0xe8, 0x2b, 0x32, 0xbf, 0x07, 0xa4, 0x48, 0x26, + 0x0e, 0xad, 0xce, 0x9e, 0xeb, 0x22, 0xc7, 0xae, + 0x5a, 0x56, 0xe4, 0x2d, 0xc2, 0x19, 0x4d, 0x64, + 0xbd, 0xe4, 0xcd, 0xd5, 0x63, 0xd2, 0xc5, 0x5a, + 0xf1, 0x8f, 0x55, 0xb9, 0x86, 0x1b, 0x55, 0xc6, + 0x41, 0x60, 0x74, 0x92, 0xe3, 0x12, 0x01, 0xda, + 0x75, 0xb9, 0x55, 0x60, 0xb6, 0xa5, 0xca, 0x50, + 0x5b, 0x9c, 0x0c, 0x62, 0x31, 0xdc, 0x8f, 0x61, + 0x1e, 0x43, 0xe4, 0xc3, 0x9a, 0x58, 0xc5, 0x22, + 0x60, 0xd3, 0x0d, 0x49, 0xaf, 0x12, 0x97, 0x86, + 0x72, 0x43, 0x9f, 0x5d, 0x05, 0x78, 0x39, 0xa9, + 0x2e, 0x93, 0xe7, 0x91, 0x57, 0x71, 0xdb, 0x0e, + 0xee, 0x8f, 0x05, 0xdb, 0x06, 0xf4, 0x44, 0xa5, + 0x3b, 0xee, 0xa5, 0x16, 0x70, 0xc3, 0xfa, 0x30, + 0x9c, 0x20, 0x86, 0x1c, 0x3c, 0x83, 0x2b, 0xed, + 0xaf, 0x46, 0xd6, 0xe3, 0x0a, 0xb7, 0xfe, 0x15, + 0xa1, 0x14, 0x4e, 0xf9, 0x5a, 0x40, 0x5c, 0x83, + 0xda, 0x95, 0x89, 0x47, 0xce, 0x43, 0xc0, 0x33, + 0x61, 0x0d, 0x79, 0xcd, 0xc1, 0x11, 0xa8, 0xe2, + 0xb8, 0xbf, 0x4d, 0x7c, 0x61, 0x9b, 0xf3, 0x7d, + 0x8f, 0x91, 0x8a, 0xe2, 0x85, 0x3f, 0x14, 0x98, + 0x5b, 0xf6, 0x8d, 0x40, 0xa8, 0x7e, 0x18, 0xba, + 0xca, 0x4c, 0xaf, 0x52, 0xdd, 0xf1, 0x62, 0x78, + 0x48, 0x50, 0xec, 0x9b, 0x08, 0x9d, 0x5e, 0xf6, + 0xa0, 0xa5, 0x91, 0x0d, 0x25, 0x74, 0x44, 0x4e, + 0xdd, 0x93, 0x80, 0x82, 0xe6, 0x84, 0x3a, 0xc8, + 0x63, 0xbb, 0x91, 0x9b, 0xf7, 0x71, 0xb4, 0xeb, + 0xff, 0x11, 0xe6, 0x14, 0x1b, 0xba, 0x13, 0x4d, + 0x0f, 0x0f, 0xce, 0xa8, 0x65, 0xac, 0xc6, 0x0f, + 0x6c, 0x36, 0x93, 0x8b, 0x3a, 0x8b, 0xa5, 0xe4, + 0xef, 0xf1, 0xe0, 0xd7, 0x5e, 0x26, 0x95, 0x73, + 0xaa, 0xe1, 0x6b, 0x1f, 0x7a, 0xaa, 0x4b, 0xb3, + 0x89, 0x92, 0xd9, 0x56, 0x69, 0x26, 0x05, 0xa9, + 0xbc, 0xde, 0xc0, 0x65, 0x36, 0x87, 0xfd, 0x95, + 0x91, 0x13, 0x2c, 0xf2, 0xbd, 0x36, 0x8b, 0x10, + 0x8c, 0xba, 0xcf, 0xb4, 0x0d, 0x6b, 0xd9, 0x73, + 0xb3, 0x78, 0x1e, 0x75, 0x25, 0xb0, 0x98, 0x81, + 0xe6, 0x7f, 0xdf, 0x4f, 0x7d, 0x6e, 0x2c, 0x03, + 0x8c, 0xd3, 0xfc, 0xb6, 0xbf, 0x61, 0x2d, 0x94, + 0xfa, 0x0f, 0xc4, 0xf9, 0xe0, 0xc9, 0xbe, 0xe7, + 0x28, 0xd8, 0x84, 0x95, 0x3b, 0x9d, 0xe9, 0xb9, + 0x09, 0x0a, 0x0a, 0xcf, 0x9d, 0x63, 0xe3, 0x0b, + 0x58, 0xcc, 0x30, 0xc1, 0xb4, 0x68, 0xd0, 0x9d, + 0x27, 0xce, 0xe3, 0xff, 0x1c, 0x89, 0xa4, 0x78, + 0x94, 0x04, 0xce, 0x71, 0x31, 0xbb, 0xeb, 0xeb, + 0x19, 0x81, 0x16, 0xe4, 0xb6, 0x9e, 0xea, 0x3d, + 0x74, 0xd0, 0xa0, 0x12, 0x9f, 0x39, 0x21, 0x56, + 0x65, 0xef, 0x34, 0x69, 0x33, 0xc9, 0xd9, 0xf3, + 0xea, 0xe8, 0xf1, 0x21, 0xad, 0x7d, 0x43, 0x77, + 0xbe, 0x23, 0x13, 0x2b, 0x9b, 0xe8, 0xbc, 0x3f, + 0x34, 0x97, 0x87, 0xf0, 0xc8, 0xd3, 0x35, 0xff, + 0xe4, 0xcd, 0x20, 0x5d, 0x44, 0xa9, 0x17, 0xc6, + 0x9a, 0x5e, 0x89, 0x24, 0x26, 0x45, 0x34, 0xca, + 0x34, 0xf3, 0x99, 0xde, 0x9e, 0x96, 0x27, 0xf8, + 0x2a, 0xd1, 0xc0, 0x04, 0x29, 0xf3, 0x14, 0x11, + 0xca, 0xf3, 0x68, 0x31, 0x42, 0x13, 0x12, 0xce, + 0x40, 0x48, 0xeb, 0x35, 0xb7, 0x7a, 0xbe, 0xbf, + 0x9b, 0x28, 0x15, 0x73, 0x5e, 0xb1, 0x30, 0x9d, + 0xad, 0xbc, 0xd9, 0x29, 0x90, 0xcf, 0xe6, 0x95, + 0xe6, 0xd1, 0x48, 0xa1, 0x59, 0xc3, 0xce, 0xb4, + 0xa3, 0x35, 0x7c, 0x61, 0x51, 0x3d, 0x1f, 0x00, + 0x6e, 0xc8, 0xcc, 0x43, 0xd8, 0xa4, 0x91, 0x1a, + 0x8e, 0x09, 0xde, 0x01, 0x67, 0x65, 0x3c, 0x48, + 0xad, 0xfa, 0x7a, 0x57, 0xaa, 0x47, 0xed, 0x56, + 0x44, 0x3f, 0x88, 0x12, 0x02, 0xe8, 0x9a, 0x53, + 0xfc, 0xd7, 0xe4, 0xf5, 0x95, 0x33, 0x90, 0x90, + 0x3e, 0x6b, 0x41, 0xb0, 0x05, 0x2e, 0x57, 0x5c, + 0x2f, 0x55, 0xd0, 0x36, 0xd4, 0x9a, 0xfa, 0xd7, + 0xa8, 0x1b, 0xa6, 0xba, 0x10, 0x6c, 0xf2, 0x0b, + 0x3d, 0x06, 0x44, 0x1a, 0x2a, 0x29, 0x85, 0xe6, + 0x01, 0xb3, 0x5f, 0x04, 0x87, 0xc3, 0xd0, 0xe1, + 0xef, 0xc3, 0x2c, 0xc6, 0x93, 0xea, 0x9d, 0x48, + 0x13, 0xcf, 0x07, 0xd0, 0x7a, 0x00, 0xb8, 0x9d, + 0x80, 0xe9, 0xa1, 0x7e, 0x25, 0xb7, 0x91, 0x9f, + 0x1c, 0x30, 0xb9, 0xf7, 0xce, 0x92, 0x14, 0x5c, + 0x10, 0xd6, 0x4c, 0xa5, 0xb2, 0x43, 0x38, 0xad, + 0xbd, 0xcc, 0x5f, 0x93, 0x13, 0x8f, 0x6d, 0x05, + 0x4f, 0x16, 0x96, 0x50, 0x33, 0x5a, 0x20, 0x22, + 0x45, 0xf9, 0xf5, 0xb4, 0xa6, 0xf3, 0xd5, 0xde, + 0xa7, 0x99, 0x78, 0xb8, 0x81, 0xee, 0x8d, 0x3f, + 0xa6, 0xa5, 0x8b, 0x84, 0xf3, 0x3e, 0xfc, 0x6b, + 0x42, 0x96, 0xae, 0x4b, 0x78, 0x57, 0x19, 0x9a, + 0x38, 0xa9, 0xbe, 0x66, 0x51, 0xe8, 0x57, 0xc1, + 0xf6, 0xd7, 0xf6, 0xee, 0xe7, 0xd9, 0x24, 0xba, + 0x9a, 0x02, 0x52, 0x8e, 0x6a, 0xea, 0x3d, 0x16, + 0x02, 0x8d, 0x51, 0x15, 0xae, 0x45, 0x7f, 0x6d, + 0x05, 0xcf, 0xa5, 0x25, 0xf0, 0xe4, 0x52, 0xcd, + 0xae, 0x79, 0x8f, 0xf2, 0x1b, 0xaa, 0xe3, 0xe8, + 0x7a, 0x2b, 0x93, 0xde, 0x35, 0x5e, 0xbf, 0xa6, + 0x4f, 0x3f, 0x78, 0x40, 0x6e, 0x3a, 0x25, 0x53, + 0x6e, 0x24, 0xad, 0xeb, 0x17, 0x61, 0x73, 0x12, + 0xde, 0x6a, 0xb1, 0x51, 0xa6, 0xc2, 0xdb, 0xf3, + 0xe3, 0xbf, 0x28, 0xb5, 0x8b, 0x2e, 0x71, 0xc6, + 0x3e, 0x98, 0x92, 0x97, 0x4e, 0xc1, 0x10, 0xc4, + 0x90, 0x97, 0x2b, 0xe0, 0x88, 0x8a, 0xf0, 0x4b, + 0x3e, 0xbd, 0xc4, 0xb0, 0x16, 0xd2, 0x36, 0xca, + 0x30, 0xbb, 0xf6, 0x48, 0xbb, 0xf9, 0xf1, 0x0b, + 0x85, 0x51, 0x7c, 0xab, 0x73, 0x0a, 0x49, 0x2c, + 0xbb, 0xdb, 0x3c, 0xbd, 0x43, 0x5f, 0x8d, 0xfe, + 0x5d, 0xcf, 0x11, 0xe8, 0xe0, 0xba, 0x54, 0x67, + 0x83, 0x08, 0x1a, 0x20, 0x53, 0x01, 0x5b, 0x59, + 0x2d, 0xf7, 0x1c, 0xd1, 0x57, 0x1c, 0x43, 0x3b, + 0x57, 0x9c, 0xa7, 0x65, 0xc7, 0x6f, 0x61, 0x58, + 0xac, 0x25, 0xdd, 0xf2, 0x5e, 0x73, 0xff, 0x3e, + 0x58, 0xd5, 0x96, 0x3d, 0x9e, 0x2c, 0x7b, 0x35, + 0x19, 0x55, 0x23, 0xc7, 0xd2, 0x63, 0x66, 0xc8, + 0x8f, 0xee, 0x40, 0x55, 0x7f, 0x97, 0x78, 0x69, + 0x0e, 0xee, 0x2d, 0xff, 0xd0, 0x7e, 0xe7, 0x7d, + 0x8c, 0x20, 0xa8, 0x08, 0x1e, 0x8d, 0x0e, 0x89, + 0xf1, 0x21, 0x73, 0xe8, 0x71, 0x12, 0xbe, 0x0f, + 0x4d, 0x2f, 0x11, 0xee, 0x5e, 0xec, 0x19, 0x91, + 0x52, 0x6b, 0x22, 0x94, 0x7c, 0xc2, 0x64, 0x84, + 0x66, 0x4e, 0xd4, 0x8d, 0xae, 0x14, 0xda, 0x9d, + 0xd7, 0xb6, 0xdc, 0xc6, 0x8f, 0x76, 0x17, 0xc5, + 0x8e, 0x19, 0x92, 0x35, 0x61, 0x8d, 0x1d, 0xeb, + 0x30, 0x9f, 0x6c, 0xff, 0xa3, 0xa8, 0xa4, 0xfe, + 0x96, 0x56, 0x18, 0xdc, 0xe6, 0x3b, 0x6c, 0x96, + 0x4c, 0x14, 0x9d, 0x5b, 0x25, 0x3d, 0xff, 0x63, + 0xc4, 0x8f, 0x54, 0x47, 0xa0, 0x57, 0xf6, 0xcc, + 0xf1, 0x8e, 0x77, 0xcb, 0xd0, 0xb0, 0x2c, 0x11, + 0x7e, 0xf6, 0x6f, 0xdc, 0x84, 0xba, 0xa2, 0x3c, + 0x4d, 0x4b, 0x7b, 0xca, 0x0f, 0x27, 0x0e, 0xd4, + 0x23, 0x90, 0xc2, 0xbf, 0xb2, 0x2e, 0x57, 0x07, + 0x3d, 0xa1, 0x47, 0x64, 0x2b, 0x44, 0x57, 0xb8, + 0x01, 0x31, 0x1e, 0x59, 0x44, 0xbb, 0x45, 0xe0, + 0xd4, 0x73, 0x88, 0xa1, 0x7f, 0x51, 0x6e, 0xd5, + 0x92, 0x36, 0x0a, 0x27, 0x3c, 0x3d, 0x82, 0x22, + 0xc5, 0x56, 0x1b, 0x42, 0x1f, 0x47, 0xa2, 0x71, + 0xa9, 0xf9, 0xfd, 0xa1, 0x86, 0x35, 0x77, 0x97, + 0x03, 0x23, 0xe6, 0xfe, 0x75, 0x70, 0x20, 0x61, + 0x89, 0x69, 0x40, 0x8b, 0x18, 0xa0, 0x9d, 0xb0, + 0x6a, 0x14, 0xe2, 0xa1, 0x88, 0xa4, 0x01, 0xa5, + 0xb5, 0x9c, 0xe6, 0x22, 0x06, 0x65, 0x59, 0x25, + 0x3b, 0x46, 0x62, 0xac, 0x87, 0x83, 0x17, 0x4a, + 0xce, 0xe0, 0x17, 0x64, 0x10, 0x6b, 0x8a, 0xb6, + 0xa5, 0xf5, 0x69, 0x6e, 0x55, 0x78, 0x8d, 0x8e, + 0x16, 0xe8, 0xca, 0xda, 0x3a, 0x7a, 0xc0, 0x16, + 0x35, 0x34, 0x7c, 0xf8, 0x53, 0xb0, 0x92, 0x0c, + 0x53, 0x7b, 0xaa, 0xe6, 0x0a, 0x01, 0xec, 0x39, + 0x2b, 0x7d, 0x23, 0x41, 0x18, 0xc7, 0x96, 0x21, + 0x6b, 0x3b, 0xae, 0x78, 0xd6, 0xf9, 0xae, 0x98, + 0x84, 0x3a, 0xf1, 0x1f, 0xef, 0x5b, 0xb4, 0x0b, + 0x4a, 0x47, 0xf1, 0xdd, 0x2d, 0xac, 0x5d, 0x70, + 0xa7, 0x05, 0x63, 0x27, 0x49, 0x28, 0x54, 0x67, + 0x40, 0xb2, 0xfe, 0x72, 0x2f, 0xdf, 0x27, 0x4b, + 0x64, 0x9b, 0xa5, 0x5f, 0xe3, 0xfc, 0xc5, 0x82, + 0x1b, 0x7b, 0xce, 0x4a, 0x53, 0xdc, 0xb7, 0xf4, + 0xab, 0xf1, 0xac, 0xb9, 0xe4, 0xe0, 0x2d, 0xa1, + 0xd0, 0x50, 0x6d, 0x31, 0x1e, 0x64, 0xfa, 0x6b, + 0xee, 0xc0, 0xf6, 0xd6, 0xa2, 0x3e, 0x41, 0x22, + 0xde, 0xac, 0x08, 0xc9, 0xbf, 0x9f, 0x3a, 0xf8, + 0x17, 0x96, 0x46, 0x51, 0x38, 0x78, 0x66, 0x5e, + 0x0d, 0x46, 0x55, 0x3e, 0x0b, 0x18, 0x2d, 0x0d, + 0xc4, 0xbe, 0x4e, 0x8b, 0x57, 0xc8, 0x9f, 0x60, + 0x17, 0xfa, 0xd7, 0xff, 0x96, 0x23, 0xeb, 0xe3, + 0x1c, 0xf9, 0x4e, 0x07, 0x3a, 0x0e, 0x4d, 0xf8, + 0xfb, 0x2c, 0x15, 0x41, 0xe1, 0x80, 0x26, 0xfd, + 0xbf, 0x57, 0x10, 0xc1, 0xdc, 0xfd, 0x7f, 0x1a, + 0xb7, 0xeb, 0x81, 0x3e, 0x4e, 0x0e, 0x59, 0x19, + 0xff, 0x8e, 0xc9, 0xd9, 0xc9, 0x43, 0x98, 0xaa, + 0x32, 0xe5, 0x3b, 0xfe, 0x5d, 0x53, 0xae, 0x30, + 0x6f, 0x05, 0xfa, 0x16, 0x3e, 0xb2, 0x8a, 0x05, + 0xb8, 0x9f, 0x81, 0x5c, 0xcc, 0x8f, 0xc5, 0xd9, + 0xe0, 0x0d, 0x7d, 0xd1, 0x64, 0xa3, 0xfd, 0xe6, + 0x9c, 0x1e, 0x45, 0xea, 0x63, 0xcd, 0x58, 0x0b, + 0x91, 0xea, 0x9c, 0xb8, 0x82, 0x39, 0xca, 0x5a, + 0xbd, 0x46, 0xce, 0xb3, 0x41, 0x5c, 0x8f, 0x60, + 0xb2, 0xd3, 0x76, 0x7a, 0x99, 0x8a, 0x9b, 0xd3, + 0x68, 0x54, 0x6a, 0x74, 0xb8, 0x52, 0x27, 0xaa, + 0xe4, 0xf4, 0x3c, 0x94, 0xb1, 0x96, 0xa5, 0x5b, + 0xa8, 0x6b, 0x8e, 0xff, 0xe1, 0xd0, 0xfa, 0x5d, + 0x19, 0xdc, 0x62, 0xde, 0x52, 0xa1, 0xe6, 0xeb, + 0xd3, 0x92, 0x67, 0x92, 0x6e, 0x7d, 0xe4, 0x43, + 0x44, 0x55, 0xd5, 0xe3, 0xbc, 0xb8, 0x0e, 0x75, + 0x64, 0x17, 0x72, 0x2f, 0xe9, 0xb0, 0x6d, 0x7f, + 0x4b, 0x9a, 0xdd, 0x11, 0xaa, 0x74, 0xe1, 0xa3, + 0x1e, 0x8a, 0xf0, 0xdf, 0x9b, 0x79, 0x37, 0xed, + 0xb8, 0xc6, 0xf9, 0x11, 0x3a, 0xe8, 0x99, 0xd0, + 0xde, 0xae, 0x68, 0x17, 0x29, 0x41, 0xed, 0xb0, + 0xb7, 0x41, 0x2f, 0xd7, 0x5c, 0x37, 0x92, 0x7a, + 0x34, 0x1a, 0x2b, 0xb5, 0x8a, 0xd2, 0x0b, 0x95, + 0x69, 0xe0, 0x8b, 0xaf, 0x45, 0xa5, 0xfa, 0x30, + 0xe8, 0xec, 0xa3, 0x23, 0x54, 0x88, 0x29, 0xc1, + 0x7a, 0x19, 0xe9, 0x94, 0x7f, 0xd1, 0x27, 0x01, + 0x81, 0xa3, 0x48, 0xaa, 0x88, 0x2c, 0x70, 0x2e, + 0x35, 0x26, 0xac, 0x6d, 0x1d, 0xa6, 0x24, 0x92, + 0xfb, 0xf1, 0xfc, 0x2f, 0xef, 0xfd, 0xc1, 0x7b, + 0xeb, 0xe8, 0x4a, 0x39, 0x35, 0x2e, 0x9a, 0x89, + 0x5a, 0x8a, 0x28, 0x60, 0xcb, 0x2f, 0x64, 0x54, + 0x0a, 0xdd, 0xce, 0x33, 0xab, 0x24, 0xf6, 0x31, + 0x26, 0xca, 0x81, 0xf1, 0x46, 0x97, 0x53, 0x4a, + 0x39, 0x36, 0x15, 0xa0, 0x40, 0x32, 0x0f, 0x7f, + 0xcd, 0x5f, 0xc1, 0xae, 0x9b, 0x40, 0x11, 0x2e, + 0x2d, 0x18, 0x8c, 0x86, 0x2d, 0x0d, 0x29, 0x00, + 0x97, 0x09, 0x55, 0xe5, 0x0d, 0x72, 0x85, 0x02, + 0x07, 0x48, 0x62, 0xf4, 0xf6, 0x02, 0x84, 0x4b, + 0x11, 0x18, 0xbe, 0x62, 0xfe, 0xaa, 0xf3, 0x32, + 0xcc, 0x5c, 0xa7, 0x77, 0x4e, 0xa3, 0x87, 0x8c, + 0xc2, 0x3a, 0x1a, 0x66, 0xdb, 0xc8, 0xf7, 0xc0, + 0x4a, 0x9c, 0x2d, 0x4b, 0xaf, 0x25, 0x4f, 0xe6, + 0x58, 0x56, 0xe9, 0xc5, 0x8a, 0xde, 0x6c, 0xac, + 0xe6, 0xc0, 0x85, 0xa0, 0xf7, 0x7b, 0xb2, 0xd8, + 0xde, 0xea, 0x9a, 0xe3, 0xcf, 0xbc, 0xba, 0xa8, + 0xcd, 0x73, 0xbd, 0xd0, 0x7e, 0x6d, 0x98, 0xa1, + 0xb9, 0xa1, 0x9a, 0xc6, 0x33, 0x27, 0x58, 0x0f, + 0xba, 0x2e, 0xb2, 0x48, 0x0b, 0x0c, 0xd9, 0xb7, + 0xaa, 0xf7, 0xe9, 0xa4, 0x4b, 0x0f, 0xc9, 0xec, + 0x21, 0x84, 0x7a, 0xeb, 0x34, 0x35, 0xf4, 0xf4, + 0x69, 0x1a, 0x67, 0xcc, 0x85, 0x64, 0x51, 0x30, + 0xbc, 0xcd, 0x55, 0x99, 0xf9, 0x48, 0x47, 0x84, + 0x7d, 0x09, 0xa2, 0x0f, 0xf6, 0x60, 0xe6, 0x23, + 0x40, 0x6b, 0x33, 0xa8, 0x6b, 0x74, 0xc5, 0x47, + 0xb7, 0xad, 0xf3, 0x71, 0xd7, 0x69, 0xe6, 0xb9, + 0xfa, 0x98, 0x43, 0xb1, 0x89, 0x8a, 0x9a, 0xbf, + 0xee, 0x59, 0x0d, 0x34, 0xf5, 0xa4, 0x47, 0x9f, + 0xa0, 0xe2, 0x76, 0x39, 0xb4, 0xe8, 0x63, 0x9a, + 0xdc, 0x3b, 0x34, 0x99, 0x02, 0x0a, 0xa9, 0x94, + 0x07, 0x9f, 0x07, 0x96, 0x58, 0xf0, 0xd8, 0x71, + 0x64, 0x7e, 0xbb, 0x5c, 0xa4, 0xb4, 0x8f, 0x41, + 0xc8, 0x20, 0x3a, 0x7e, 0x05, 0x63, 0x9e, 0x0a, + 0x78, 0x93, 0x34, 0xd3, 0x49, 0xd2, 0x12, 0x0a, + 0x2b, 0xff, 0x9e, 0x4c, 0x52, 0x51, 0xa1, 0x33, + 0x6c, 0xb6, 0x00, 0x67, 0x64, 0xed, 0x13, 0xf9, + 0xff, 0x6c, 0x78, 0xf5, 0xb3, 0x79, 0x6d, 0xbf, + 0xc3, 0xfc, 0xe3, 0xa3, 0x35, 0x5f, 0x58, 0xcf, + 0xa8, 0x4f, 0x65, 0x4d, 0x64, 0x7a, 0xf2, 0x0d, + 0x7f, 0xc7, 0xbd, 0x3a, 0xfa, 0x22, 0x44, 0x7a, + 0x66, 0xcb, 0x42, 0xdf, 0x79, 0x94, 0xf3, 0xa7, + 0xf7, 0x22, 0xea, 0x3c, 0x54, 0xe3, 0xac, 0x22, + 0x7e, 0xbb, 0x6e, 0x52, 0x96, 0x89, 0x7c, 0xac, + 0xab, 0xfc, 0x66, 0x86, 0xb2, 0x7a, 0xcd, 0xed, + 0xd4, 0x1d, 0x08, 0xd9, 0x06, 0xb4, 0xf0, 0x1c, + 0x58, 0x30, 0xe0, 0x2f, 0x56, 0xcb, 0xe7, 0x70, + 0xfe, 0xb0, 0x49, 0xe8, 0xe5, 0x05, 0x66, 0x35, + 0x38, 0x24, 0x64, 0x26, 0x7c, 0x1f, 0x08, 0xef, + 0x4e, 0xe3, 0x11, 0x29, 0x91, 0xc0, 0xf7, 0x6d, + 0x85, 0x59, 0xe1, 0x0c, 0xcc, 0xde, 0x7d, 0x24, + 0x23, 0xce, 0xfa, 0xec, 0x99, 0x83, 0x16, 0x74, + 0x22, 0x08, 0xd0, 0xd2, 0xd3, 0x9d, 0x43, 0xc1, + 0x82, 0x2b, 0x14, 0x3d, 0x94, 0xdb, 0xc6, 0x2c, + 0x93, 0x98, 0x3e, 0xad, 0xff, 0x9b, 0x26, 0xd5, + 0xdd, 0x18, 0x53, 0x7e, 0xd8, 0x4d, 0x68, 0xc7, + 0xa2, 0x75, 0xfc, 0x53, 0xa1, 0x20, 0x54, 0xad, + 0x85, 0x42, 0x07, 0x66, 0xad, 0xc1, 0xd4, 0x02, + 0xb3, 0x22, 0x08, 0x96, 0x44, 0x46, 0x60, 0x5f, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x19, 0xfd, 0x12, 0x30, 0xc8, 0x56, 0x97, 0xfe, + 0xef, 0x73, 0x3a, 0x1c, 0xac, 0x0d, 0xf5, 0x25, + 0x5a, 0x83, 0x4f, 0x56, 0xc5, 0x9a, 0x51, 0x17, + 0x8e, 0x9d, 0xf5, 0x0a, 0x01, 0x7d, 0x66, 0x45, + 0xef, 0x9d, 0xf3, 0x3d, 0xdc, 0xfd, 0x5e, 0x1a, + 0x03, 0x2c, 0xee, 0xda, 0x2a, 0x25, 0xf8, 0x3c, + 0xa1, 0xb6, 0x59, 0x91, 0x23, 0x1d, 0xd4, 0x59, + 0x34, 0x86, 0xff, 0x44, 0x23, 0xe9, 0x5a, 0x2f, + }, + .sig_len =3D DILITHIUM87_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM87_CRYPTO_BYTES]){ + 0x50, 0x14, 0x5c, 0x77, 0x80, 0x36, 0x1f, 0x7a, + 0x46, 0x7c, 0xc7, 0xf0, 0x5a, 0xd6, 0xff, 0xaa, + 0x7b, 0x40, 0x9c, 0x6e, 0xb7, 0x93, 0xdf, 0x30, + 0xad, 0x2e, 0xc5, 0x84, 0x80, 0x68, 0x0f, 0x58, + 0xac, 0xbe, 0x9f, 0xc0, 0x7a, 0x74, 0xe9, 0x10, + 0xae, 0x8e, 0x50, 0x39, 0xd5, 0x17, 0x94, 0x10, + 0x74, 0xfc, 0x16, 0x3a, 0xda, 0xd0, 0xef, 0xb8, + 0x4e, 0xeb, 0xd6, 0x6e, 0x3a, 0xb0, 0x5a, 0xc1, + 0x2d, 0x2a, 0x7a, 0x76, 0xc6, 0x72, 0xa6, 0x12, + 0x7a, 0xf1, 0x19, 0xae, 0x7c, 0x34, 0x8c, 0x09, + 0x1b, 0x26, 0x0a, 0x5b, 0x5a, 0xa1, 0xc9, 0xfe, + 0x5b, 0x5c, 0x8f, 0xf6, 0x1a, 0x75, 0x09, 0xf5, + 0x80, 0xc1, 0xbc, 0xe0, 0xf3, 0x0e, 0x73, 0xa8, + 0xd6, 0xe8, 0xac, 0x52, 0xe5, 0x8b, 0xe3, 0x88, + 0x8e, 0x50, 0x22, 0x1f, 0xf5, 0x48, 0x1d, 0xa4, + 0x64, 0x71, 0xd6, 0xba, 0x9e, 0x7d, 0x91, 0xfe, + 0x54, 0xed, 0x88, 0x60, 0xff, 0x5e, 0x05, 0x46, + 0x55, 0x26, 0x15, 0xf0, 0xe9, 0xec, 0x56, 0x83, + 0xce, 0x8d, 0x95, 0x8a, 0x22, 0x14, 0x4c, 0xf9, + 0xea, 0xd9, 0x07, 0xd6, 0xff, 0xed, 0x39, 0x92, + 0x7c, 0xfc, 0x85, 0xec, 0x2d, 0x8a, 0x11, 0x39, + 0x44, 0xcc, 0xa5, 0x7d, 0xd9, 0xa1, 0x83, 0xb6, + 0xe3, 0x7f, 0x74, 0x60, 0x00, 0xc4, 0x9b, 0xb3, + 0xeb, 0xe7, 0x77, 0xf3, 0x1a, 0x82, 0xfb, 0x5f, + 0xb4, 0x36, 0x91, 0x20, 0x40, 0x26, 0x33, 0xa7, + 0x9c, 0xfc, 0x34, 0xb6, 0x20, 0xa2, 0x41, 0xf2, + 0x67, 0xc9, 0x38, 0x31, 0x47, 0xd0, 0x43, 0xd0, + 0xb8, 0xc0, 0x67, 0x08, 0x3b, 0x22, 0xfa, 0xad, + 0x2a, 0x2a, 0x8d, 0x6d, 0x26, 0x19, 0x8c, 0x7a, + 0x31, 0x95, 0x7a, 0xc0, 0xe9, 0xfa, 0xa5, 0x85, + 0xc4, 0xee, 0x3a, 0x79, 0x58, 0xb6, 0x77, 0x4f, + 0xe9, 0x65, 0xb7, 0x4d, 0xff, 0x9c, 0x43, 0x18, + 0xc1, 0xbc, 0xac, 0x47, 0xae, 0x43, 0xc1, 0x34, + 0xad, 0x52, 0xbf, 0xf6, 0x6e, 0x64, 0x8e, 0xb1, + 0x05, 0x3a, 0xc1, 0x6a, 0xc7, 0x3a, 0x50, 0x2a, + 0x83, 0x56, 0x9c, 0x7e, 0x04, 0x28, 0xac, 0x89, + 0x83, 0xba, 0xbc, 0x06, 0xbe, 0xef, 0x85, 0x55, + 0x01, 0xe3, 0xd5, 0x03, 0xfe, 0x3b, 0xd2, 0xda, + 0xfd, 0x60, 0xef, 0x9f, 0x7c, 0xa7, 0xa1, 0x8e, + 0xe4, 0x88, 0x0d, 0xbf, 0xc4, 0xa7, 0xce, 0xc5, + 0x9b, 0x26, 0x4a, 0x5d, 0xf1, 0xa3, 0x52, 0x4c, + 0x47, 0xbe, 0x0e, 0x5b, 0x59, 0x7e, 0x9e, 0x86, + 0xa0, 0xa3, 0x5d, 0xa0, 0x58, 0x2f, 0x1e, 0x2c, + 0x2f, 0x60, 0x5e, 0x4f, 0xd1, 0x84, 0xea, 0x4b, + 0xdb, 0x0e, 0x21, 0xa3, 0xcb, 0xb8, 0x6e, 0x19, + 0x7c, 0x58, 0x11, 0x5b, 0xe4, 0xa9, 0x88, 0x7e, + 0x16, 0xa2, 0x85, 0xe7, 0x7a, 0xdb, 0xe8, 0x11, + 0x66, 0x4e, 0x67, 0x77, 0x4f, 0xdf, 0x09, 0xca, + 0x07, 0xec, 0x93, 0x6b, 0xe5, 0x4e, 0xe2, 0xf7, + 0xeb, 0xe2, 0x57, 0xd6, 0xb0, 0x56, 0x4e, 0x82, + 0x14, 0x86, 0x81, 0x06, 0x7c, 0x11, 0xad, 0x65, + 0x0b, 0x3c, 0x05, 0x76, 0x14, 0x0d, 0xd7, 0x0e, + 0xb3, 0xcb, 0x0f, 0x97, 0x03, 0x2b, 0x6b, 0x5b, + 0x22, 0x57, 0x2b, 0x12, 0x5c, 0x97, 0x53, 0xb3, + 0x90, 0xd0, 0x0a, 0xc7, 0x3f, 0xa1, 0x73, 0xf4, + 0x07, 0x75, 0xad, 0x30, 0x60, 0x34, 0x41, 0x3d, + 0xf2, 0x1c, 0x3e, 0x79, 0x31, 0x17, 0xa9, 0x85, + 0xc6, 0xbc, 0x6f, 0x3d, 0x9d, 0xb2, 0xf6, 0xce, + 0xba, 0xa5, 0x3c, 0xb4, 0x7e, 0x59, 0x69, 0xeb, + 0x43, 0xba, 0x69, 0xea, 0xe0, 0xa5, 0x0f, 0x7f, + 0xc9, 0xe1, 0xfb, 0xfe, 0x97, 0x66, 0x87, 0x55, + 0x6f, 0x9b, 0xf9, 0x67, 0x5e, 0x95, 0xd5, 0x24, + 0xa6, 0xf0, 0x2a, 0x66, 0xe3, 0xbd, 0x22, 0xe1, + 0xa1, 0x33, 0x1d, 0x40, 0x3c, 0x03, 0x34, 0xd8, + 0x5c, 0x83, 0x37, 0x35, 0xbc, 0xa5, 0x61, 0x87, + 0x25, 0xc4, 0x7b, 0x94, 0x38, 0x04, 0x8c, 0x12, + 0xd6, 0x6d, 0x42, 0xed, 0x36, 0x94, 0x8e, 0x03, + 0xa3, 0x74, 0x0e, 0x88, 0x31, 0x73, 0xd3, 0x4e, + 0x02, 0x2b, 0x74, 0x4d, 0x3b, 0x24, 0x56, 0x98, + 0x57, 0xfe, 0xce, 0x94, 0x22, 0x18, 0xc5, 0x8d, + 0x32, 0xb6, 0x86, 0xbc, 0x41, 0x0f, 0x2e, 0x27, + 0x30, 0xce, 0xd7, 0xa5, 0xdb, 0xad, 0x25, 0x3a, + 0x8a, 0x7b, 0xd5, 0x3d, 0x36, 0x29, 0x76, 0xd0, + 0xb3, 0xd3, 0x1e, 0x7f, 0x75, 0x6b, 0x6a, 0x13, + 0xa2, 0x79, 0x9e, 0x72, 0x16, 0x3c, 0xbc, 0x76, + 0xdb, 0x2b, 0xb9, 0x3a, 0x7c, 0x94, 0x68, 0x17, + 0x3e, 0x43, 0xaf, 0x3f, 0x45, 0x94, 0xa8, 0xc8, + 0xdc, 0xb6, 0x02, 0x0e, 0xbe, 0xd5, 0x61, 0xfe, + 0xa7, 0xe1, 0x70, 0x7d, 0x42, 0xf6, 0xa0, 0xef, + 0x9b, 0x1a, 0x66, 0x5f, 0x02, 0x3b, 0x59, 0x93, + 0x92, 0xa4, 0x29, 0xa4, 0x6a, 0x35, 0x3c, 0x8d, + 0x58, 0x49, 0xe4, 0x1b, 0x52, 0x88, 0xdd, 0xd4, + 0xfc, 0xaa, 0xa1, 0x68, 0xa4, 0x50, 0xad, 0x24, + 0xc8, 0x81, 0x6c, 0xe8, 0x21, 0x3e, 0x3f, 0x4d, + 0x40, 0xdb, 0xfa, 0x24, 0xb6, 0x54, 0xb1, 0xf4, + 0x9b, 0x44, 0xee, 0x78, 0x63, 0x05, 0x28, 0x3e, + 0xc8, 0xda, 0xd7, 0x35, 0x56, 0x04, 0x83, 0xc9, + 0xd0, 0xcb, 0x4c, 0x8e, 0xbf, 0xe0, 0x1c, 0xa8, + 0x75, 0x43, 0x36, 0x10, 0xcd, 0xd9, 0xdb, 0x7e, + 0x86, 0xde, 0xc9, 0xfe, 0x13, 0x3f, 0x40, 0xcd, + 0xa7, 0x6d, 0xd4, 0x62, 0x21, 0x54, 0xea, 0xb3, + 0x94, 0x75, 0xdd, 0x01, 0xc9, 0x49, 0x66, 0x24, + 0x3a, 0xdf, 0xf1, 0x5f, 0x7b, 0xab, 0x51, 0xad, + 0x7d, 0x9a, 0x7a, 0xe0, 0x5d, 0x6f, 0xc9, 0xf9, + 0xcc, 0x30, 0xc3, 0xcb, 0x46, 0xdb, 0xed, 0x64, + 0x08, 0x07, 0xcf, 0x7b, 0xff, 0xc8, 0x44, 0xb2, + 0xe3, 0x02, 0xb9, 0xf7, 0x03, 0xcf, 0x47, 0x7d, + 0x26, 0x81, 0xd2, 0x1a, 0x46, 0x04, 0x81, 0x33, + 0x0f, 0xc9, 0x90, 0x0c, 0x3b, 0xac, 0xf4, 0x16, + 0x2b, 0xc0, 0x5a, 0x74, 0x3a, 0x3d, 0xc6, 0x74, + 0x7b, 0x02, 0x28, 0xd8, 0xde, 0x9b, 0x6e, 0x6a, + 0xc1, 0xae, 0x98, 0x2f, 0x7e, 0xf5, 0x32, 0xf0, + 0xc0, 0xbc, 0x22, 0xbd, 0xe3, 0x1a, 0x36, 0x38, + 0x06, 0x74, 0xd0, 0x31, 0x47, 0x68, 0xda, 0x31, + 0xe3, 0x25, 0x39, 0xca, 0x3f, 0xfb, 0x6a, 0x4b, + 0x5f, 0x53, 0xbb, 0xa7, 0x39, 0x7d, 0xfc, 0x2f, + 0xd0, 0xb8, 0xfc, 0xf3, 0x35, 0x2c, 0x61, 0xb4, + 0x29, 0x32, 0x23, 0xf6, 0xac, 0x59, 0x81, 0x60, + 0x58, 0x97, 0x31, 0xab, 0xae, 0x20, 0xa6, 0xb9, + 0x78, 0x4a, 0x41, 0xdd, 0x0b, 0xa4, 0xcf, 0x3f, + 0xf4, 0x67, 0x42, 0xd4, 0x3e, 0xa5, 0x03, 0x91, + 0x32, 0x89, 0xae, 0x77, 0x32, 0xcd, 0x17, 0xc9, + 0x0b, 0xf1, 0x48, 0xf7, 0x54, 0xb1, 0x04, 0x53, + 0x6f, 0x50, 0xf3, 0x25, 0x96, 0xc4, 0x15, 0x28, + 0x37, 0xf3, 0xd5, 0x26, 0x2b, 0x72, 0x32, 0x00, + 0xae, 0xda, 0x7c, 0x3f, 0xa1, 0x50, 0x99, 0x85, + 0x02, 0x2d, 0x5f, 0x0c, 0x06, 0xe9, 0x59, 0x7a, + 0xdd, 0x47, 0xa4, 0xdb, 0xdf, 0x21, 0xd7, 0x5a, + 0x3b, 0x95, 0x40, 0x13, 0x99, 0x76, 0x60, 0xe0, + 0x5d, 0x5c, 0xc2, 0x77, 0xd5, 0xfa, 0x3a, 0x8b, + 0x3e, 0x47, 0x56, 0xe4, 0xcf, 0x82, 0x80, 0xef, + 0x06, 0x8c, 0x38, 0x68, 0x1b, 0x38, 0xde, 0xbe, + 0xb7, 0x7e, 0x2b, 0x20, 0xac, 0x7c, 0x0e, 0x4d, + 0x39, 0x5d, 0xcc, 0x78, 0xb9, 0xc5, 0x1c, 0x9d, + 0x23, 0x07, 0xc2, 0x17, 0x10, 0x20, 0x6d, 0x22, + 0xe8, 0xc5, 0xde, 0xd9, 0xd6, 0x5e, 0x44, 0x96, + 0x99, 0x78, 0xc1, 0xb6, 0x4f, 0xce, 0x55, 0xb8, + 0x49, 0x95, 0x62, 0xa6, 0x84, 0x65, 0x92, 0x7b, + 0x4a, 0x4a, 0xc0, 0x55, 0x88, 0xcc, 0xf0, 0xf8, + 0xa4, 0xc7, 0xd9, 0x9e, 0x8a, 0xc2, 0xe8, 0x05, + 0xfe, 0x3f, 0x7b, 0x37, 0xea, 0xb4, 0x4f, 0x16, + 0xcc, 0x4d, 0xe2, 0x26, 0x64, 0x52, 0x47, 0x2f, + 0x4f, 0xea, 0x58, 0xe8, 0xbc, 0xd3, 0x3d, 0x32, + 0x9a, 0x79, 0x65, 0x96, 0xa7, 0x75, 0x55, 0x55, + 0x10, 0x94, 0xe9, 0xcc, 0x43, 0x44, 0xd3, 0xe7, + 0x25, 0xff, 0xc5, 0xc2, 0x41, 0xe9, 0xaa, 0x68, + 0xb8, 0xad, 0xd9, 0x15, 0x51, 0x4f, 0xb8, 0xc2, + 0x0f, 0x68, 0x2b, 0xdc, 0x2d, 0xb0, 0x01, 0xf8, + 0xd3, 0xbd, 0xd4, 0x72, 0x3b, 0x60, 0xf3, 0xc0, + 0xfe, 0x3e, 0xe2, 0x9b, 0xde, 0x68, 0xea, 0x76, + 0xea, 0x48, 0xf5, 0x85, 0x7b, 0x39, 0x1f, 0xfb, + 0xcd, 0x6a, 0x86, 0xa1, 0x77, 0xe9, 0xaa, 0x95, + 0x8c, 0x6e, 0x6b, 0xc8, 0x06, 0x1a, 0xbe, 0x32, + 0x23, 0xb5, 0x08, 0xc7, 0x92, 0xb0, 0xfa, 0x12, + 0xbc, 0x48, 0x85, 0xf8, 0x1a, 0xe2, 0xa2, 0x2a, + 0x92, 0x4d, 0x3a, 0xb6, 0x29, 0xb8, 0xc5, 0x88, + 0x77, 0x0e, 0x58, 0x38, 0xea, 0xbb, 0x73, 0xd3, + 0x20, 0xed, 0x0d, 0x96, 0x26, 0xde, 0x01, 0xde, + 0x26, 0xf8, 0x71, 0x60, 0x62, 0x42, 0x51, 0xf0, + 0x61, 0x46, 0x5a, 0x70, 0x4d, 0xe5, 0x36, 0xef, + 0x3f, 0xcb, 0xaf, 0x51, 0xfb, 0xc3, 0xfc, 0x61, + 0x72, 0xad, 0x6f, 0x65, 0x66, 0x16, 0x25, 0x47, + 0x6b, 0xfc, 0xb5, 0x06, 0x6f, 0x19, 0x97, 0x87, + 0x45, 0xb5, 0x5c, 0x44, 0x44, 0x14, 0x2e, 0xb7, + 0xd8, 0x18, 0x68, 0x59, 0x24, 0x4d, 0x69, 0xbe, + 0x7b, 0x6a, 0xa0, 0xc5, 0xb5, 0x3f, 0xd6, 0x75, + 0x2e, 0xa6, 0x56, 0x53, 0xb2, 0x07, 0x3d, 0x2e, + 0x8d, 0x83, 0x49, 0xd3, 0x0d, 0x88, 0x1c, 0x27, + 0xb5, 0x66, 0x8d, 0x0f, 0x62, 0xd9, 0x89, 0xac, + 0xe8, 0x3f, 0xa0, 0x80, 0x29, 0x5d, 0xf2, 0x8f, + 0x98, 0x73, 0x89, 0x0b, 0x17, 0x11, 0xcb, 0x21, + 0xb7, 0x6d, 0xfb, 0xf4, 0x7b, 0x39, 0x9a, 0xe6, + 0x35, 0xc6, 0xfe, 0x54, 0xf5, 0xe9, 0xa4, 0x29, + 0x8d, 0x96, 0x2d, 0xbf, 0x24, 0x2b, 0x66, 0x82, + 0xa2, 0x60, 0xac, 0xae, 0x5d, 0x33, 0x35, 0xf0, + 0xce, 0x64, 0x61, 0x73, 0x72, 0x0c, 0x3e, 0x09, + 0x82, 0xd5, 0xb3, 0x8b, 0xff, 0x52, 0x08, 0x4a, + 0xdd, 0x86, 0x21, 0xd2, 0x17, 0x3d, 0xc2, 0x66, + 0x16, 0x7e, 0xc7, 0x27, 0xe3, 0xc5, 0xaa, 0x69, + 0x33, 0x43, 0x4b, 0xa9, 0x4f, 0x5f, 0x05, 0x4e, + 0x5e, 0xeb, 0x0c, 0x66, 0xf3, 0xee, 0x2c, 0x84, + 0x49, 0x3d, 0x8f, 0xb4, 0x04, 0x1b, 0xe5, 0xae, + 0xce, 0xd0, 0x2a, 0xf9, 0x1d, 0x5b, 0x1c, 0x7d, + 0x28, 0x8e, 0xe3, 0x14, 0x55, 0x71, 0x72, 0x6d, + 0xb3, 0x90, 0x09, 0x0d, 0xa1, 0xad, 0x6c, 0xe2, + 0x0c, 0x20, 0x1d, 0xb5, 0xb1, 0x48, 0x41, 0x0d, + 0x58, 0x8e, 0xe9, 0x8b, 0x3b, 0x6c, 0x90, 0xf4, + 0x7d, 0x4b, 0x16, 0x3d, 0xc5, 0x4f, 0xf2, 0x49, + 0x4a, 0x12, 0x32, 0xd0, 0x33, 0xda, 0xdd, 0x20, + 0xa3, 0xe4, 0x70, 0x73, 0x4e, 0x1d, 0xfc, 0xba, + 0xbe, 0x76, 0x7a, 0x73, 0xca, 0xc6, 0xf8, 0x29, + 0x1d, 0xdd, 0xb3, 0xa8, 0x1a, 0x5c, 0x50, 0x8d, + 0xf5, 0x19, 0x31, 0xad, 0xf6, 0x5a, 0x7c, 0x3c, + 0x71, 0x3b, 0x3f, 0x55, 0xb1, 0xa5, 0x84, 0xfd, + 0x64, 0x40, 0x9d, 0xe9, 0x85, 0x0d, 0xb3, 0x38, + 0x92, 0x37, 0x63, 0xd1, 0xd6, 0x6b, 0x79, 0x73, + 0x17, 0x5e, 0x56, 0xd2, 0xcd, 0xff, 0xc0, 0x08, + 0x77, 0x3f, 0xef, 0x26, 0xa1, 0x2d, 0x9f, 0x98, + 0x80, 0x0b, 0x3b, 0x67, 0x7a, 0x2e, 0xe9, 0xab, + 0x72, 0x27, 0xea, 0x7f, 0x2a, 0xaf, 0x54, 0xf2, + 0xb5, 0xf5, 0xfe, 0x50, 0x01, 0x3c, 0x4f, 0x55, + 0x86, 0x7b, 0x22, 0x73, 0xbb, 0x34, 0xcd, 0x2d, + 0xe1, 0xce, 0xab, 0x13, 0xbd, 0x41, 0xcf, 0x3b, + 0xfa, 0x18, 0x59, 0xb3, 0x87, 0x33, 0x92, 0xd8, + 0x00, 0x09, 0x7b, 0x6d, 0xc4, 0x46, 0x6c, 0x64, + 0xd6, 0x6b, 0x94, 0x7d, 0x0b, 0xb0, 0x80, 0xe3, + 0xa3, 0xd9, 0xcf, 0x22, 0xb1, 0x38, 0x1f, 0xa6, + 0x0d, 0x47, 0x3d, 0xc6, 0x7c, 0xe0, 0xc0, 0xc6, + 0x32, 0xbd, 0x39, 0x1f, 0xfc, 0xd8, 0x61, 0x6c, + 0x18, 0xea, 0x35, 0x47, 0x73, 0x57, 0x36, 0xa5, + 0x8b, 0x04, 0xe3, 0x92, 0xdb, 0x6e, 0xb1, 0x79, + 0x6c, 0x3e, 0x5a, 0x7a, 0x58, 0x74, 0xe4, 0xf0, + 0xd9, 0x41, 0xdd, 0x22, 0xb6, 0xc6, 0xa1, 0x8f, + 0x56, 0xcc, 0x3d, 0xad, 0x59, 0x3f, 0xc6, 0x3d, + 0xab, 0xbf, 0x14, 0x60, 0x91, 0x16, 0xe7, 0x8b, + 0x40, 0x80, 0xc6, 0x6c, 0xb0, 0xf1, 0x65, 0x79, + 0x12, 0x6b, 0x20, 0xd2, 0x77, 0x02, 0x3e, 0x6e, + 0xa2, 0x20, 0x3b, 0xe1, 0xa1, 0xf6, 0xf6, 0x3c, + 0xd1, 0xc8, 0x4c, 0x8f, 0xd2, 0xd9, 0xf4, 0x5f, + 0xf1, 0x1b, 0xc0, 0x9a, 0x2d, 0xa1, 0x68, 0xd9, + 0xe1, 0x49, 0xcf, 0x36, 0xa8, 0xa7, 0x63, 0x5f, + 0x9e, 0x14, 0x78, 0x6c, 0x44, 0xcc, 0x02, 0x59, + 0x34, 0x32, 0x26, 0x11, 0xcf, 0x89, 0x69, 0x41, + 0x2c, 0x09, 0x12, 0xff, 0xa9, 0x52, 0xea, 0x53, + 0x0a, 0x66, 0xe1, 0xc2, 0x86, 0x66, 0x74, 0x86, + 0xd1, 0xdc, 0xfd, 0x0b, 0xb3, 0xb6, 0x4b, 0xe9, + 0x5f, 0xec, 0x8e, 0xde, 0xfd, 0x9d, 0xbb, 0x4e, + 0x77, 0x15, 0x6c, 0xd9, 0x26, 0xd7, 0xbb, 0x60, + 0x0d, 0x00, 0x3c, 0x4d, 0x92, 0x2d, 0x92, 0xd5, + 0x59, 0xd8, 0xa6, 0xbe, 0xb6, 0x81, 0xe4, 0x6a, + 0xff, 0x8a, 0xbb, 0x3c, 0x44, 0xb0, 0x93, 0xf2, + 0x06, 0xb7, 0x90, 0xf4, 0x20, 0x7b, 0xbb, 0x7e, + 0x9f, 0xd9, 0x36, 0xa1, 0xa5, 0x74, 0x2c, 0xff, + 0xa0, 0xd9, 0xbc, 0x20, 0xde, 0xc2, 0x99, 0x4a, + 0xe3, 0xd7, 0x4f, 0x30, 0xc2, 0x0c, 0xc1, 0xbf, + 0x51, 0x46, 0x5b, 0x7a, 0x05, 0x41, 0x94, 0x55, + 0x37, 0x83, 0x7b, 0xd0, 0x3f, 0xf3, 0x9c, 0x1d, + 0x0f, 0x04, 0x32, 0x5e, 0x7e, 0xee, 0x02, 0x5c, + 0x18, 0x1f, 0xd9, 0xe2, 0x0f, 0x89, 0xc8, 0x6f, + 0x3f, 0xee, 0xc2, 0x08, 0xcc, 0x69, 0xe8, 0xb2, + 0xce, 0x82, 0x22, 0x0c, 0xc8, 0xa5, 0x02, 0x38, + 0x85, 0xfe, 0x7b, 0x8c, 0x58, 0xbb, 0x16, 0x34, + 0x7a, 0xf2, 0x76, 0xe7, 0xd2, 0x49, 0x41, 0x9c, + 0xa5, 0xc7, 0xde, 0xe4, 0x9c, 0x96, 0xd4, 0xd1, + 0xef, 0x3d, 0xd1, 0x69, 0x13, 0xb2, 0xb3, 0x39, + 0x0c, 0x55, 0x78, 0x25, 0x71, 0x47, 0xf3, 0x69, + 0xf1, 0xf0, 0x6d, 0x71, 0xc7, 0xd2, 0xf2, 0x4d, + 0xaf, 0x02, 0x31, 0x83, 0x56, 0xd2, 0x7d, 0xf4, + 0xa4, 0x8c, 0xeb, 0x1d, 0xd6, 0x20, 0xf8, 0xf6, + 0xf3, 0x4b, 0x59, 0xda, 0x9a, 0xcd, 0xe2, 0x85, + 0x8c, 0x69, 0xa1, 0xed, 0x11, 0xe9, 0xd1, 0xe2, + 0xbc, 0x40, 0xe1, 0xc8, 0x27, 0x45, 0xf5, 0xf0, + 0x7b, 0x37, 0x27, 0x6a, 0x4f, 0x11, 0x19, 0x83, + 0xbf, 0x6c, 0xcd, 0x3b, 0x49, 0xaa, 0x06, 0x86, + 0x4c, 0x26, 0x09, 0xdf, 0x7d, 0x42, 0x0e, 0xf2, + 0xee, 0xec, 0x07, 0xa1, 0x26, 0xe0, 0xb5, 0x49, + 0x04, 0x27, 0xd7, 0x5b, 0x80, 0xbb, 0x16, 0xe4, + 0x10, 0xb6, 0x5d, 0xf6, 0x0f, 0x59, 0x51, 0xb2, + 0xc6, 0xca, 0x8a, 0x8b, 0x89, 0x86, 0x18, 0x43, + 0xc6, 0xee, 0x60, 0x2b, 0x97, 0x59, 0xb6, 0x0b, + 0xe8, 0xe2, 0xa4, 0x55, 0x3e, 0x47, 0x1d, 0x54, + 0x1a, 0x6a, 0xcb, 0xdb, 0x03, 0xcf, 0x35, 0x78, + 0x3c, 0x48, 0x14, 0xcd, 0x6b, 0x61, 0xd2, 0x34, + 0x86, 0xc9, 0x03, 0xbb, 0x7f, 0x28, 0x7c, 0x43, + 0xa2, 0xd8, 0x2f, 0x81, 0x98, 0x17, 0x1e, 0xf3, + 0xd0, 0xec, 0x24, 0x26, 0xd1, 0x4d, 0xda, 0xad, + 0x7b, 0x0b, 0xe7, 0x15, 0xe3, 0x4e, 0xe3, 0xe9, + 0x73, 0x0e, 0x3f, 0xa8, 0xd1, 0xb0, 0xb3, 0xc5, + 0x89, 0x10, 0xf0, 0x6a, 0x62, 0xf9, 0xa6, 0x02, + 0x4f, 0x0a, 0x44, 0x44, 0xf4, 0xa7, 0xc7, 0x03, + 0x56, 0xa5, 0x13, 0x9d, 0x3a, 0x94, 0x56, 0xfa, + 0x17, 0xec, 0xb4, 0x5f, 0x46, 0xef, 0x2d, 0x7b, + 0x16, 0xa5, 0x71, 0x6b, 0xb3, 0xaa, 0x8c, 0x9c, + 0x12, 0x48, 0xde, 0xe2, 0x03, 0x6d, 0x19, 0x75, + 0x05, 0x02, 0xde, 0x7a, 0x41, 0x04, 0xbf, 0xdb, + 0x0c, 0xa4, 0x80, 0xe0, 0xd5, 0x1c, 0x10, 0x26, + 0xaa, 0x47, 0x2d, 0x49, 0x34, 0x06, 0x16, 0xac, + 0xe4, 0x10, 0x7f, 0x1e, 0x0f, 0x24, 0xb7, 0x43, + 0xd9, 0x0e, 0x21, 0xd3, 0x1b, 0xe8, 0xcb, 0xb3, + 0x7c, 0xf5, 0x58, 0x8c, 0xda, 0xa8, 0x90, 0x4c, + 0xf9, 0x44, 0x9c, 0xf2, 0xf5, 0x28, 0xf9, 0xc4, + 0x8e, 0xde, 0x4e, 0x7e, 0x6e, 0x70, 0xd9, 0x66, + 0xcc, 0xf5, 0xe0, 0xfb, 0x94, 0x03, 0xc5, 0x29, + 0x42, 0x7d, 0x08, 0xe6, 0xe7, 0xd7, 0x6c, 0xb0, + 0x52, 0xab, 0x6a, 0x0d, 0x5e, 0x06, 0x51, 0xcd, + 0xa5, 0xfa, 0x2f, 0x1b, 0x7c, 0xd7, 0xc3, 0xca, + 0xfe, 0x60, 0xb4, 0x51, 0x44, 0x5f, 0xe6, 0x77, + 0xb5, 0x5e, 0xb7, 0x17, 0x5a, 0xb3, 0x71, 0x88, + 0x8f, 0x22, 0x1b, 0xb6, 0x7f, 0xad, 0x4b, 0xcf, + 0x37, 0x92, 0x13, 0xa8, 0x33, 0x2f, 0xbb, 0xeb, + 0x90, 0x1d, 0xc0, 0x04, 0x14, 0x34, 0x02, 0x87, + 0x8b, 0xca, 0xed, 0x91, 0xb4, 0x12, 0xdd, 0xa9, + 0xeb, 0x6d, 0xc2, 0x84, 0x4c, 0x4b, 0xf6, 0xb2, + 0xab, 0xfd, 0x52, 0x17, 0xed, 0xcb, 0x28, 0xa8, + 0xe5, 0xf0, 0xf6, 0xef, 0xdf, 0x65, 0x66, 0x46, + 0x9b, 0xf3, 0x37, 0x35, 0xdf, 0xb1, 0x62, 0x24, + 0xf0, 0x5b, 0x4c, 0x3e, 0x4d, 0x36, 0x99, 0xea, + 0x13, 0xc2, 0xa0, 0x8c, 0xa0, 0x2b, 0xf8, 0x16, + 0x97, 0x6a, 0xc4, 0x51, 0x3a, 0x30, 0x56, 0xf1, + 0x90, 0xf7, 0x37, 0x42, 0xac, 0xb3, 0x06, 0x52, + 0x9a, 0x90, 0x8e, 0x37, 0x8e, 0xf3, 0x9e, 0xda, + 0x04, 0xf7, 0xdb, 0xd9, 0x50, 0x64, 0x97, 0x38, + 0x08, 0x03, 0x49, 0x6c, 0xc6, 0x25, 0x0f, 0x4c, + 0x6b, 0x3b, 0x67, 0xb8, 0x24, 0x21, 0x19, 0x04, + 0xe8, 0x4e, 0xa7, 0xee, 0xef, 0x97, 0x01, 0x7d, + 0xd5, 0xb1, 0x81, 0xb3, 0x6b, 0xae, 0x37, 0x6b, + 0xd5, 0x39, 0x98, 0xb7, 0x94, 0xa2, 0xda, 0x8b, + 0xc3, 0x66, 0xc5, 0x64, 0x03, 0x23, 0x11, 0x97, + 0x2f, 0xfe, 0xaf, 0x53, 0x11, 0x3f, 0xfe, 0xe9, + 0x78, 0x24, 0x2e, 0xcd, 0x6a, 0xbf, 0x0e, 0xb8, + 0xf1, 0xb9, 0x78, 0x40, 0x65, 0xee, 0x5e, 0xe9, + 0x29, 0x78, 0xe3, 0x9f, 0x84, 0x31, 0x72, 0x9a, + 0x62, 0x0a, 0x8f, 0xae, 0x0b, 0x2b, 0x2e, 0x10, + 0xa6, 0xc0, 0x59, 0xa5, 0x37, 0x30, 0xe9, 0x47, + 0x71, 0x8f, 0x2c, 0x1a, 0x9a, 0x08, 0x8c, 0x80, + 0x50, 0x86, 0x76, 0x4d, 0x2a, 0x74, 0xed, 0x83, + 0xb9, 0x28, 0xca, 0xd9, 0xe1, 0xe1, 0x17, 0x83, + 0x7b, 0x68, 0x94, 0x75, 0x13, 0x0b, 0xf5, 0x6e, + 0xc0, 0x15, 0xff, 0xab, 0xa5, 0x7b, 0x16, 0x43, + 0x96, 0x2e, 0xc3, 0x80, 0xec, 0xd0, 0x33, 0x37, + 0x3b, 0x81, 0x7e, 0x10, 0x2e, 0xe1, 0x96, 0xc9, + 0xbf, 0x72, 0xf3, 0xd8, 0x78, 0x5a, 0xde, 0x4e, + 0x9c, 0x1c, 0xf9, 0x1d, 0xcc, 0x1b, 0xc7, 0x9f, + 0xc8, 0x19, 0x62, 0x4a, 0xf0, 0xbb, 0x10, 0x52, + 0x55, 0xeb, 0x88, 0x19, 0xdf, 0x25, 0x4d, 0xb0, + 0x46, 0xaa, 0x63, 0x70, 0x4b, 0xb9, 0xc3, 0x10, + 0x6a, 0xf4, 0x52, 0x72, 0x80, 0x49, 0xff, 0xec, + 0x36, 0x0d, 0x7d, 0x0e, 0x99, 0x0c, 0xc6, 0x95, + 0xa1, 0xbc, 0x10, 0xa9, 0xe1, 0x10, 0xb2, 0xad, + 0x0e, 0x1b, 0x6a, 0x9f, 0x20, 0x30, 0xad, 0x04, + 0xe5, 0xaa, 0x3e, 0x87, 0xf3, 0xfa, 0x54, 0x9e, + 0xc7, 0x1d, 0x39, 0xce, 0x27, 0x6e, 0x59, 0x0e, + 0x2a, 0xbb, 0xe3, 0xa1, 0x93, 0xdb, 0x4b, 0xe6, + 0xbe, 0x29, 0xc1, 0x96, 0x90, 0x42, 0x1f, 0x77, + 0xa2, 0x97, 0x23, 0x52, 0x5a, 0x40, 0x1b, 0xf0, + 0x31, 0x97, 0x76, 0x12, 0xfb, 0xf5, 0x24, 0x87, + 0x11, 0x46, 0x25, 0xc9, 0x17, 0xb9, 0xe7, 0x39, + 0xf6, 0xd9, 0x94, 0x57, 0x09, 0xf0, 0x18, 0x16, + 0x9c, 0xf1, 0x01, 0x47, 0x98, 0x2d, 0x38, 0x8c, + 0xbb, 0x45, 0x53, 0x34, 0xfe, 0x7c, 0xa9, 0x0e, + 0x99, 0x3e, 0x47, 0xcb, 0xf9, 0xd9, 0x56, 0x35, + 0xb7, 0x1f, 0x37, 0xc3, 0xc2, 0x2f, 0x95, 0xff, + 0x9e, 0x1a, 0x85, 0xd4, 0x2a, 0x91, 0x28, 0x63, + 0xb8, 0x98, 0x74, 0x53, 0x50, 0xf5, 0x3c, 0xdf, + 0xc7, 0x36, 0x77, 0xf8, 0xc0, 0x95, 0x7d, 0x7c, + 0x02, 0x20, 0x9d, 0x9e, 0x47, 0x8a, 0xed, 0x70, + 0x95, 0x08, 0xc1, 0x51, 0x6b, 0x2f, 0xa3, 0xbb, + 0xb3, 0x00, 0xaf, 0x6c, 0x25, 0xaf, 0x2f, 0x83, + 0x36, 0xae, 0xc9, 0xbe, 0xde, 0x91, 0x24, 0xef, + 0x9d, 0x5d, 0x77, 0xa2, 0x6c, 0x79, 0x3e, 0xb2, + 0x83, 0x09, 0x67, 0xa3, 0x46, 0x42, 0xbf, 0xdd, + 0x50, 0xbc, 0xd2, 0x9a, 0xb3, 0xb3, 0x78, 0xe4, + 0xb1, 0xb2, 0x1c, 0x43, 0xaa, 0x48, 0x2e, 0x10, + 0x60, 0x19, 0x94, 0xf0, 0xb9, 0xf7, 0x19, 0xa2, + 0x54, 0x9d, 0x72, 0xcd, 0x25, 0x1c, 0x37, 0xb8, + 0x20, 0xe5, 0x66, 0xa0, 0xf7, 0xce, 0xfd, 0x5d, + 0x84, 0xb1, 0x60, 0xea, 0x41, 0xe5, 0xd2, 0x40, + 0x59, 0x0c, 0xcc, 0x47, 0x4c, 0x82, 0x94, 0x6e, + 0xe5, 0xfc, 0x4e, 0x0b, 0x6a, 0x40, 0x67, 0x40, + 0xab, 0x4e, 0x3c, 0x80, 0x2e, 0x71, 0xf2, 0x32, + 0xf7, 0x02, 0x7a, 0x88, 0x5e, 0x35, 0x3f, 0x02, + 0x57, 0x47, 0xed, 0xd2, 0x61, 0xfe, 0x07, 0x3a, + 0x37, 0xb1, 0x39, 0xb6, 0x97, 0x4d, 0xd2, 0xa8, + 0xfd, 0xdc, 0xaa, 0x7f, 0x2b, 0x84, 0x37, 0x91, + 0xef, 0xc4, 0x01, 0xfa, 0xc7, 0x6e, 0x17, 0x3d, + 0x44, 0xda, 0xfd, 0xd6, 0xf6, 0xd3, 0xfe, 0x28, + 0x32, 0xf1, 0xae, 0x49, 0x9a, 0xe9, 0x70, 0xe6, + 0x5c, 0x66, 0x20, 0xb1, 0xea, 0xbb, 0x40, 0x05, + 0xee, 0x90, 0xc5, 0xe6, 0xf2, 0x94, 0x43, 0x06, + 0x1e, 0xa7, 0xce, 0xb1, 0x41, 0xba, 0xc2, 0xeb, + 0x83, 0x7c, 0x63, 0x2c, 0x87, 0x09, 0x51, 0xb4, + 0x03, 0x5d, 0x8c, 0x23, 0x6f, 0x00, 0xc1, 0x73, + 0x42, 0x94, 0xe8, 0x28, 0x2f, 0x9a, 0x16, 0x3b, + 0x98, 0x21, 0x7e, 0x21, 0x02, 0x7a, 0xcf, 0x30, + 0x60, 0x4a, 0x68, 0xc2, 0xe2, 0x2a, 0x30, 0x98, + 0xce, 0x44, 0x67, 0x82, 0xfa, 0x8e, 0x4e, 0xca, + 0x89, 0x59, 0x6d, 0x2c, 0xbe, 0xeb, 0xe1, 0xd2, + 0xd7, 0xda, 0xf5, 0x69, 0xe3, 0x1e, 0x2e, 0xd3, + 0x59, 0x9a, 0x0c, 0xea, 0xc5, 0xc1, 0x2b, 0x81, + 0x02, 0x86, 0xd4, 0x3c, 0x52, 0xe6, 0xf6, 0x34, + 0x9b, 0x5b, 0x1b, 0x2f, 0x6c, 0x9e, 0x4f, 0x40, + 0x3e, 0xa9, 0xb1, 0x1c, 0x8b, 0x5e, 0x2e, 0xe2, + 0xd3, 0x96, 0xf9, 0x3f, 0x03, 0x12, 0xd2, 0x4b, + 0x62, 0xe3, 0x04, 0x68, 0x73, 0x8c, 0xb3, 0xfd, + 0xc2, 0x20, 0x56, 0x77, 0x1f, 0xa7, 0x76, 0xef, + 0x8e, 0x24, 0xf9, 0x90, 0x59, 0x3f, 0x53, 0x70, + 0x8d, 0x59, 0x94, 0xef, 0x68, 0x12, 0xaa, 0x61, + 0x60, 0x10, 0xcd, 0xc2, 0x08, 0x89, 0x2b, 0x33, + 0x0a, 0x62, 0xed, 0x7b, 0x67, 0x9b, 0x27, 0xa3, + 0x2b, 0x3c, 0xf0, 0x77, 0x20, 0x27, 0x36, 0xd3, + 0x38, 0x62, 0xd9, 0xf3, 0x9c, 0x20, 0x2e, 0xaa, + 0x96, 0xe3, 0xa7, 0x32, 0xdd, 0xf1, 0x40, 0x82, + 0x9b, 0xbb, 0x62, 0x8a, 0xb8, 0xa7, 0xc3, 0x6d, + 0x2b, 0x57, 0x11, 0x5c, 0x14, 0x22, 0x49, 0x34, + 0x64, 0x15, 0x80, 0xc7, 0x16, 0xfa, 0x2b, 0xae, + 0xed, 0x47, 0xdb, 0x5b, 0x56, 0xe0, 0xa8, 0x45, + 0x75, 0xd1, 0x56, 0x76, 0x65, 0x58, 0x1a, 0xe2, + 0xd8, 0xef, 0xa9, 0x19, 0x05, 0xdb, 0xca, 0x80, + 0xf6, 0x0c, 0xd2, 0x02, 0xe1, 0x3c, 0xd8, 0x20, + 0xeb, 0xaf, 0xaf, 0x99, 0xd8, 0x49, 0x5c, 0xf5, + 0x42, 0xf6, 0x44, 0x80, 0x99, 0xa1, 0xeb, 0x0e, + 0x4f, 0x53, 0xb9, 0xd3, 0x4f, 0xfc, 0x59, 0x2d, + 0x42, 0x64, 0x1e, 0xc4, 0x33, 0x8e, 0x5e, 0x13, + 0xf2, 0x83, 0x12, 0xa5, 0xcc, 0x7d, 0x31, 0x62, + 0x64, 0x76, 0x61, 0x1c, 0x58, 0xce, 0x04, 0xee, + 0xfb, 0x7c, 0xcc, 0xd0, 0x4a, 0x0e, 0x36, 0x8a, + 0x96, 0x83, 0x3c, 0x22, 0xa4, 0xa6, 0xa5, 0x07, + 0x88, 0xea, 0x13, 0x76, 0x88, 0x6e, 0x58, 0x0b, + 0xa0, 0x0e, 0x68, 0xc8, 0xa1, 0x88, 0x1a, 0x26, + 0x72, 0xed, 0x24, 0xf1, 0xb6, 0x7c, 0x5d, 0x6a, + 0xe7, 0x5b, 0x7d, 0x20, 0x14, 0xea, 0x27, 0x60, + 0x0d, 0x9f, 0xb0, 0x9a, 0x75, 0xa5, 0x88, 0x25, + 0xe9, 0xab, 0x94, 0x0e, 0x04, 0x69, 0xa4, 0xf5, + 0x04, 0x81, 0xf9, 0x58, 0x34, 0x7a, 0x44, 0x71, + 0x0f, 0xd7, 0x1f, 0x40, 0xaa, 0x8c, 0xc7, 0x6f, + 0x56, 0x42, 0x3c, 0xbd, 0x00, 0x7e, 0xef, 0x92, + 0xa5, 0xa5, 0x16, 0xc0, 0xcc, 0x2a, 0x9c, 0x54, + 0x6b, 0xb2, 0xa6, 0x8e, 0x7d, 0x56, 0x07, 0x74, + 0x4d, 0xba, 0xeb, 0xed, 0x48, 0x82, 0x58, 0xfa, + 0xdc, 0xef, 0x76, 0x6b, 0xc4, 0x1a, 0xf1, 0x0c, + 0x51, 0x0b, 0xd5, 0x41, 0xdf, 0x15, 0xe3, 0x0d, + 0xfc, 0x4e, 0xdb, 0x33, 0x0c, 0xc6, 0xcb, 0xc3, + 0x00, 0x91, 0xf3, 0x8f, 0xa9, 0x05, 0x81, 0x7f, + 0x83, 0x77, 0xd1, 0x69, 0x4f, 0xfb, 0xab, 0x76, + 0x4d, 0x95, 0xe1, 0xa3, 0x8f, 0x5e, 0xf6, 0x49, + 0x89, 0x36, 0x03, 0x18, 0x73, 0x73, 0xd5, 0xee, + 0xde, 0xe4, 0x25, 0xf3, 0x15, 0x34, 0xca, 0xc3, + 0x63, 0xbe, 0x63, 0xab, 0x75, 0x33, 0xc0, 0x88, + 0x32, 0xa4, 0xae, 0xfb, 0x71, 0x65, 0xb7, 0x8c, + 0x70, 0x99, 0x02, 0x9a, 0x79, 0x69, 0x30, 0xc7, + 0xe7, 0xde, 0xd2, 0x47, 0xe5, 0x81, 0x70, 0xbe, + 0x63, 0x45, 0x5c, 0x6e, 0x76, 0xdd, 0xd2, 0xf9, + 0xa6, 0xf7, 0x51, 0xca, 0x48, 0x77, 0xdd, 0x9f, + 0x93, 0x8e, 0x14, 0xe2, 0xd7, 0x17, 0xb0, 0x5e, + 0x0d, 0x49, 0xb7, 0x32, 0x78, 0x9a, 0xbe, 0x8a, + 0xcd, 0x16, 0x56, 0x35, 0x51, 0xfc, 0x1b, 0xb5, + 0x10, 0x59, 0x0e, 0xb5, 0x22, 0x98, 0xcf, 0x5f, + 0x53, 0xae, 0xbf, 0xe5, 0x8d, 0xa0, 0xaa, 0xe3, + 0xa0, 0x91, 0x7b, 0xd4, 0xd5, 0x1d, 0xc4, 0x81, + 0x66, 0xb0, 0x69, 0xef, 0x1c, 0x7c, 0x5b, 0x1f, + 0x6e, 0x9a, 0x97, 0x48, 0xc6, 0xde, 0xfe, 0x64, + 0x93, 0x84, 0xba, 0x63, 0xa4, 0xe3, 0x0d, 0xa1, + 0xda, 0x2b, 0xbd, 0xbe, 0xa6, 0xc1, 0xfb, 0xbb, + 0xb4, 0x05, 0x38, 0x8e, 0x0c, 0x4c, 0x32, 0xd4, + 0x92, 0xc1, 0x48, 0xed, 0x05, 0x5e, 0x8c, 0x3f, + 0xb1, 0x49, 0x4e, 0x77, 0x9e, 0x6c, 0x11, 0xfc, + 0x14, 0x8c, 0xbe, 0x27, 0x5f, 0xfb, 0x9b, 0x82, + 0xbc, 0xdf, 0x7e, 0x10, 0x9d, 0x75, 0x89, 0xfa, + 0xc7, 0x23, 0xdb, 0x4e, 0x39, 0xba, 0xe6, 0x75, + 0xdf, 0x36, 0x6d, 0x40, 0x36, 0xbe, 0x43, 0x72, + 0x0f, 0x04, 0x3c, 0xf1, 0xc8, 0x4c, 0x33, 0x94, + 0xb4, 0x98, 0x3e, 0x47, 0x78, 0x7e, 0x5b, 0x9b, + 0x64, 0xa7, 0x5e, 0x2c, 0x43, 0x7b, 0x98, 0xfa, + 0xdb, 0x2e, 0x69, 0xaf, 0x7e, 0xb9, 0x42, 0x93, + 0x93, 0x21, 0xf5, 0x9b, 0x39, 0x40, 0xca, 0x3e, + 0xfc, 0xb3, 0x4a, 0xef, 0x13, 0xf2, 0xe3, 0x7b, + 0xfa, 0x5f, 0x84, 0xf4, 0x13, 0x2e, 0x00, 0x7c, + 0x31, 0x9d, 0x16, 0xbd, 0x78, 0x39, 0x9e, 0x88, + 0x81, 0x42, 0x36, 0xf7, 0x05, 0x8a, 0x49, 0xe6, + 0xb6, 0x60, 0xdd, 0xf0, 0xe3, 0xef, 0x70, 0x21, + 0x63, 0x17, 0xca, 0xb9, 0xbd, 0x17, 0x0d, 0xcb, + 0x7e, 0xaf, 0xdd, 0x2d, 0x8b, 0x5f, 0xef, 0xcd, + 0xe7, 0xce, 0xb6, 0x8a, 0x5e, 0xbb, 0xed, 0x11, + 0x7d, 0x8a, 0xd9, 0x7b, 0xaf, 0x55, 0xcc, 0x04, + 0x87, 0x71, 0xae, 0x9c, 0xe2, 0x57, 0x8d, 0xc8, + 0x7a, 0x50, 0xed, 0x6e, 0x8e, 0x44, 0x80, 0xa3, + 0x06, 0xad, 0xa7, 0xab, 0xa1, 0x86, 0x7c, 0xe6, + 0xc6, 0x0d, 0xbf, 0x74, 0xcb, 0xbe, 0x9d, 0xa6, + 0x39, 0x7a, 0x40, 0x5d, 0x79, 0x60, 0xe6, 0xae, + 0x68, 0x66, 0x9b, 0x50, 0xd4, 0x14, 0xff, 0x7d, + 0x08, 0xa3, 0x1e, 0x14, 0x81, 0x28, 0xbb, 0x0a, + 0x92, 0xa7, 0xfd, 0x5e, 0x81, 0x65, 0x2c, 0x39, + 0x81, 0x8a, 0xf7, 0x71, 0x5c, 0xab, 0x35, 0xae, + 0xc9, 0x04, 0xf8, 0x6f, 0xd6, 0x56, 0x4f, 0x44, + 0x81, 0x54, 0x96, 0x2c, 0x53, 0x73, 0xb1, 0xf7, + 0x50, 0x7a, 0xc6, 0xdb, 0x7c, 0x23, 0x70, 0x76, + 0x81, 0x44, 0xcf, 0x62, 0x74, 0x2b, 0xc2, 0x87, + 0x49, 0x7d, 0x32, 0xd4, 0x27, 0xcb, 0xbf, 0x41, + 0xc5, 0x68, 0xf6, 0xba, 0xfa, 0x59, 0x32, 0x7e, + 0x17, 0x9c, 0x8c, 0x0a, 0xd5, 0xa3, 0xb2, 0x2c, + 0x91, 0xc0, 0xda, 0x7f, 0xbc, 0x51, 0xe4, 0xfb, + 0x0d, 0x66, 0x53, 0x8c, 0x22, 0xfa, 0xa6, 0xae, + 0xf1, 0xbd, 0x38, 0x30, 0xe0, 0x63, 0xea, 0xfc, + 0x8a, 0x52, 0xbd, 0x17, 0xeb, 0x42, 0x2c, 0xb5, + 0x4c, 0x8e, 0x80, 0xb6, 0xe5, 0x8c, 0xdc, 0xea, + 0xe5, 0x64, 0x09, 0xe4, 0x5f, 0x59, 0x97, 0x2d, + 0x33, 0x70, 0x7e, 0xb6, 0xc7, 0x03, 0x83, 0xca, + 0xd2, 0x5b, 0xe8, 0x5c, 0xcd, 0xf6, 0xe1, 0xde, + 0xd6, 0xbf, 0x31, 0x6d, 0xfa, 0xaf, 0x38, 0x9a, + 0x4e, 0xdd, 0xfb, 0xd5, 0x60, 0x80, 0xf8, 0x4b, + 0x15, 0x56, 0x62, 0x33, 0x4a, 0x7f, 0x87, 0x4c, + 0x5b, 0xca, 0xb8, 0xf0, 0x3f, 0xc3, 0xdc, 0x53, + 0xd8, 0xa8, 0xf3, 0x84, 0xfa, 0x04, 0x21, 0x75, + 0x67, 0x8c, 0x82, 0xd6, 0x38, 0x70, 0xe2, 0xbf, + 0x82, 0x8b, 0xa8, 0x4a, 0x7d, 0xb8, 0x11, 0x8b, + 0x0a, 0xe4, 0x70, 0xac, 0x2f, 0x3d, 0x2d, 0x7c, + 0xb9, 0x70, 0x96, 0xc5, 0xec, 0x40, 0x43, 0x55, + 0x4d, 0xc1, 0x3c, 0x68, 0x1c, 0x1d, 0x88, 0x2f, + 0x2d, 0xdd, 0xed, 0x7d, 0x29, 0x53, 0xdb, 0x25, + 0x89, 0x3c, 0xeb, 0x94, 0xc3, 0xd7, 0x4d, 0xd8, + 0x80, 0xef, 0x9f, 0x25, 0xb1, 0x8f, 0x69, 0x64, + 0xa2, 0xc5, 0x02, 0xff, 0x07, 0xc0, 0x2e, 0xf2, + 0xd4, 0x82, 0x97, 0xaf, 0x79, 0x20, 0xe4, 0xc6, + 0x3e, 0xd2, 0xcd, 0xa7, 0x49, 0x01, 0xc6, 0xa2, + 0x05, 0x42, 0x20, 0x1f, 0xf9, 0x7a, 0x50, 0x83, + 0x77, 0x98, 0xa4, 0x31, 0x73, 0x5a, 0x9e, 0x67, + 0x53, 0xdb, 0xd7, 0xa7, 0x8d, 0xd0, 0x4a, 0x71, + 0x5b, 0x80, 0x4a, 0xcd, 0x07, 0xd6, 0x00, 0x4c, + 0x29, 0x42, 0x54, 0x68, 0x9d, 0x2b, 0x7e, 0x6e, + 0x0b, 0x17, 0xb9, 0x41, 0xc2, 0x64, 0x5c, 0x8f, + 0x70, 0x4b, 0x2e, 0xe4, 0x26, 0x9a, 0xf8, 0x36, + 0x2c, 0x33, 0xba, 0x83, 0x01, 0x69, 0x75, 0x30, + 0xc7, 0xdc, 0xad, 0xdc, 0xf7, 0x35, 0xe6, 0xad, + 0x6c, 0xa7, 0xe9, 0xb2, 0x4f, 0xe1, 0xef, 0xef, + 0x59, 0xcf, 0xc5, 0x78, 0x47, 0x51, 0xfb, 0xc0, + 0xac, 0x1d, 0x34, 0xb9, 0x5a, 0x76, 0x4f, 0x2b, + 0xd8, 0xf8, 0x5d, 0x79, 0x75, 0x7a, 0x74, 0x4a, + 0xb8, 0x57, 0xed, 0xa1, 0x0f, 0x72, 0x9b, 0x41, + 0x41, 0x95, 0x5e, 0x55, 0xe4, 0x16, 0xf2, 0x12, + 0x08, 0xaf, 0xd9, 0x59, 0xf1, 0x46, 0x46, 0x22, + 0xf7, 0xb8, 0xd3, 0x19, 0xdf, 0x84, 0x39, 0xd4, + 0x13, 0xe5, 0x55, 0x57, 0x51, 0x8a, 0x5c, 0xc6, + 0x40, 0xad, 0x21, 0xa5, 0xee, 0x7a, 0x54, 0x2b, + 0xbe, 0xd4, 0x9c, 0x0b, 0x6d, 0x84, 0x15, 0x14, + 0xe7, 0xd2, 0xdb, 0xe3, 0xb7, 0xb5, 0x38, 0x8d, + 0xba, 0x7f, 0x88, 0x0f, 0xf5, 0x99, 0x9f, 0xde, + 0xc3, 0x41, 0x5d, 0x1e, 0xc3, 0xf9, 0x54, 0x12, + 0x3b, 0x3e, 0x84, 0x52, 0xe4, 0x79, 0x6c, 0x2a, + 0x8c, 0x99, 0xa9, 0x05, 0x0d, 0xad, 0x96, 0xec, + 0xe1, 0xea, 0x5e, 0xa6, 0x9e, 0xeb, 0x6d, 0x5e, + 0xaa, 0x3b, 0x58, 0x20, 0xf1, 0xa7, 0x1a, 0x90, + 0x4d, 0x06, 0x63, 0x1c, 0x07, 0xd0, 0x64, 0xef, + 0xdb, 0x0e, 0x58, 0x60, 0x15, 0xab, 0x99, 0x9b, + 0xd8, 0xc4, 0xf0, 0xfc, 0x18, 0xcb, 0x21, 0xc4, + 0x4c, 0x97, 0xf8, 0xbf, 0x34, 0xed, 0x53, 0x62, + 0x4f, 0xb9, 0xc2, 0xc1, 0x3e, 0x5d, 0x2a, 0x29, + 0x86, 0xde, 0x8f, 0xe8, 0x72, 0xc9, 0xf1, 0xc2, + 0xec, 0x1f, 0x24, 0xf9, 0xf4, 0xef, 0x64, 0xae, + 0x6c, 0x6d, 0x34, 0x8c, 0x84, 0xb7, 0x85, 0xa0, + 0x6a, 0x7a, 0x14, 0x07, 0xb0, 0x27, 0x9f, 0x68, + 0xc9, 0x31, 0x97, 0xbe, 0xb9, 0x97, 0x28, 0x5a, + 0x82, 0x4c, 0xe9, 0x1a, 0x3a, 0x1e, 0xe9, 0x46, + 0x06, 0x33, 0x78, 0xc2, 0x91, 0xc2, 0x1f, 0x1d, + 0x10, 0x7e, 0x33, 0x30, 0x31, 0xc4, 0x5f, 0xab, + 0x40, 0xf0, 0x6a, 0x6c, 0x94, 0xc5, 0x4d, 0x82, + 0x57, 0xe7, 0x13, 0x43, 0x7d, 0x6b, 0xb5, 0xe4, + 0x4f, 0xa2, 0xa4, 0x0a, 0x1e, 0xee, 0x86, 0xe5, + 0x5c, 0x5f, 0x49, 0xba, 0x0c, 0xd8, 0x5d, 0x9d, + 0xed, 0xba, 0x74, 0xe6, 0x01, 0xb9, 0xed, 0xb8, + 0x67, 0xdc, 0x88, 0x3d, 0xf0, 0xe0, 0x84, 0xb0, + 0x89, 0xaa, 0x6d, 0xe3, 0x7d, 0x6d, 0xf2, 0x6d, + 0xa3, 0x2d, 0x08, 0xf1, 0xb9, 0x18, 0x3b, 0xfa, + 0x61, 0x09, 0x85, 0xfa, 0x1d, 0x6f, 0x8f, 0x5c, + 0x08, 0xfe, 0xa9, 0x50, 0x70, 0x26, 0x0f, 0xc1, + 0xf6, 0x2e, 0x82, 0x5a, 0x15, 0x86, 0xdb, 0xe8, + 0xd1, 0xe5, 0xa2, 0x59, 0x94, 0x86, 0xe8, 0x48, + 0x3a, 0x74, 0x72, 0x92, 0xc2, 0xa1, 0x1e, 0x7a, + 0x3f, 0xc3, 0xc5, 0x89, 0xd9, 0x9a, 0x90, 0x42, + 0x6d, 0x8e, 0x07, 0x63, 0x34, 0x63, 0x2b, 0xe8, + 0xc8, 0xca, 0xb1, 0xca, 0xa8, 0x77, 0x9b, 0xbd, + 0x6b, 0xa6, 0xc7, 0x66, 0x25, 0x36, 0x84, 0x15, + 0x11, 0x39, 0x3c, 0x27, 0xdc, 0x30, 0xfe, 0xcb, + 0x12, 0x46, 0xdf, 0xee, 0x78, 0xf5, 0xd9, 0x53, + 0xf8, 0x19, 0x4d, 0x8c, 0xb3, 0xe4, 0x97, 0xc9, + 0x99, 0xe2, 0xbb, 0xa6, 0xa4, 0x86, 0x66, 0xc9, + 0x40, 0xf4, 0x36, 0xd6, 0x2a, 0xaf, 0x01, 0xe4, + 0x35, 0x3b, 0x89, 0x2a, 0xbb, 0x41, 0x06, 0x79, + 0xd0, 0x84, 0xbf, 0xd3, 0x30, 0x31, 0x20, 0x8d, + 0xb2, 0xab, 0xe2, 0x46, 0x41, 0x3b, 0xd2, 0x94, + 0x58, 0xa4, 0x45, 0xa3, 0x5f, 0xaa, 0xb8, 0x86, + 0xf5, 0x14, 0xf5, 0x3d, 0xb3, 0x44, 0xec, 0xe1, + 0xa7, 0xf8, 0x69, 0x10, 0x3a, 0xc0, 0x5e, 0xbf, + 0xf3, 0xf3, 0x65, 0x34, 0x41, 0x3e, 0x03, 0x80, + 0xbd, 0x2d, 0x70, 0xe5, 0x25, 0x40, 0x01, 0x2b, + 0x8b, 0x07, 0x98, 0xb6, 0x0d, 0xa5, 0x2f, 0x2c, + 0xc5, 0x77, 0x62, 0x7b, 0x89, 0x4f, 0xfb, 0x8e, + 0x8e, 0x62, 0xb7, 0x80, 0xfe, 0x8c, 0x43, 0x95, + 0x56, 0x5f, 0x5c, 0x4b, 0x6c, 0x4c, 0x61, 0x9b, + 0x8b, 0xa3, 0xd0, 0xd6, 0xef, 0x0d, 0x1b, 0x2c, + 0x65, 0x86, 0x8e, 0x99, 0xd7, 0xdc, 0xfd, 0x24, + 0x5f, 0x66, 0x6a, 0xb6, 0xc6, 0xe4, 0x24, 0x34, + 0x46, 0x4f, 0xa0, 0xb5, 0xdf, 0x08, 0x33, 0x37, + 0x73, 0xa4, 0xa7, 0xb3, 0x0a, 0x23, 0x27, 0x39, + 0x49, 0x4d, 0x72, 0xd6, 0xdc, 0x60, 0x63, 0x89, + 0xb0, 0xb2, 0xce, 0xdc, 0x11, 0x5c, 0x72, 0x82, + 0x9a, 0x9d, 0xcc, 0xe5, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x0f, 0x16, 0x1d, 0x24, + 0x2d, 0x34, 0x3c, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa87", + .pk_len =3D DILITHIUM87_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM87_PUBLICKEYBYTES]){ + 0x32, 0x34, 0xe3, 0x52, 0x81, 0xc5, 0x69, 0x1b, + 0x0f, 0xb2, 0xb2, 0x44, 0x0b, 0xeb, 0x56, 0xcd, + 0x74, 0x0e, 0xb7, 0x30, 0x81, 0x42, 0xa3, 0x78, + 0x6c, 0x57, 0x88, 0x93, 0xc3, 0x48, 0xf3, 0x95, + 0x61, 0x20, 0xc7, 0x7c, 0xd3, 0xfa, 0x9f, 0x7a, + 0x8b, 0x2c, 0x64, 0xaf, 0x2b, 0x1c, 0xda, 0xb4, + 0x34, 0x33, 0xd9, 0x8e, 0x1c, 0xdb, 0x82, 0xfd, + 0x58, 0xd5, 0x76, 0xf3, 0x74, 0x0b, 0x81, 0x12, + 0xab, 0x15, 0x08, 0xe3, 0x14, 0x75, 0xff, 0x38, + 0x1e, 0x6c, 0x1f, 0x2c, 0x8c, 0x20, 0x57, 0xf7, + 0xc5, 0x73, 0x85, 0x9c, 0x54, 0x7e, 0x8f, 0x64, + 0x82, 0xf7, 0x53, 0x26, 0x1a, 0xad, 0x1a, 0xc2, + 0x04, 0x25, 0x67, 0xae, 0x7c, 0x26, 0x0f, 0xf9, + 0xe0, 0xb4, 0x0c, 0x7c, 0x91, 0xf5, 0x5f, 0x17, + 0xfc, 0xdc, 0xb9, 0x6c, 0x52, 0x52, 0x6d, 0xb7, + 0x78, 0xf8, 0xa1, 0x0d, 0x35, 0xe9, 0x71, 0xa1, + 0xad, 0x4a, 0xa3, 0x0d, 0x41, 0xaf, 0x2e, 0x82, + 0xf6, 0x24, 0xaf, 0x46, 0x77, 0xa5, 0x05, 0xd3, + 0xc3, 0xf0, 0xb9, 0xc7, 0x0c, 0x42, 0x42, 0xa2, + 0x5f, 0x2b, 0x93, 0xc9, 0xce, 0x05, 0x2c, 0x83, + 0xd4, 0x1a, 0xf0, 0x3b, 0x72, 0x84, 0xcc, 0xff, + 0x6a, 0x39, 0xdb, 0xb4, 0xdf, 0xc0, 0x6c, 0xba, + 0x42, 0x55, 0x7f, 0x2d, 0x09, 0x65, 0x4a, 0x65, + 0x7a, 0xa3, 0xbc, 0xdc, 0x2f, 0x69, 0x06, 0x76, + 0x4e, 0xe0, 0x08, 0x56, 0xb1, 0x2c, 0x46, 0x71, + 0xb1, 0xc2, 0x94, 0x76, 0xcb, 0x27, 0xd1, 0x5a, + 0x32, 0x1b, 0x1a, 0xd0, 0x54, 0xac, 0xa9, 0x73, + 0xd3, 0x95, 0x4b, 0xe0, 0x1b, 0x3a, 0x48, 0xd9, + 0x90, 0x6f, 0x6d, 0x82, 0x95, 0x7c, 0xf1, 0x8f, + 0xec, 0x67, 0xbc, 0x72, 0x91, 0x93, 0x52, 0xdb, + 0x48, 0x34, 0x16, 0x57, 0xb2, 0x7d, 0x5b, 0x56, + 0xce, 0x33, 0x97, 0x47, 0xd4, 0xee, 0x97, 0x0b, + 0x39, 0xd4, 0xf0, 0x0b, 0x29, 0x74, 0x29, 0xab, + 0x66, 0xb6, 0x0d, 0xe5, 0x0f, 0xed, 0xfa, 0x8d, + 0x4d, 0xe4, 0x93, 0x40, 0xf3, 0x51, 0x14, 0x78, + 0x40, 0x25, 0x09, 0x6f, 0xdb, 0xea, 0xa8, 0x94, + 0x45, 0xaa, 0xbc, 0x09, 0xea, 0x92, 0xcd, 0x90, + 0xc2, 0xe5, 0xa8, 0x66, 0xba, 0x8f, 0x49, 0x18, + 0xa4, 0x7c, 0xc2, 0xc6, 0xa4, 0xb4, 0xed, 0xcd, + 0xb0, 0x87, 0xa2, 0xc7, 0x41, 0xac, 0xd1, 0xdc, + 0x83, 0x12, 0xde, 0x71, 0x81, 0x65, 0x4c, 0x2f, + 0xad, 0xca, 0xb4, 0x68, 0x47, 0x64, 0xa2, 0x7e, + 0x8c, 0xee, 0xfe, 0x4a, 0xca, 0xb0, 0x05, 0xf3, + 0x21, 0xb8, 0xca, 0x4a, 0x76, 0x6b, 0x73, 0x8d, + 0xed, 0x53, 0x02, 0x6d, 0x79, 0x42, 0x15, 0xed, + 0xb7, 0xb9, 0xff, 0x18, 0x2b, 0x53, 0x0d, 0xf4, + 0x29, 0x35, 0xe3, 0x5e, 0xc2, 0x49, 0x1c, 0x71, + 0x3d, 0x80, 0xa0, 0x56, 0x59, 0x19, 0xe4, 0x44, + 0x67, 0x10, 0x00, 0x22, 0xb2, 0x9b, 0x7a, 0xfa, + 0xbd, 0x0a, 0xdf, 0xe1, 0x7d, 0x57, 0xdf, 0xac, + 0x3f, 0xcc, 0xb3, 0x85, 0xd9, 0x63, 0xbc, 0xd8, + 0xd0, 0xa9, 0x5b, 0xd3, 0xd3, 0x82, 0x72, 0x21, + 0x5c, 0x7f, 0xe2, 0xba, 0x1e, 0x54, 0x99, 0x3a, + 0x29, 0x9e, 0x66, 0x9c, 0x3d, 0xb0, 0xb2, 0xec, + 0x85, 0xee, 0x9d, 0xbb, 0x81, 0xb8, 0xb7, 0x52, + 0x10, 0xb0, 0xa0, 0x18, 0x28, 0xd0, 0x83, 0x34, + 0x8c, 0xbe, 0x3e, 0x69, 0xfb, 0xad, 0x5c, 0x53, + 0xd9, 0x67, 0x60, 0x2a, 0x49, 0x2d, 0x68, 0xe7, + 0x0b, 0x37, 0xdd, 0xb5, 0xa0, 0xa0, 0x32, 0x6e, + 0xa2, 0x1e, 0x18, 0x19, 0x2c, 0x3c, 0x5d, 0x7e, + 0x55, 0x7b, 0x03, 0x70, 0xeb, 0x70, 0x72, 0x16, + 0x1b, 0x2f, 0x28, 0xe0, 0xc6, 0x4a, 0x4f, 0xea, + 0x76, 0x20, 0x98, 0x09, 0x20, 0xf3, 0x01, 0x23, + 0xcd, 0x96, 0x35, 0x33, 0xb6, 0x01, 0xa1, 0xd5, + 0x2e, 0x5a, 0x96, 0x9c, 0xa0, 0xf2, 0x80, 0x76, + 0x0a, 0x14, 0x53, 0xd9, 0xfc, 0x61, 0x4c, 0x48, + 0xce, 0xfd, 0xa6, 0xf4, 0x3c, 0x2a, 0xef, 0x8e, + 0x8c, 0xb4, 0xb3, 0xa2, 0x8e, 0x1a, 0x29, 0x32, + 0xb2, 0xc3, 0x9e, 0x66, 0xa6, 0x2b, 0xa4, 0x2e, + 0x1b, 0xf5, 0xb8, 0x89, 0xd4, 0x7e, 0x33, 0x46, + 0xd0, 0x07, 0x29, 0x95, 0x19, 0xe2, 0x98, 0x49, + 0x15, 0xca, 0x30, 0x62, 0x18, 0x37, 0xed, 0x40, + 0xf8, 0xa3, 0xe0, 0x8b, 0xbb, 0xe2, 0x81, 0x28, + 0xbf, 0xa4, 0xa5, 0xb8, 0x60, 0x29, 0x2a, 0xa6, + 0x0d, 0x64, 0x36, 0x1b, 0xfa, 0x90, 0x8a, 0xe3, + 0xae, 0x96, 0x4e, 0x89, 0xfc, 0x1f, 0x2a, 0x95, + 0xef, 0xcd, 0x7c, 0xb2, 0xac, 0xe3, 0x03, 0x9f, + 0x26, 0xc9, 0x55, 0xc4, 0x87, 0xfb, 0xb6, 0xc5, + 0x71, 0xc3, 0x2a, 0xfd, 0x57, 0xd0, 0x92, 0x34, + 0x9e, 0x49, 0x4b, 0xfe, 0x55, 0x08, 0xb8, 0xdc, + 0x5c, 0xbf, 0xa4, 0x4e, 0xa0, 0xbe, 0xcf, 0xb1, + 0x63, 0x7f, 0xfa, 0x85, 0xa3, 0xee, 0xb2, 0x6a, + 0xeb, 0x76, 0x89, 0x67, 0x55, 0xf8, 0xe4, 0x44, + 0xaf, 0xb4, 0xc1, 0x55, 0x74, 0x35, 0x8b, 0xe6, + 0x86, 0xb8, 0xce, 0x24, 0xc7, 0xa4, 0xbe, 0x3d, + 0x82, 0x4e, 0x1c, 0x08, 0xd3, 0xfd, 0x03, 0xc5, + 0x98, 0xb9, 0xdf, 0x3e, 0x62, 0x23, 0xe2, 0x89, + 0xbf, 0xa3, 0x28, 0x01, 0x7d, 0x16, 0x26, 0x1f, + 0xe0, 0xc4, 0x2a, 0x0f, 0xd6, 0x6b, 0x76, 0xa1, + 0xd3, 0x79, 0xc3, 0x5b, 0x9b, 0x2d, 0x24, 0x7b, + 0xb2, 0x00, 0xf6, 0x91, 0xb0, 0x96, 0x1b, 0x92, + 0x32, 0x75, 0x76, 0x59, 0xb3, 0xd1, 0x7d, 0x26, + 0xde, 0xb8, 0x99, 0xfe, 0xa3, 0x6d, 0x96, 0x8c, + 0xc1, 0x45, 0xcc, 0x89, 0x44, 0xa2, 0xb2, 0x19, + 0xee, 0x26, 0xa0, 0x38, 0xf8, 0x28, 0xd2, 0x38, + 0x79, 0x3b, 0xd1, 0xce, 0x56, 0x61, 0x7f, 0xa3, + 0x77, 0x4a, 0xd3, 0x79, 0xeb, 0x8a, 0x9f, 0x06, + 0x2a, 0x0e, 0xee, 0x59, 0xfb, 0x1e, 0xff, 0xfd, + 0x77, 0x9c, 0x1c, 0xbb, 0xea, 0x7e, 0xe6, 0x16, + 0xb5, 0x06, 0x79, 0x5f, 0xa4, 0xcf, 0xd2, 0x7e, + 0xaf, 0x5a, 0x34, 0x2a, 0xb1, 0x56, 0xf6, 0x13, + 0x67, 0x9e, 0x29, 0x0c, 0xa7, 0x80, 0xa9, 0x46, + 0xaf, 0x3a, 0xc6, 0x58, 0x59, 0xb7, 0xf6, 0x17, + 0x7f, 0x26, 0x8c, 0xa7, 0x07, 0x45, 0xbc, 0x72, + 0xa7, 0xc6, 0x3f, 0x58, 0x5a, 0xde, 0xbe, 0xad, + 0x7a, 0x43, 0x8b, 0x4b, 0x80, 0xd9, 0xbf, 0x97, + 0xa8, 0x8f, 0xa2, 0x17, 0xba, 0x5a, 0x90, 0x64, + 0xf8, 0xb8, 0x64, 0xd6, 0x43, 0x3d, 0x9f, 0x51, + 0xb6, 0x7b, 0xdf, 0xc3, 0xee, 0x82, 0x36, 0x6f, + 0xe6, 0xc5, 0x2a, 0x58, 0xae, 0xc7, 0x46, 0x0e, + 0x0e, 0x9f, 0x41, 0x74, 0xc2, 0xcf, 0x1a, 0x45, + 0x70, 0x45, 0x35, 0x9c, 0x33, 0x4e, 0x45, 0xb6, + 0xc7, 0xc6, 0xbe, 0x01, 0xff, 0x54, 0x9c, 0xca, + 0x49, 0x87, 0x6f, 0xbb, 0x8d, 0x92, 0xf0, 0x0c, + 0xef, 0x63, 0x8d, 0x2b, 0xc0, 0xef, 0x95, 0xd7, + 0xb1, 0x89, 0xd5, 0xb7, 0x8e, 0xeb, 0x95, 0xbb, + 0x42, 0x97, 0xcf, 0xfe, 0x8e, 0xfa, 0x35, 0x55, + 0x48, 0x44, 0xb1, 0x4d, 0xc9, 0x35, 0xc0, 0x50, + 0x33, 0x41, 0xe0, 0x8a, 0x18, 0x31, 0x19, 0x51, + 0x47, 0xbb, 0xc0, 0x82, 0x78, 0x5f, 0x62, 0xba, + 0x89, 0x27, 0xa1, 0x01, 0xce, 0xa7, 0x65, 0x47, + 0x7c, 0x90, 0xc3, 0xb6, 0x75, 0x06, 0x9e, 0x48, + 0x56, 0xe5, 0x16, 0xad, 0x90, 0xe9, 0xea, 0xcc, + 0xd5, 0xfb, 0xf2, 0x5b, 0x33, 0xa6, 0xc4, 0x4c, + 0xa8, 0x1b, 0xd6, 0x39, 0x80, 0xec, 0x86, 0x71, + 0x9f, 0x63, 0x8d, 0x15, 0x86, 0x7a, 0xd5, 0xe7, + 0x78, 0xd3, 0x9b, 0xd0, 0x17, 0xc0, 0xa5, 0x85, + 0xf8, 0x15, 0x47, 0x50, 0x4b, 0x4a, 0xf1, 0x3d, + 0xf9, 0x07, 0x01, 0x1c, 0x58, 0x4c, 0x9b, 0x1c, + 0x31, 0x4f, 0xe7, 0xda, 0x60, 0x68, 0x25, 0x29, + 0x8c, 0x16, 0x82, 0xc5, 0x61, 0x9f, 0x4d, 0xf3, + 0x17, 0xd0, 0x94, 0x40, 0x8d, 0xe2, 0xbc, 0xfb, + 0xd8, 0xb5, 0xf3, 0x18, 0x5d, 0xee, 0x49, 0xff, + 0x6d, 0x5e, 0x20, 0x9e, 0x42, 0xbb, 0x95, 0xb3, + 0x24, 0x1b, 0xaa, 0x76, 0x9e, 0x8d, 0xf0, 0xea, + 0xbc, 0x12, 0x6f, 0xf6, 0x9a, 0x85, 0x18, 0x49, + 0xfd, 0x73, 0x48, 0x24, 0xe6, 0xfe, 0x00, 0xed, + 0x63, 0x54, 0x35, 0xdd, 0x90, 0x91, 0x1b, 0x2f, + 0x12, 0x87, 0x17, 0xd3, 0x18, 0x7a, 0xc0, 0x85, + 0x17, 0x10, 0x76, 0xbc, 0x60, 0x26, 0x40, 0xae, + 0xb0, 0xb4, 0x5a, 0x9e, 0x12, 0xb8, 0x1d, 0x19, + 0x2c, 0x20, 0xd9, 0x52, 0x4b, 0x62, 0xf7, 0x9c, + 0xd6, 0xfd, 0x71, 0xba, 0xc7, 0x48, 0xa6, 0x0e, + 0x33, 0x16, 0x6c, 0x9e, 0x54, 0x3b, 0x97, 0xa4, + 0x42, 0x20, 0xb4, 0x69, 0x37, 0x2b, 0x84, 0x49, + 0xeb, 0xd7, 0xd9, 0xc1, 0x60, 0x2c, 0xdc, 0x2d, + 0xa4, 0x24, 0xcc, 0xf8, 0x5e, 0x1b, 0xfb, 0x23, + 0x21, 0x22, 0x2e, 0x92, 0x8d, 0x54, 0x93, 0x34, + 0xd1, 0x25, 0x24, 0xb6, 0x4b, 0xfb, 0xd7, 0xf4, + 0x54, 0x05, 0xab, 0xe8, 0x7e, 0xa3, 0x5b, 0x05, + 0x0f, 0x55, 0x9e, 0xcf, 0x7e, 0x93, 0xbc, 0x85, + 0x69, 0xf8, 0x8a, 0x85, 0x02, 0xdc, 0xa2, 0x25, + 0x01, 0x54, 0xc2, 0xb5, 0xe2, 0x7f, 0xcd, 0xc3, + 0x68, 0x68, 0x41, 0xc2, 0x3a, 0x5e, 0x47, 0xae, + 0x74, 0x61, 0x43, 0x02, 0xf8, 0x6e, 0x66, 0x5c, + 0x7f, 0x98, 0xb5, 0xb5, 0x75, 0xd5, 0x4a, 0x2e, + 0x98, 0xb1, 0xb7, 0xeb, 0xa2, 0xa6, 0xe8, 0x34, + 0xa1, 0xe5, 0x05, 0xe7, 0xf3, 0x62, 0x71, 0x4e, + 0x38, 0xca, 0x60, 0x5b, 0xaa, 0x2e, 0x15, 0x2d, + 0xff, 0x19, 0x43, 0xe7, 0xce, 0x1a, 0x5d, 0x7e, + 0x9a, 0xa4, 0x01, 0xe3, 0x3d, 0x01, 0xcd, 0x3e, + 0x17, 0x84, 0xe9, 0x80, 0x82, 0x7f, 0xc5, 0x3a, + 0x05, 0x45, 0xfe, 0x19, 0xb0, 0x1e, 0x8b, 0xbb, + 0xdb, 0xbf, 0x19, 0x38, 0xfa, 0x52, 0xd8, 0x2d, + 0x6a, 0x23, 0x86, 0xe3, 0x0b, 0x28, 0x94, 0xc8, + 0xa1, 0xcc, 0x49, 0xc2, 0x98, 0x2d, 0x56, 0x56, + 0x0b, 0x0d, 0x3e, 0x6d, 0xdc, 0xb9, 0xfa, 0x8e, + 0x56, 0xab, 0x01, 0x8d, 0x58, 0x3c, 0x4b, 0x04, + 0x82, 0xb1, 0x97, 0xd0, 0x92, 0xfe, 0xb6, 0xc4, + 0x5b, 0xe0, 0x37, 0x50, 0xc7, 0xac, 0xe2, 0xf4, + 0xed, 0xf2, 0x05, 0x8c, 0x9d, 0x78, 0x4d, 0xf7, + 0x9d, 0x59, 0xdb, 0xaa, 0x67, 0x9a, 0xd5, 0x48, + 0x27, 0x41, 0x89, 0x5b, 0xea, 0x29, 0x26, 0x41, + 0x76, 0xa8, 0x5f, 0x6d, 0x34, 0x04, 0xd2, 0x5f, + 0xb9, 0xdc, 0x20, 0xee, 0x04, 0x82, 0x24, 0x7a, + 0x09, 0x33, 0xf5, 0x02, 0x46, 0xa1, 0xc3, 0x58, + 0xb5, 0xb6, 0x1b, 0x44, 0x21, 0x34, 0x12, 0x54, + 0x23, 0xc6, 0x08, 0xa7, 0x54, 0xe4, 0x85, 0xed, + 0xe5, 0x50, 0x25, 0x20, 0x19, 0xc4, 0x5a, 0x40, + 0x9e, 0xde, 0x77, 0xd3, 0xe9, 0x1a, 0xe6, 0x7b, + 0xfc, 0x94, 0x5c, 0x28, 0xb8, 0x40, 0x9f, 0x85, + 0xa6, 0xa8, 0x18, 0x48, 0x75, 0x3f, 0x0c, 0x3e, + 0x8a, 0x34, 0x8f, 0x7e, 0xc2, 0x74, 0x71, 0xc2, + 0x30, 0x6c, 0x55, 0x3c, 0x11, 0xfc, 0x0c, 0xae, + 0x30, 0x7f, 0xda, 0x71, 0x29, 0x66, 0xd6, 0x46, + 0xed, 0x1c, 0xa1, 0xb0, 0x08, 0x63, 0xa4, 0xd4, + 0xb2, 0xec, 0x16, 0xdb, 0xde, 0x22, 0x20, 0xeb, + 0xe3, 0x8b, 0x7b, 0x2d, 0xac, 0x49, 0xec, 0x2a, + 0x06, 0x39, 0xa7, 0xaf, 0x24, 0x8c, 0x58, 0x09, + 0xe6, 0x58, 0x80, 0x3e, 0x8e, 0x2a, 0x0d, 0xbf, + 0x9c, 0x51, 0x16, 0xe9, 0x95, 0x4a, 0x98, 0x68, + 0x52, 0x16, 0xc2, 0x6f, 0x94, 0x2f, 0xdc, 0x3b, + 0xc6, 0x7e, 0x90, 0x2c, 0xf6, 0x84, 0x10, 0x90, + 0x9c, 0xe7, 0x31, 0x09, 0x8a, 0xe3, 0xad, 0x1f, + 0x6d, 0x87, 0x74, 0x02, 0xce, 0x85, 0x47, 0x69, + 0x3b, 0x33, 0x82, 0x51, 0x2a, 0xc8, 0xb4, 0x48, + 0x22, 0x95, 0x77, 0xd1, 0x90, 0xa3, 0x80, 0xf4, + 0x28, 0x74, 0xc1, 0x1d, 0x26, 0x7a, 0x79, 0xeb, + 0x6d, 0x76, 0x64, 0x34, 0x6f, 0x90, 0xd9, 0xe5, + 0xd0, 0xa8, 0xd9, 0x3d, 0x2a, 0x23, 0x6b, 0x9c, + 0x58, 0x49, 0xef, 0xa2, 0x61, 0xdd, 0xcd, 0x5c, + 0xbf, 0xef, 0x38, 0x3e, 0xa0, 0x2b, 0xe9, 0x71, + 0x89, 0xd7, 0xfc, 0xa1, 0x0b, 0x70, 0x68, 0xda, + 0xe5, 0x32, 0x30, 0x51, 0x65, 0xe0, 0x13, 0xd7, + 0x4f, 0xf0, 0xca, 0xa1, 0x0c, 0x49, 0xaf, 0xde, + 0x70, 0x52, 0xdc, 0x72, 0x7c, 0x29, 0x6d, 0x1c, + 0x28, 0x3e, 0x5a, 0x75, 0xec, 0xea, 0xfb, 0x97, + 0xcb, 0x81, 0xf2, 0x74, 0xd7, 0xe0, 0xc2, 0x8f, + 0x74, 0x6c, 0x06, 0x65, 0x12, 0x69, 0x3c, 0x26, + 0xbf, 0x37, 0x4c, 0xd8, 0xb2, 0x39, 0x1c, 0x1a, + 0x26, 0x27, 0x63, 0xa9, 0x70, 0x45, 0x65, 0x03, + 0x0a, 0x97, 0x75, 0xad, 0x37, 0xc1, 0x0a, 0xb3, + 0x16, 0x35, 0x15, 0x81, 0xc3, 0x3f, 0xa5, 0xcd, + 0x31, 0x27, 0x67, 0x95, 0xb2, 0x78, 0x0c, 0x91, + 0x12, 0x1a, 0x54, 0xfe, 0x14, 0xac, 0xc9, 0x54, + 0x04, 0x51, 0xa2, 0x3d, 0x0f, 0xb5, 0x2c, 0xab, + 0x07, 0x72, 0x01, 0x17, 0xef, 0x5c, 0xe7, 0x05, + 0x05, 0x08, 0x10, 0xa7, 0xf5, 0x30, 0x7c, 0x3e, + 0xd5, 0x5d, 0xf2, 0xbd, 0x10, 0x58, 0xd1, 0x26, + 0x12, 0x04, 0xd1, 0x91, 0x5c, 0x49, 0x90, 0x6f, + 0xb9, 0x1e, 0x57, 0xf8, 0x58, 0x74, 0x3c, 0xe9, + 0x6f, 0x92, 0x84, 0x95, 0x2f, 0x23, 0xce, 0x63, + 0x9c, 0x80, 0xf3, 0x6e, 0xc7, 0xc5, 0x0f, 0xcc, + 0x76, 0xbf, 0x46, 0xf2, 0x0e, 0xe6, 0xc8, 0x22, + 0x44, 0x6e, 0xbe, 0x74, 0xd5, 0x12, 0x1b, 0x27, + 0x55, 0xa4, 0x15, 0x4f, 0x14, 0x46, 0xec, 0xed, + 0x81, 0x60, 0x19, 0x37, 0xa3, 0x38, 0x72, 0x97, + 0x5e, 0xcd, 0xe6, 0x6f, 0x70, 0x05, 0x67, 0x46, + 0x7b, 0xd9, 0x95, 0xc7, 0xe4, 0x1c, 0xa2, 0x81, + 0x1a, 0x1c, 0x07, 0x6a, 0x3e, 0xfd, 0xe0, 0xd8, + 0x4d, 0xac, 0xe5, 0x1d, 0xca, 0xd9, 0xca, 0x02, + 0x64, 0x2b, 0xe5, 0xbe, 0x80, 0x84, 0x72, 0x3a, + 0x67, 0x0d, 0xd1, 0x70, 0xda, 0xda, 0x4d, 0x40, + 0xfb, 0x2a, 0x91, 0x5e, 0x7f, 0x87, 0xb8, 0x5d, + 0xf0, 0x90, 0x9b, 0x86, 0x44, 0x72, 0xfc, 0xb6, + 0x91, 0x32, 0xcc, 0xe1, 0xbb, 0x17, 0x55, 0xda, + 0x9f, 0x39, 0x3f, 0x38, 0x44, 0xb7, 0x8c, 0x08, + 0x86, 0x17, 0xbb, 0xc3, 0xe6, 0x46, 0x1e, 0xe1, + 0xbd, 0xfd, 0x15, 0xec, 0x4e, 0x16, 0x76, 0xbb, + 0xed, 0xe0, 0xf2, 0xfe, 0x72, 0xbe, 0xac, 0x05, + 0xcb, 0x31, 0x3e, 0xb2, 0x97, 0x72, 0xcb, 0x92, + 0x66, 0x93, 0xc0, 0x91, 0xb0, 0xfa, 0x37, 0x04, + 0xad, 0x6f, 0x25, 0xe1, 0x70, 0x6d, 0xd3, 0x3d, + 0x8b, 0xe8, 0xdd, 0x73, 0xd1, 0xb1, 0x67, 0xa9, + 0x5b, 0x4c, 0xad, 0x71, 0xc5, 0x27, 0x87, 0x01, + 0x76, 0x9f, 0x4f, 0x9e, 0x56, 0xf0, 0xf0, 0xe4, + 0xe9, 0x63, 0x08, 0x52, 0xc1, 0x89, 0xbb, 0xb4, + 0x77, 0x86, 0xa5, 0xf3, 0xc1, 0x3e, 0xd4, 0x3c, + 0x0f, 0x32, 0x3e, 0x83, 0xed, 0x36, 0x7a, 0x9a, + 0x83, 0x6c, 0x30, 0x42, 0x23, 0xdd, 0xd9, 0xd2, + 0xe1, 0x02, 0x44, 0x5c, 0x78, 0x70, 0x35, 0x22, + 0x3b, 0x8d, 0x05, 0xe8, 0xba, 0x1f, 0x68, 0xa3, + 0x12, 0x25, 0xe2, 0xc2, 0x71, 0xdc, 0xb9, 0x66, + 0x28, 0x58, 0x4d, 0x3d, 0x89, 0x69, 0x12, 0xca, + 0xb2, 0x13, 0x9d, 0x8c, 0x84, 0x91, 0x61, 0x67, + 0x78, 0xb1, 0xc2, 0x29, 0xe4, 0x66, 0x11, 0xb1, + 0xf5, 0xb2, 0x02, 0xf2, 0x2a, 0x2b, 0x22, 0xc5, + 0x63, 0x09, 0x6e, 0xfe, 0x16, 0x3c, 0x9e, 0x99, + 0xa6, 0x9d, 0xc0, 0x4d, 0x2d, 0x37, 0x6e, 0x04, + 0x74, 0x3f, 0x21, 0xdb, 0xa9, 0xf9, 0xef, 0x41, + 0x31, 0x54, 0x94, 0xf9, 0x99, 0xaa, 0x03, 0xa3, + 0x97, 0xfd, 0x5d, 0xa4, 0xf8, 0xd8, 0xc0, 0x99, + 0xca, 0xd9, 0x33, 0x32, 0x96, 0x5a, 0x89, 0x27, + 0xc7, 0x5d, 0x37, 0xe2, 0xd0, 0x5f, 0x2f, 0x06, + 0xd8, 0x41, 0x84, 0x4e, 0xdc, 0xef, 0x92, 0x62, + 0x7a, 0xe5, 0x7b, 0x12, 0x75, 0x81, 0xde, 0x95, + 0x53, 0xca, 0x5b, 0xd0, 0x97, 0x25, 0x5c, 0x2c, + 0xc7, 0xdc, 0xf6, 0x82, 0x2c, 0x6f, 0x5e, 0xef, + 0x61, 0x2a, 0x35, 0x1b, 0xb8, 0xb5, 0x23, 0x63, + 0xd5, 0x05, 0xe2, 0x76, 0x1a, 0xe6, 0xbb, 0xd6, + 0x92, 0x60, 0x2b, 0x3f, 0x93, 0x92, 0x21, 0xa8, + 0x4a, 0xe5, 0x6b, 0x6d, 0xcc, 0x80, 0x6a, 0x97, + 0xf3, 0x32, 0xd1, 0xa3, 0xa4, 0x62, 0x62, 0xcb, + 0xff, 0x89, 0x1c, 0xdc, 0x3d, 0xb3, 0xdd, 0x48, + 0x3b, 0xcb, 0x4e, 0xb5, 0x29, 0xfd, 0xe7, 0x08, + 0xe6, 0xf2, 0xdd, 0x57, 0x9e, 0xc0, 0x0b, 0x92, + 0xbd, 0x90, 0x43, 0xd4, 0x0c, 0x6d, 0xac, 0x2a, + 0xcc, 0xab, 0x1d, 0x84, 0x03, 0x1b, 0xe6, 0xf2, + 0x45, 0x6b, 0x22, 0x6c, 0x9a, 0xf6, 0xdf, 0x53, + 0x1b, 0x77, 0x12, 0x27, 0xd5, 0x90, 0x76, 0xfd, + 0x7e, 0x1e, 0x8f, 0x27, 0x94, 0x18, 0xc1, 0x16, + 0x62, 0x9b, 0xda, 0xd6, 0x71, 0x98, 0x47, 0xe3, + 0x70, 0xb0, 0xf9, 0x60, 0x3d, 0x58, 0x6f, 0x78, + 0x75, 0xb5, 0xb0, 0xf9, 0x92, 0x1f, 0x05, 0x65, + 0x0e, 0x52, 0xe7, 0x5d, 0x39, 0x58, 0x89, 0x08, + 0x62, 0xe4, 0x5a, 0xe9, 0x93, 0xe4, 0xe4, 0xd0, + 0xf8, 0x27, 0xc6, 0xe0, 0x96, 0x91, 0x2b, 0xc9, + 0x67, 0x80, 0x38, 0x85, 0xc9, 0xcc, 0x1b, 0x70, + 0x44, 0xdc, 0x96, 0xe0, 0x49, 0x41, 0xbf, 0x0e, + 0x57, 0x76, 0x8f, 0xd7, 0x8d, 0x71, 0xcb, 0x6a, + 0x1b, 0x92, 0xb3, 0xe7, 0x96, 0xf4, 0xf0, 0x0a, + 0x0b, 0xe7, 0x9c, 0x16, 0x64, 0xfa, 0xe4, 0xce, + 0x7a, 0xda, 0x1a, 0xc5, 0x6e, 0x81, 0xc0, 0x21, + 0x4d, 0x5d, 0xae, 0x74, 0xe3, 0x1b, 0xa4, 0xd3, + 0x1a, 0x12, 0x7e, 0x65, 0x1b, 0xe7, 0x92, 0xbe, + 0x1a, 0xc3, 0xf8, 0xd3, 0x84, 0x92, 0xb2, 0x7e, + 0x5d, 0x40, 0x10, 0xaf, 0x61, 0x60, 0x21, 0x1f, + 0x54, 0x54, 0xe3, 0x76, 0xa0, 0xa8, 0xda, 0xaa, + 0x0f, 0x29, 0xa7, 0xa9, 0x99, 0xa9, 0xb3, 0xd2, + 0xd4, 0xd1, 0xef, 0x8a, 0x94, 0x1d, 0xc5, 0x61, + 0x54, 0xa2, 0x94, 0xaf, 0xcb, 0xad, 0x4b, 0x23, + 0x6c, 0xb6, 0x50, 0x33, 0xeb, 0xac, 0x6e, 0x58, + 0xf1, 0xd4, 0xd3, 0x7a, 0x1f, 0x95, 0x00, 0x9d, + 0x9c, 0xf6, 0x84, 0x71, 0xe3, 0xe5, 0xd3, 0x4d, + 0x28, 0x3b, 0x2d, 0xcb, 0x2b, 0xc1, 0x90, 0xf5, + 0xee, 0x02, 0x22, 0xa2, 0x8a, 0xf1, 0x3c, 0x17, + 0xeb, 0x40, 0x67, 0xd3, 0x57, 0x62, 0x8b, 0x9b, + 0xec, 0xc1, 0xeb, 0x96, 0x55, 0xde, 0xa7, 0x6c, + 0xaf, 0xcb, 0x5f, 0xf3, 0xc3, 0x11, 0x49, 0xae, + 0x09, 0x3f, 0x66, 0x75, 0xce, 0x3f, 0x0d, 0x95, + 0xb6, 0x4b, 0xc2, 0xbb, 0x7d, 0x81, 0xea, 0x2a, + 0x9e, 0x22, 0xac, 0x2f, 0xbd, 0xcf, 0x8b, 0x18, + 0x82, 0xeb, 0x86, 0xfb, 0x5b, 0x9a, 0x28, 0x0e, + 0x11, 0xc8, 0x3e, 0x55, 0xd6, 0x1f, 0xe1, 0xe0, + 0x30, 0x70, 0x4c, 0x54, 0xbf, 0x35, 0xec, 0x2f, + 0x89, 0x53, 0xab, 0x81, 0x10, 0x7a, 0x42, 0x12, + 0x6f, 0x3a, 0xec, 0xf7, 0x6b, 0x92, 0x85, 0x01, + 0xab, 0x97, 0x23, 0x4e, 0xa4, 0xfc, 0x41, 0x2b, + 0x90, 0xbb, 0x16, 0x73, 0x81, 0xeb, 0xd4, 0xdc, + 0x84, 0x7f, 0x8a, 0xd8, 0x1f, 0x8d, 0x40, 0xce, + 0xc0, 0xb5, 0x69, 0x8d, 0x42, 0xed, 0xb7, 0x87, + 0x84, 0x00, 0x8e, 0x8e, 0x60, 0x46, 0x0a, 0x9e, + 0x3c, 0xf6, 0x6a, 0xc6, 0x3b, 0x7a, 0x48, 0x64, + 0x83, 0x7b, 0x3f, 0x02, 0x6e, 0x54, 0xd3, 0xa7, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0x2d, 0x76, 0xc8, 0x74, 0x90, 0x71, 0x73, 0x7c, + 0xd5, 0xa0, 0x78, 0x8f, 0xe9, 0x97, 0x0e, 0x3a, + 0xdc, 0x3f, 0x38, 0x40, 0x28, 0x39, 0xa2, 0xfe, + 0xcc, 0xdc, 0x86, 0x77, 0xb5, 0x76, 0xb0, 0x5c, + 0x25, 0xbd, 0x6d, 0xe1, 0x6d, 0x00, 0x47, 0x6a, + 0x26, 0xb5, 0xda, 0x38, 0x75, 0x9e, 0xcf, 0xff, + 0x97, 0x67, 0x36, 0x41, 0xda, 0x9b, 0xa8, 0x1c, + 0xba, 0x15, 0xa6, 0x65, 0xba, 0x7a, 0x55, 0x73, + }, + .sig_len =3D DILITHIUM87_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM87_CRYPTO_BYTES]){ + 0x7a, 0x5d, 0xe3, 0x9b, 0x46, 0x7c, 0x10, 0xd8, + 0x40, 0x60, 0x48, 0x83, 0x19, 0x53, 0xcb, 0xcc, + 0xff, 0xef, 0x34, 0x9d, 0xdb, 0x02, 0x5f, 0xa8, + 0x8b, 0x3f, 0xac, 0x51, 0x14, 0x42, 0x9c, 0x3f, + 0xef, 0xcd, 0x1d, 0x65, 0x34, 0x49, 0xd7, 0xce, + 0x0f, 0x6a, 0x32, 0xb8, 0x8d, 0x39, 0x1e, 0x8c, + 0x67, 0x56, 0xa7, 0xa4, 0x64, 0x4c, 0xcd, 0xb5, + 0x77, 0xf8, 0x64, 0xa9, 0x08, 0x1d, 0xc8, 0x44, + 0x0a, 0x0b, 0xb2, 0xcf, 0x5b, 0xac, 0x9d, 0xb7, + 0x88, 0xb8, 0x91, 0x51, 0xb0, 0x91, 0xbd, 0xe1, + 0x11, 0xc4, 0x7a, 0x02, 0xbf, 0x3b, 0x44, 0x21, + 0x34, 0x6e, 0x45, 0x00, 0x2e, 0x09, 0x66, 0x04, + 0xe4, 0x95, 0xc9, 0xe4, 0xee, 0xa8, 0x49, 0x92, + 0x6a, 0x41, 0x6c, 0x55, 0x4f, 0x17, 0x09, 0x4c, + 0x84, 0x19, 0xe9, 0xa2, 0xa6, 0x32, 0xb6, 0x1a, + 0x28, 0x5c, 0x23, 0x93, 0x7f, 0x9a, 0xd0, 0x74, + 0x47, 0xc4, 0x40, 0xe1, 0xd3, 0xb6, 0x4a, 0x0a, + 0x39, 0x5a, 0x3d, 0xb1, 0xfe, 0x74, 0xf2, 0xc4, + 0x4c, 0x42, 0x4f, 0xea, 0x73, 0x1f, 0xd9, 0x03, + 0xf7, 0x2f, 0x04, 0x0e, 0x52, 0x50, 0x86, 0xc1, + 0x77, 0x30, 0x8b, 0xdf, 0x94, 0x1c, 0x7d, 0x51, + 0xdf, 0x3e, 0x46, 0xd4, 0xeb, 0x30, 0x5d, 0xe1, + 0xea, 0x3a, 0x55, 0xeb, 0xfd, 0xe2, 0xab, 0x02, + 0x92, 0x79, 0xe7, 0x1a, 0xc7, 0x74, 0xd8, 0x8e, + 0xf3, 0x65, 0x5f, 0x19, 0x7d, 0x3d, 0x2b, 0xc0, + 0x75, 0x15, 0x41, 0xe0, 0x6e, 0xf4, 0xe4, 0xea, + 0xf8, 0xcf, 0x40, 0x51, 0xd4, 0x85, 0xc0, 0xcd, + 0xe9, 0x2b, 0x12, 0x62, 0x02, 0xf4, 0xf2, 0xc5, + 0xc4, 0xd2, 0x70, 0x13, 0xa8, 0xee, 0x69, 0x57, + 0x0b, 0x17, 0x42, 0x99, 0xe9, 0x0f, 0xfa, 0x95, + 0x2c, 0x32, 0x4e, 0x9e, 0xa4, 0x49, 0xc2, 0x9a, + 0x19, 0x90, 0xba, 0x3d, 0x7a, 0xc0, 0x7c, 0xeb, + 0x84, 0xe6, 0x45, 0x86, 0xf6, 0x37, 0x0b, 0xdd, + 0x20, 0x8a, 0x8d, 0xc4, 0x59, 0x4e, 0x34, 0x91, + 0x91, 0x39, 0xd1, 0x25, 0x89, 0x0e, 0x78, 0x81, + 0x28, 0x3c, 0xf0, 0x67, 0x90, 0x30, 0xfe, 0x72, + 0x53, 0x66, 0xce, 0xcd, 0x17, 0x62, 0xbf, 0x38, + 0x1c, 0x9f, 0x7f, 0x74, 0x21, 0x94, 0x26, 0xb0, + 0x2d, 0x20, 0xe3, 0x56, 0x36, 0xa8, 0x6c, 0x7c, + 0xc3, 0x5d, 0xc1, 0x7d, 0xbd, 0xe1, 0x95, 0xdc, + 0x7d, 0xc6, 0xf4, 0x93, 0xaf, 0xfc, 0x61, 0x2c, + 0xcb, 0x4c, 0x10, 0x7f, 0x22, 0xfb, 0xcc, 0x05, + 0x41, 0x00, 0x8c, 0xf6, 0xfc, 0x25, 0x62, 0xd5, + 0xc8, 0xbc, 0x69, 0xfd, 0xef, 0xc6, 0x84, 0x89, + 0x64, 0xcd, 0xa4, 0x5c, 0x5a, 0x7f, 0x0b, 0x55, + 0xdf, 0x7e, 0x33, 0x14, 0x2f, 0x92, 0xe4, 0x49, + 0x0c, 0x99, 0x07, 0xe2, 0x59, 0x28, 0xfc, 0x96, + 0xa9, 0x5a, 0x06, 0xc0, 0xda, 0x18, 0xe8, 0x4b, + 0x9a, 0x35, 0xbe, 0x36, 0xad, 0x00, 0x46, 0x0a, + 0xe6, 0x75, 0xcf, 0x8c, 0x98, 0x08, 0x9b, 0x4b, + 0x0f, 0x78, 0x1a, 0x19, 0x93, 0x8d, 0x72, 0x03, + 0xe9, 0x21, 0xbe, 0x74, 0x32, 0xb8, 0xa2, 0x10, + 0xa2, 0x86, 0xc3, 0xb4, 0xf3, 0x8b, 0xd9, 0x1e, + 0x7b, 0x85, 0x9b, 0x7d, 0x6c, 0x9a, 0x68, 0x01, + 0x0d, 0x26, 0xf1, 0x93, 0xcc, 0xdd, 0xae, 0xeb, + 0x89, 0x56, 0x23, 0xcd, 0x05, 0x29, 0x43, 0xa2, + 0x87, 0xa2, 0x72, 0x99, 0xef, 0xb6, 0x26, 0x2c, + 0x99, 0x90, 0xb2, 0x89, 0xe8, 0x42, 0xfe, 0x16, + 0x2d, 0x38, 0xb4, 0xe3, 0xef, 0x6f, 0x3c, 0xd9, + 0x65, 0x32, 0xed, 0xbd, 0xca, 0x32, 0x82, 0x8a, + 0xaa, 0x3a, 0x4f, 0xb3, 0xc5, 0xda, 0x82, 0x40, + 0x51, 0x62, 0xdc, 0xfa, 0xa3, 0xd5, 0x21, 0x67, + 0x7a, 0x6a, 0xda, 0x0e, 0xea, 0xe0, 0xdb, 0x68, + 0x51, 0xbe, 0x9c, 0xd5, 0x3a, 0xec, 0xd1, 0xa9, + 0x73, 0xa1, 0xc8, 0xbf, 0x05, 0x3b, 0xec, 0xe0, + 0x41, 0xc1, 0x91, 0x8c, 0x3f, 0x31, 0xb5, 0x16, + 0x68, 0x81, 0xad, 0xdf, 0x63, 0x9d, 0xb7, 0x2c, + 0x8b, 0x5c, 0x66, 0x01, 0x53, 0x75, 0x4d, 0x90, + 0xfb, 0x29, 0x17, 0x8e, 0xc5, 0x16, 0x84, 0x8f, + 0x08, 0xfa, 0x9e, 0x4b, 0xfa, 0xb0, 0xa6, 0x1f, + 0xd7, 0xa0, 0xf3, 0x7b, 0x9f, 0x26, 0x88, 0x75, + 0x3a, 0x9a, 0xc8, 0xb7, 0x1c, 0xa1, 0x84, 0xad, + 0xb4, 0xf4, 0xf2, 0x78, 0xa7, 0xda, 0xeb, 0x55, + 0x5f, 0x89, 0x69, 0xa8, 0x3f, 0xbb, 0x93, 0x74, + 0x72, 0xb8, 0x29, 0xc0, 0xb3, 0x4a, 0xb6, 0x06, + 0x57, 0x79, 0xff, 0xd5, 0xe2, 0x89, 0x7e, 0xa2, + 0xc2, 0x1a, 0xeb, 0x11, 0xb7, 0x86, 0x26, 0xd6, + 0x20, 0xa4, 0xd8, 0x1b, 0x03, 0x7b, 0x5c, 0x4a, + 0x4d, 0x60, 0x90, 0x19, 0x96, 0xa3, 0x64, 0x5f, + 0x91, 0x6b, 0x03, 0xfb, 0x43, 0xd0, 0xa4, 0x51, + 0xa2, 0x8a, 0xad, 0x55, 0x61, 0x23, 0xef, 0xe0, + 0x87, 0xc0, 0xba, 0xe2, 0x3b, 0xdb, 0x11, 0x26, + 0x94, 0x1f, 0x65, 0xf5, 0x20, 0x67, 0x36, 0xce, + 0x5a, 0xee, 0x24, 0xad, 0xbe, 0xc0, 0x32, 0xa5, + 0xa5, 0xf3, 0x92, 0x47, 0x55, 0xee, 0x67, 0xf8, + 0x1a, 0x8a, 0xd6, 0x69, 0x50, 0x07, 0x96, 0x43, + 0xcd, 0x01, 0x74, 0x78, 0x71, 0x40, 0xc4, 0x32, + 0x89, 0x07, 0xe0, 0x16, 0x59, 0x11, 0x41, 0x4a, + 0x60, 0x19, 0x89, 0xe4, 0xc8, 0x76, 0x02, 0xce, + 0xd0, 0xa8, 0x26, 0xdd, 0xc1, 0xad, 0xb6, 0x13, + 0xd1, 0x11, 0x30, 0x32, 0x93, 0xcd, 0xf8, 0xfe, + 0xcb, 0x78, 0xcf, 0x4c, 0x58, 0xb8, 0x94, 0x22, + 0xe1, 0x38, 0xa4, 0xb5, 0xbe, 0x78, 0x08, 0x9e, + 0x15, 0x8a, 0xa9, 0x73, 0x15, 0x6d, 0x5d, 0x2f, + 0xd0, 0x29, 0x28, 0xa1, 0x8f, 0xde, 0x86, 0x1b, + 0xbb, 0xc2, 0xb1, 0x6f, 0xea, 0x7b, 0xb0, 0xa5, + 0x8b, 0x91, 0xb6, 0xee, 0x77, 0xe1, 0xf2, 0x10, + 0x18, 0xa0, 0x67, 0x88, 0x85, 0x97, 0xb9, 0x26, + 0x44, 0xdc, 0x37, 0x9a, 0xda, 0xdf, 0xf0, 0x60, + 0xda, 0x10, 0x7d, 0x03, 0x0d, 0xa1, 0x04, 0x3e, + 0x2a, 0xd2, 0xaf, 0x46, 0xae, 0x24, 0x57, 0xff, + 0x7f, 0x8b, 0xb0, 0xb3, 0xd2, 0xb6, 0xe1, 0x09, + 0x24, 0xe0, 0x65, 0xbd, 0xcf, 0x08, 0x3e, 0xcc, + 0x93, 0xd5, 0x00, 0x59, 0xf1, 0x71, 0x8d, 0x26, + 0x10, 0xff, 0xa4, 0x64, 0x50, 0x7d, 0x8d, 0xcc, + 0xc0, 0x14, 0x10, 0x38, 0x19, 0xe6, 0x3c, 0x5b, + 0x86, 0xf9, 0xe5, 0xf5, 0x95, 0x56, 0x9b, 0xbb, + 0x21, 0xbd, 0x61, 0x39, 0xbf, 0xa3, 0xe7, 0xea, + 0xd7, 0x3d, 0x05, 0xe1, 0x89, 0xce, 0x8e, 0xb5, + 0x49, 0x47, 0x6c, 0xc5, 0x34, 0x9d, 0x32, 0x9f, + 0x1f, 0xba, 0x45, 0xef, 0xa1, 0xea, 0x55, 0xac, + 0xfc, 0x21, 0x71, 0xcd, 0xb2, 0x20, 0x97, 0xfc, + 0x8e, 0xa4, 0xc7, 0x0c, 0x92, 0x7c, 0x20, 0x0b, + 0xab, 0xe2, 0xa9, 0xec, 0x30, 0x34, 0x73, 0xbc, + 0x11, 0x9a, 0xbd, 0xf2, 0x55, 0x98, 0x84, 0xb4, + 0xfb, 0x01, 0xc4, 0x27, 0xff, 0x40, 0xe5, 0x0c, + 0x20, 0x46, 0x39, 0x8a, 0x08, 0x06, 0x79, 0x10, + 0x0b, 0x8c, 0xf9, 0xda, 0x22, 0x56, 0xe4, 0xdb, + 0x2e, 0xb1, 0x99, 0xae, 0x41, 0x96, 0x43, 0x74, + 0x4f, 0xcf, 0xf3, 0xba, 0xaf, 0xca, 0xe8, 0xe9, + 0xd0, 0xbc, 0x7e, 0x28, 0x73, 0x2c, 0xa9, 0x61, + 0xcf, 0xb0, 0x57, 0xc4, 0x6c, 0x2a, 0xb3, 0xc8, + 0x47, 0xba, 0x45, 0x14, 0x80, 0xf5, 0x91, 0xb8, + 0xf5, 0xc8, 0x08, 0x0e, 0x6f, 0x3f, 0x7e, 0xa8, + 0xc9, 0x60, 0xe2, 0xb0, 0x35, 0xbc, 0xa0, 0x75, + 0xe7, 0x83, 0x04, 0xa0, 0xfa, 0x79, 0xdd, 0x5d, + 0x39, 0xf9, 0x8d, 0x37, 0x92, 0x70, 0xa8, 0x87, + 0xd0, 0xfb, 0x83, 0xa5, 0xaf, 0x4d, 0xa4, 0xcc, + 0x86, 0xd4, 0xac, 0xfe, 0xae, 0xde, 0x22, 0x1c, + 0x32, 0xb1, 0x97, 0x62, 0x78, 0x88, 0xd6, 0xbc, + 0x88, 0x6d, 0x61, 0xda, 0xd5, 0xce, 0xb3, 0x98, + 0xc4, 0x0f, 0xd3, 0x6e, 0x19, 0xdb, 0x45, 0xa2, + 0x6d, 0x77, 0xb4, 0x17, 0x2c, 0x95, 0xd0, 0x49, + 0x38, 0xa1, 0xef, 0xcb, 0x5d, 0x52, 0xc9, 0xcd, + 0x22, 0xbe, 0x2b, 0x52, 0x9b, 0x25, 0x91, 0x2d, + 0x24, 0xe4, 0xc6, 0x75, 0xc6, 0xd2, 0x76, 0x73, + 0xf6, 0x73, 0xbe, 0x87, 0x35, 0x50, 0x7f, 0xeb, + 0x11, 0x8e, 0x31, 0xb4, 0x9f, 0x00, 0xcb, 0x0b, + 0x37, 0x77, 0xf7, 0xef, 0x7f, 0x28, 0x1a, 0x5c, + 0x04, 0xc6, 0x4b, 0x35, 0x47, 0xb4, 0xa3, 0xf1, + 0xde, 0x9b, 0x2a, 0x11, 0x76, 0xad, 0x1b, 0xa4, + 0x59, 0xf3, 0xeb, 0x9a, 0xa6, 0xf5, 0xd4, 0x30, + 0x17, 0x00, 0x44, 0xab, 0x3a, 0x99, 0x6b, 0x5a, + 0x7a, 0x29, 0x5f, 0xce, 0x78, 0x49, 0x73, 0x7b, + 0xf1, 0xbf, 0xcf, 0x69, 0xa4, 0x79, 0xa1, 0x45, + 0x78, 0x95, 0xae, 0xe7, 0x6e, 0x71, 0xb9, 0x47, + 0x51, 0xb0, 0xa0, 0xac, 0xc5, 0xeb, 0x17, 0x52, + 0xbf, 0x6e, 0x94, 0xe1, 0x2b, 0x59, 0xca, 0x7d, + 0xba, 0x40, 0xe2, 0xb0, 0x32, 0xeb, 0x3f, 0x31, + 0x17, 0x39, 0x2c, 0x9c, 0xe7, 0xf7, 0xb3, 0xc1, + 0x50, 0x0c, 0x1d, 0xa4, 0x2a, 0x00, 0xb1, 0x8d, + 0x0c, 0x55, 0x68, 0xb3, 0xf5, 0x45, 0x38, 0x6b, + 0x6b, 0x5f, 0xcc, 0xa2, 0x16, 0x8e, 0x41, 0xd6, + 0xa7, 0xee, 0xaf, 0x4c, 0xea, 0x9c, 0x80, 0x46, + 0x4b, 0x65, 0x06, 0xf4, 0x0b, 0x8e, 0xd1, 0x75, + 0x3a, 0x7c, 0x4c, 0x1b, 0x3f, 0x65, 0xce, 0x61, + 0xa8, 0xa3, 0x6e, 0xa8, 0x1d, 0xfe, 0x55, 0xc0, + 0x96, 0x9d, 0x19, 0xcc, 0x5b, 0x6e, 0x01, 0x8b, + 0xf7, 0xfe, 0x61, 0x73, 0x48, 0x9d, 0x1c, 0xf8, + 0xc2, 0xd2, 0x0b, 0x18, 0xde, 0x6c, 0x2c, 0x87, + 0x89, 0xd4, 0x4e, 0x37, 0x39, 0x67, 0x36, 0xe4, + 0x23, 0x88, 0x49, 0x5a, 0x0f, 0x43, 0xc6, 0x8c, + 0x60, 0x9f, 0xb6, 0x04, 0xa0, 0x2d, 0x31, 0xb4, + 0x8d, 0xef, 0x4b, 0x5c, 0xc7, 0x2b, 0xf5, 0x8f, + 0x47, 0xf1, 0x4f, 0x47, 0xff, 0x41, 0x06, 0xfa, + 0x50, 0x4f, 0x7f, 0x1b, 0x87, 0xad, 0xed, 0x2a, + 0xc5, 0x65, 0x0d, 0x53, 0x5f, 0xc2, 0x71, 0x95, + 0xa5, 0xeb, 0x59, 0x6b, 0xef, 0xf9, 0x5d, 0x32, + 0x4a, 0x09, 0xfa, 0x01, 0xaa, 0x3f, 0x70, 0x43, + 0x1c, 0x16, 0x06, 0x01, 0x28, 0xa1, 0xfb, 0x82, + 0xd8, 0x60, 0x79, 0xd2, 0x67, 0xd2, 0xcc, 0xd9, + 0xce, 0xaf, 0x53, 0x45, 0xcd, 0x7d, 0x08, 0xf8, + 0x22, 0x8e, 0x37, 0x4a, 0x4c, 0x12, 0xf2, 0xe2, + 0x90, 0x2d, 0xe9, 0x27, 0x53, 0x44, 0x6d, 0x57, + 0x2f, 0xd6, 0x19, 0x04, 0xe2, 0xe0, 0x3e, 0x23, + 0x4a, 0xcf, 0x52, 0x1a, 0x9a, 0x0d, 0x7e, 0x62, + 0xac, 0xd9, 0xee, 0xf2, 0x1d, 0x16, 0x59, 0x4d, + 0x83, 0x7f, 0x44, 0x5e, 0x4e, 0x39, 0x63, 0x09, + 0x10, 0xd4, 0xe2, 0xf3, 0x71, 0x54, 0xfd, 0xff, + 0x2b, 0x82, 0x69, 0x6f, 0x1a, 0x7f, 0x63, 0xdd, + 0x7f, 0x2a, 0xb6, 0x52, 0x42, 0xbb, 0x43, 0xef, + 0xf5, 0x25, 0xf7, 0x96, 0xf6, 0x7b, 0x6c, 0x00, + 0x1f, 0xda, 0xdc, 0x35, 0x1a, 0x44, 0x1b, 0xb5, + 0xe5, 0x03, 0x97, 0x96, 0x67, 0x19, 0x13, 0x7a, + 0xda, 0xd9, 0xc2, 0xe8, 0xec, 0xb1, 0xc6, 0x12, + 0x88, 0xc5, 0x5c, 0xd7, 0x56, 0x76, 0xc2, 0x27, + 0x0a, 0xf5, 0x94, 0x58, 0x0e, 0x70, 0xf1, 0x63, + 0xbe, 0x13, 0xe1, 0x41, 0x17, 0xb4, 0x04, 0xe9, + 0xad, 0x9a, 0x4c, 0x0b, 0x03, 0x1d, 0xe5, 0x7b, + 0x5a, 0xaf, 0xc1, 0x15, 0x0a, 0xe1, 0x87, 0x2a, + 0x0b, 0x1c, 0xd1, 0x44, 0x2e, 0x5a, 0x8b, 0x49, + 0x47, 0xfc, 0xb2, 0x62, 0xd6, 0x16, 0xc8, 0xbf, + 0x79, 0xab, 0x52, 0x2d, 0xbd, 0x52, 0x3c, 0xbd, + 0x49, 0x95, 0x2a, 0xd8, 0x9d, 0x2d, 0xd4, 0x5d, + 0x6b, 0xbb, 0x7e, 0x8e, 0xa0, 0x8f, 0x17, 0xf0, + 0x48, 0xc7, 0xf3, 0x3a, 0x4e, 0x47, 0x7b, 0x5e, + 0x1d, 0xb4, 0x45, 0xdd, 0x3c, 0x76, 0x71, 0x07, + 0x99, 0x7c, 0xd0, 0xbc, 0x91, 0x8a, 0x18, 0x65, + 0xec, 0xc2, 0x56, 0x65, 0x9b, 0x80, 0x7e, 0x65, + 0xfc, 0xb2, 0xbb, 0xa3, 0xf3, 0xc2, 0xb1, 0x2a, + 0xe5, 0x63, 0x7b, 0x15, 0xed, 0x20, 0x33, 0x61, + 0xe2, 0x97, 0xdc, 0xb6, 0x53, 0x40, 0x11, 0x62, + 0xf3, 0x17, 0x9a, 0xc9, 0x88, 0x1f, 0xf3, 0xd9, + 0x3c, 0x9b, 0x66, 0xf5, 0x1c, 0x4a, 0x1e, 0xb5, + 0x97, 0x14, 0x26, 0x2f, 0xf1, 0x13, 0x24, 0xb1, + 0xb8, 0x1d, 0x2d, 0x04, 0xf5, 0x20, 0xbb, 0xb5, + 0x4b, 0x39, 0x6d, 0x4d, 0xb2, 0xdd, 0x29, 0x82, + 0x71, 0xce, 0x85, 0x20, 0x3c, 0xe3, 0x54, 0x71, + 0x75, 0xd4, 0x7b, 0x90, 0xe7, 0x60, 0x1a, 0x3c, + 0x6a, 0x6f, 0xe4, 0x67, 0xd8, 0xec, 0x7e, 0x56, + 0x09, 0x79, 0x34, 0x1c, 0xd8, 0xf8, 0x76, 0xe2, + 0xae, 0xef, 0x29, 0x4f, 0xcf, 0xb9, 0xf7, 0x0d, + 0xd0, 0xd5, 0x89, 0xdd, 0x2c, 0x9a, 0xf0, 0x1a, + 0xd0, 0x68, 0xc2, 0x31, 0x81, 0x1f, 0xed, 0xc7, + 0x20, 0xd9, 0xa7, 0x2d, 0xbe, 0xd3, 0x77, 0xb0, + 0x76, 0x55, 0x00, 0x0a, 0xbd, 0x0c, 0x19, 0x52, + 0x80, 0x46, 0x5e, 0xec, 0x5f, 0x5b, 0xa5, 0x29, + 0x5c, 0xaf, 0x41, 0xe3, 0xb8, 0x4e, 0xd3, 0x8d, + 0xd2, 0xfb, 0x6a, 0xe7, 0xa3, 0x9c, 0xba, 0x41, + 0xb4, 0x93, 0x90, 0x4d, 0x7d, 0x56, 0x1d, 0x50, + 0x57, 0xa9, 0x28, 0xd9, 0xf2, 0x9f, 0x51, 0x3d, + 0x44, 0xdd, 0x39, 0x39, 0x97, 0xd8, 0xc8, 0x52, + 0xc6, 0xb7, 0xed, 0x50, 0x1e, 0x58, 0x22, 0x7d, + 0x69, 0xcf, 0xb6, 0x61, 0xf4, 0xd5, 0x10, 0x61, + 0xa8, 0x13, 0xdb, 0xd0, 0x7c, 0xc1, 0x7f, 0x3b, + 0x7d, 0x80, 0x43, 0x37, 0x21, 0x44, 0x4a, 0xb7, + 0x14, 0x63, 0xfa, 0x6a, 0x57, 0x7a, 0x55, 0xb1, + 0x27, 0x7b, 0x6c, 0x66, 0x97, 0xc9, 0x7b, 0xdf, + 0x4d, 0x32, 0x2b, 0x85, 0x57, 0x3d, 0x3b, 0x00, + 0x38, 0xec, 0x8f, 0xba, 0xe3, 0xb6, 0xb9, 0x4c, + 0x80, 0xc5, 0xe3, 0x8d, 0x73, 0x65, 0x5d, 0x74, + 0x91, 0xe6, 0x6d, 0xf3, 0x4b, 0xd7, 0xc3, 0x34, + 0x1b, 0x40, 0xd2, 0xc0, 0x10, 0x7d, 0x74, 0xf2, + 0xa1, 0x8d, 0xb9, 0x74, 0x84, 0x9e, 0x10, 0xcc, + 0x53, 0xc9, 0xca, 0x36, 0x9f, 0x4a, 0x86, 0xa8, + 0xf3, 0x23, 0xea, 0xbe, 0x7c, 0x2a, 0x94, 0x3d, + 0x2b, 0x35, 0xa2, 0x4c, 0xab, 0xf0, 0x5e, 0x78, + 0x81, 0x60, 0x74, 0x5f, 0x51, 0xe3, 0x74, 0xe5, + 0x92, 0xa0, 0x82, 0xbd, 0x92, 0x50, 0xc9, 0x20, + 0x81, 0xeb, 0x6f, 0xdc, 0x49, 0x56, 0xb8, 0x87, + 0x27, 0x2c, 0xd7, 0x4b, 0x1e, 0x31, 0x89, 0x85, + 0x5d, 0x12, 0x9b, 0xcf, 0xf7, 0x7c, 0x51, 0x24, + 0xce, 0x2d, 0x45, 0x61, 0xbb, 0x72, 0xcb, 0x3b, + 0xc5, 0xf9, 0x90, 0x80, 0x51, 0x6b, 0x98, 0x09, + 0xb2, 0x0c, 0xe9, 0x06, 0x64, 0x1f, 0x5d, 0xd9, + 0x2c, 0xee, 0x35, 0xd5, 0x72, 0xe6, 0xca, 0xfe, + 0x3d, 0xc6, 0x9a, 0x57, 0x45, 0x2e, 0x60, 0xc3, + 0xfb, 0xb5, 0x4f, 0x45, 0x68, 0x35, 0x37, 0x5c, + 0x8b, 0x4b, 0x73, 0x92, 0x1b, 0x14, 0x18, 0x6e, + 0x51, 0x6b, 0x60, 0x6e, 0x66, 0x5e, 0x45, 0x61, + 0xf9, 0x56, 0x2f, 0x12, 0xb1, 0x14, 0x0e, 0x42, + 0xc9, 0xed, 0x53, 0x5c, 0x7c, 0x7a, 0x84, 0xb5, + 0x6e, 0xff, 0xda, 0xc3, 0xc5, 0x1e, 0x32, 0x67, + 0x1c, 0x40, 0xdc, 0xc4, 0x7b, 0x9e, 0xac, 0x82, + 0xe3, 0x22, 0xcb, 0x62, 0x3b, 0xb2, 0x3f, 0xcc, + 0xc7, 0x29, 0xa4, 0xcc, 0x59, 0x9b, 0xff, 0x74, + 0x1c, 0x15, 0xd4, 0xd6, 0xc4, 0x8a, 0x4f, 0x04, + 0xa6, 0xd8, 0x87, 0x6a, 0x37, 0x9c, 0x4f, 0x6d, + 0xde, 0x39, 0x56, 0xa2, 0x00, 0x19, 0x10, 0x8d, + 0x3b, 0xa6, 0x79, 0x7a, 0xa0, 0x1b, 0x68, 0x0e, + 0xff, 0x22, 0x53, 0x48, 0x0a, 0xae, 0x97, 0x17, + 0x40, 0x13, 0x2d, 0xe1, 0x2e, 0xba, 0x56, 0xd4, + 0xd7, 0x13, 0xf7, 0x96, 0xdc, 0x29, 0x9a, 0x3b, + 0x9f, 0x07, 0xf4, 0xe0, 0x4e, 0x9b, 0x1d, 0x6f, + 0xf7, 0xfd, 0x3a, 0x30, 0xbe, 0xc5, 0x25, 0xb4, + 0xbc, 0x54, 0xb4, 0x3e, 0xc9, 0x6b, 0xdc, 0x67, + 0xa4, 0x47, 0xa7, 0xef, 0xad, 0xe7, 0x94, 0x43, + 0x0e, 0x80, 0xd8, 0xab, 0xee, 0x76, 0x09, 0xc2, + 0x28, 0x37, 0x63, 0x74, 0x5f, 0xf9, 0x97, 0x54, + 0xcb, 0x78, 0xbb, 0x6c, 0xc5, 0xdc, 0x7d, 0x45, + 0x08, 0x25, 0x24, 0xc3, 0xe7, 0x72, 0xc1, 0x6b, + 0x3d, 0xe5, 0x0f, 0x5d, 0x08, 0x20, 0x7e, 0xa0, + 0x53, 0x0b, 0x0d, 0x06, 0x0c, 0xed, 0x23, 0xbb, + 0x39, 0x1a, 0x71, 0x2d, 0x4e, 0xbd, 0x6f, 0xb5, + 0x44, 0x8d, 0x4b, 0x62, 0x82, 0x43, 0x42, 0x57, + 0xd1, 0x98, 0x30, 0x16, 0x81, 0x5f, 0xa4, 0x07, + 0x7e, 0x06, 0xc7, 0x51, 0xf6, 0xa4, 0x4a, 0x1c, + 0x9d, 0xd7, 0x08, 0x43, 0xcd, 0x72, 0x07, 0xf9, + 0xc6, 0x96, 0xde, 0x99, 0x6c, 0x9f, 0x0d, 0xb9, + 0x7e, 0xc7, 0x30, 0x76, 0x26, 0xf7, 0x2c, 0xd9, + 0x0e, 0xfd, 0xeb, 0x76, 0xea, 0x40, 0xfa, 0x10, + 0x5f, 0x33, 0x19, 0x82, 0x8c, 0x1c, 0x8c, 0xf8, + 0xc1, 0x81, 0x33, 0xba, 0xa5, 0x6b, 0xef, 0xb5, + 0xbe, 0x70, 0xc3, 0x3a, 0xec, 0x7b, 0x7f, 0x44, + 0xc1, 0x67, 0xf6, 0xd3, 0xa9, 0x6a, 0x7e, 0x52, + 0x24, 0x9c, 0x9e, 0x80, 0xe1, 0xa9, 0x2f, 0x33, + 0xfc, 0xd6, 0x1d, 0x20, 0xce, 0x0f, 0x9e, 0xe7, + 0xdc, 0x10, 0xf7, 0x5c, 0x49, 0x43, 0x4a, 0x08, + 0x49, 0x83, 0x57, 0x42, 0x4c, 0xce, 0x62, 0x0e, + 0x66, 0xdd, 0x5d, 0x3f, 0xcb, 0xf6, 0x58, 0x62, + 0xb9, 0x6c, 0xe3, 0xd3, 0xef, 0xaa, 0x79, 0x57, + 0xe6, 0xcf, 0xdc, 0x5a, 0x12, 0x2d, 0xca, 0x15, + 0xb7, 0xcd, 0x4b, 0x0e, 0x1f, 0xdd, 0x02, 0x8f, + 0xfe, 0x25, 0xdd, 0xe1, 0xdc, 0xe3, 0x45, 0x88, + 0x3f, 0x43, 0x36, 0x75, 0xaf, 0x2f, 0xed, 0x0a, + 0x22, 0xc0, 0xfd, 0x1a, 0x06, 0x56, 0x26, 0xf7, + 0x68, 0xd5, 0x12, 0x02, 0xea, 0xc5, 0x60, 0xef, + 0x3f, 0x46, 0x8b, 0x3d, 0xb1, 0x40, 0x1d, 0xdc, + 0xfd, 0x88, 0x83, 0x81, 0xec, 0xfd, 0xf5, 0x21, + 0xa0, 0x1c, 0x53, 0xfc, 0x79, 0x1e, 0xc5, 0xbe, + 0x6c, 0x18, 0x9d, 0x7e, 0x40, 0x9a, 0xeb, 0x1a, + 0x04, 0x41, 0x5f, 0xd9, 0x63, 0xe8, 0x0c, 0x78, + 0xda, 0xad, 0x0b, 0xbb, 0x91, 0x2f, 0x88, 0x04, + 0xc3, 0xd5, 0x41, 0x5d, 0x2a, 0x36, 0x71, 0x66, + 0x61, 0xa3, 0x05, 0xfb, 0xd2, 0xc3, 0x61, 0x05, + 0x03, 0x64, 0xf0, 0xb8, 0xf2, 0x73, 0xc8, 0xde, + 0x86, 0xca, 0xad, 0xa4, 0x8c, 0x2b, 0xf5, 0xd2, + 0x3f, 0x84, 0x82, 0x07, 0xbc, 0x5d, 0x75, 0xb3, + 0x37, 0xa3, 0x83, 0x99, 0x23, 0x61, 0x27, 0xbc, + 0xa3, 0x5a, 0x22, 0x01, 0x14, 0x22, 0x88, 0x61, + 0x7b, 0x42, 0x8f, 0x26, 0xb9, 0x99, 0xda, 0xdb, + 0x9c, 0xec, 0x14, 0xe2, 0x96, 0x83, 0x66, 0xc7, + 0xeb, 0x4b, 0xfb, 0xc2, 0x8a, 0x00, 0xf7, 0xac, + 0x8c, 0x73, 0x1b, 0xc6, 0xd9, 0x6b, 0x6d, 0x37, + 0x7a, 0x94, 0xf1, 0xeb, 0x1b, 0x52, 0x2e, 0xab, + 0x8b, 0xfc, 0x77, 0x25, 0x8f, 0x21, 0x4a, 0x07, + 0x7d, 0x99, 0xf4, 0x55, 0x22, 0xcc, 0x49, 0xdd, + 0x26, 0x35, 0x15, 0xe7, 0x40, 0xac, 0xac, 0x8c, + 0xd0, 0x58, 0x9d, 0xd4, 0x72, 0x10, 0x81, 0xc9, + 0xc0, 0x46, 0x09, 0x2e, 0x12, 0xb9, 0x74, 0x1d, + 0xa2, 0x80, 0xce, 0x9e, 0x04, 0x42, 0xf6, 0x55, + 0xc1, 0xe9, 0xc5, 0xe4, 0x92, 0x56, 0xe0, 0xb8, + 0x7d, 0x3d, 0x21, 0x39, 0x58, 0x05, 0x50, 0xfd, + 0x54, 0xb8, 0x08, 0xe1, 0xc2, 0x32, 0xe2, 0x89, + 0xee, 0x0e, 0x8a, 0x57, 0xb0, 0xe2, 0x29, 0x9f, + 0x78, 0x0f, 0x56, 0x37, 0x5e, 0x34, 0x96, 0xdc, + 0x6d, 0xde, 0xc0, 0xad, 0x27, 0xf9, 0xa2, 0x57, + 0xec, 0xa9, 0x30, 0x9e, 0x8e, 0xf1, 0x5c, 0xc5, + 0xfd, 0x20, 0x83, 0x28, 0x26, 0x2a, 0xbc, 0x22, + 0x8d, 0x92, 0x65, 0xe2, 0xf7, 0x3d, 0x60, 0xe5, + 0xeb, 0x44, 0x1c, 0xa0, 0xde, 0x04, 0x07, 0x19, + 0x52, 0x60, 0xb1, 0x07, 0x34, 0x97, 0xec, 0x81, + 0x25, 0x9f, 0x59, 0xe9, 0x67, 0x73, 0x5e, 0x40, + 0xd3, 0xc9, 0x50, 0xa8, 0x6e, 0x2b, 0xff, 0x97, + 0x40, 0x1d, 0xd0, 0x4b, 0xa4, 0x04, 0x39, 0x01, + 0x13, 0xe3, 0x30, 0x85, 0x20, 0x0b, 0x76, 0xae, + 0x40, 0x0f, 0x64, 0x0d, 0x60, 0xcc, 0x84, 0x8e, + 0xf4, 0x86, 0xc3, 0x3d, 0x8f, 0x38, 0x94, 0xde, + 0xfc, 0xfe, 0x58, 0xcd, 0x76, 0x67, 0x3d, 0xb0, + 0xfb, 0x27, 0x4a, 0x1a, 0x8f, 0xe4, 0xad, 0xb7, + 0x74, 0x81, 0x19, 0x98, 0x3d, 0xea, 0xe3, 0x63, + 0x78, 0x44, 0xb9, 0x86, 0xcb, 0xe9, 0x79, 0xc6, + 0x08, 0x55, 0xe4, 0xbf, 0xe7, 0xd3, 0xfb, 0x08, + 0xd7, 0xfb, 0x96, 0x9a, 0x6b, 0xd1, 0xb4, 0xf3, + 0x8a, 0xbb, 0xb4, 0xfd, 0x1b, 0x0f, 0x45, 0xf9, + 0x40, 0xd8, 0x13, 0x68, 0xfa, 0xc4, 0x41, 0xb4, + 0x3e, 0xe1, 0xbd, 0x7d, 0xfc, 0xa3, 0xb9, 0x7e, + 0x79, 0x7f, 0x3b, 0x0c, 0xa6, 0x97, 0x80, 0x0b, + 0x1d, 0x98, 0x80, 0x3f, 0xe4, 0x22, 0x3a, 0xf5, + 0x48, 0x98, 0x93, 0x41, 0x75, 0x0e, 0x23, 0x11, + 0xab, 0x39, 0x29, 0x11, 0xfc, 0x5a, 0x1f, 0xde, + 0x1a, 0x61, 0xa7, 0xbc, 0x54, 0x9d, 0x02, 0xa3, + 0xb8, 0xd9, 0xdd, 0xb0, 0x13, 0x0f, 0x45, 0x3e, + 0x0b, 0x18, 0x1b, 0x2b, 0x4a, 0x8b, 0x25, 0x77, + 0x8d, 0xdf, 0x9f, 0x41, 0xa7, 0xea, 0x09, 0xb4, + 0x57, 0x11, 0xae, 0x36, 0x92, 0x13, 0x5a, 0xc1, + 0x1a, 0xf2, 0xa4, 0x22, 0x6e, 0x02, 0x4b, 0xf9, + 0xa5, 0xbe, 0xda, 0x56, 0x07, 0x4b, 0x5d, 0x39, + 0xf1, 0x4e, 0xbc, 0xba, 0x03, 0x64, 0x6b, 0xa7, + 0x51, 0x7e, 0x32, 0x05, 0xe8, 0x39, 0x0b, 0xfa, + 0x7a, 0x7f, 0xb0, 0x51, 0xe7, 0x7c, 0xe0, 0xd9, + 0x05, 0x36, 0x25, 0xef, 0xf2, 0xb7, 0x60, 0xec, + 0x68, 0x25, 0xac, 0xd1, 0xb3, 0x0b, 0xc5, 0x9f, + 0x73, 0xde, 0xb0, 0xb5, 0x03, 0x68, 0xfb, 0xd6, + 0xc6, 0x41, 0xce, 0x9b, 0x8e, 0x41, 0x73, 0xa6, + 0x72, 0x71, 0x5d, 0x15, 0xa6, 0x09, 0xbb, 0x78, + 0xbd, 0x94, 0x52, 0x2e, 0x59, 0x46, 0x36, 0xbe, + 0x58, 0x17, 0xa7, 0xbb, 0xbe, 0x95, 0xa4, 0xca, + 0x25, 0x4f, 0x02, 0xed, 0x09, 0xc4, 0x5e, 0x0f, + 0xf1, 0x64, 0xd1, 0x36, 0x7b, 0x5c, 0xd6, 0xe7, + 0xc4, 0xcb, 0x62, 0x00, 0x67, 0xc7, 0x26, 0x4f, + 0xf1, 0x85, 0x68, 0xef, 0xcc, 0xb3, 0xda, 0xc0, + 0x70, 0xbf, 0xd6, 0x89, 0x24, 0x28, 0xbd, 0x52, + 0xf7, 0x45, 0x68, 0xc6, 0x33, 0x5a, 0x35, 0x2c, + 0xca, 0x3d, 0xac, 0xa3, 0x26, 0xb0, 0x5d, 0xf9, + 0x15, 0x7b, 0xa7, 0xd4, 0xb6, 0xe4, 0xc9, 0x57, + 0xdd, 0x04, 0x42, 0xd5, 0x61, 0x1b, 0xe8, 0x29, + 0xd8, 0x36, 0xf3, 0x2c, 0x5b, 0x6e, 0xc5, 0x13, + 0xf2, 0x39, 0x79, 0x01, 0x0f, 0xcf, 0x04, 0x4e, + 0x62, 0x59, 0x40, 0xa9, 0x21, 0x37, 0xb9, 0x8d, + 0x09, 0x17, 0x6e, 0x3f, 0x09, 0x03, 0xd5, 0x50, + 0xb3, 0x14, 0x07, 0x1e, 0x38, 0x52, 0x42, 0xbd, + 0x81, 0x8e, 0xf1, 0xe9, 0x43, 0xe3, 0xc9, 0xbf, + 0x86, 0x1e, 0xac, 0xcb, 0xa0, 0xa1, 0x3c, 0x2f, + 0x2b, 0xab, 0xe2, 0x95, 0x48, 0xfb, 0x62, 0xe0, + 0x29, 0xae, 0x03, 0xaf, 0x67, 0x2e, 0x3c, 0xa8, + 0xbf, 0xa2, 0xb7, 0x14, 0x79, 0x0d, 0x37, 0x7d, + 0x0b, 0x95, 0x36, 0x98, 0x72, 0x12, 0x27, 0x60, + 0xd8, 0x74, 0x66, 0xf2, 0x05, 0xe6, 0x32, 0x7c, + 0x8c, 0x81, 0x7a, 0x15, 0x68, 0xf1, 0x46, 0x34, + 0xcd, 0x3c, 0x46, 0x9c, 0xa9, 0x1b, 0x90, 0x17, + 0xed, 0xd2, 0x2b, 0x85, 0xd9, 0xc4, 0x93, 0x0b, + 0xa6, 0xb8, 0x60, 0x19, 0x84, 0x02, 0x13, 0xe2, + 0x8f, 0x5e, 0xa7, 0x9c, 0x20, 0x90, 0x12, 0xda, + 0xeb, 0x2c, 0xf7, 0x30, 0x29, 0x4b, 0xe6, 0x6d, + 0xb0, 0xad, 0x9e, 0x1f, 0x92, 0xda, 0x2a, 0xa8, + 0x3a, 0xa0, 0x10, 0xde, 0x63, 0x67, 0xb5, 0x08, + 0xff, 0x70, 0xfc, 0xbb, 0x2b, 0x8c, 0x8a, 0xf6, + 0xac, 0x53, 0x5e, 0xb5, 0x80, 0x23, 0x08, 0x37, + 0x2b, 0x11, 0xb6, 0x19, 0xaa, 0xd4, 0x36, 0x12, + 0xbc, 0xfa, 0x5d, 0x80, 0x0d, 0x6e, 0xbf, 0xb9, + 0xf6, 0x9b, 0x09, 0xd7, 0x9f, 0xc2, 0x5a, 0xef, + 0x11, 0xd7, 0x86, 0x6e, 0x76, 0xac, 0x08, 0xb1, + 0x72, 0xb4, 0x3c, 0x60, 0x18, 0x67, 0xa5, 0x68, + 0x94, 0xac, 0xcf, 0xb2, 0xe6, 0x2d, 0xd6, 0x40, + 0x8b, 0x1f, 0xc0, 0x47, 0xb8, 0x59, 0x35, 0xdf, + 0x2d, 0x7c, 0xfc, 0x36, 0x1a, 0xbe, 0x4e, 0xb9, + 0x6e, 0x86, 0xff, 0x45, 0xc1, 0xcf, 0x67, 0xd2, + 0xf6, 0x0d, 0x8c, 0x25, 0xc7, 0x3d, 0xee, 0x90, + 0x07, 0xd8, 0x16, 0x6a, 0xa5, 0xac, 0x1a, 0x58, + 0xb2, 0xe2, 0x9f, 0x2a, 0x23, 0x66, 0x45, 0xbf, + 0x1b, 0x2d, 0xed, 0x7a, 0x48, 0x7b, 0x79, 0x54, + 0x6b, 0xca, 0xe8, 0x17, 0xca, 0x73, 0x55, 0x12, + 0x0d, 0x37, 0x82, 0xa5, 0x81, 0x65, 0x74, 0x20, + 0xbe, 0x8e, 0xdd, 0x02, 0x7b, 0x85, 0x4d, 0x5a, + 0xaa, 0xcc, 0x69, 0xc0, 0x77, 0xb3, 0x34, 0xaf, + 0x25, 0xab, 0x68, 0xf4, 0x76, 0x8f, 0xf9, 0x33, + 0x5b, 0x97, 0xd7, 0x2c, 0x60, 0xed, 0xff, 0x49, + 0xf0, 0xf4, 0xb3, 0x98, 0x0d, 0x88, 0xd4, 0xd8, + 0xaa, 0x09, 0x59, 0xcb, 0x3a, 0x29, 0x72, 0x60, + 0x88, 0xe0, 0xd0, 0xd2, 0x03, 0xb5, 0x05, 0xf5, + 0x1b, 0xa6, 0xc3, 0x02, 0x0a, 0x5c, 0xe2, 0xc1, + 0xf8, 0x73, 0x22, 0x01, 0x8c, 0x70, 0x1b, 0x9a, + 0xdb, 0xda, 0x66, 0x64, 0xf2, 0xd1, 0x76, 0xef, + 0xa4, 0x5b, 0xef, 0xc3, 0x78, 0x0e, 0x83, 0x03, + 0x23, 0xc4, 0x3d, 0xa3, 0xaf, 0xd4, 0x7e, 0x39, + 0xf6, 0x30, 0xf5, 0x5c, 0x6d, 0x6b, 0xaa, 0xc8, + 0x4f, 0xe8, 0xc4, 0xfc, 0xe4, 0x8f, 0xa2, 0x87, + 0x3c, 0x2b, 0x13, 0x3f, 0xe4, 0x0a, 0xf7, 0x90, + 0x47, 0x1e, 0x78, 0x58, 0x69, 0x9e, 0x93, 0xa4, + 0xb0, 0x33, 0x86, 0x3b, 0x0b, 0x4f, 0xaa, 0xb5, + 0x09, 0xff, 0xa3, 0x25, 0x24, 0x60, 0xed, 0x23, + 0xa5, 0x63, 0x27, 0x44, 0xf9, 0x82, 0xbd, 0x7b, + 0x84, 0x1d, 0x50, 0xf4, 0x84, 0xcb, 0x90, 0x45, + 0xb2, 0x35, 0x30, 0x2a, 0x41, 0x9e, 0x19, 0xc7, + 0xbe, 0x70, 0x9a, 0xff, 0x94, 0x1d, 0xaf, 0x7f, + 0xa5, 0x41, 0x85, 0x7a, 0x5b, 0x78, 0x98, 0x0c, + 0xa6, 0x39, 0x3b, 0xb9, 0xa5, 0xfe, 0xca, 0xd2, + 0x21, 0x8b, 0x84, 0xc1, 0x2e, 0xa4, 0x0f, 0x59, + 0x84, 0x51, 0x16, 0xb5, 0xef, 0x62, 0x3f, 0x78, + 0xc0, 0x7e, 0x2d, 0x5f, 0xd1, 0x88, 0x89, 0x05, + 0xda, 0xdf, 0x73, 0x1a, 0x04, 0xa1, 0x1b, 0xa4, + 0x04, 0x29, 0xdf, 0x00, 0x44, 0x02, 0xa9, 0xd6, + 0x0b, 0x4a, 0x52, 0x65, 0x99, 0x1e, 0x1a, 0x6c, + 0xc1, 0xc1, 0xb0, 0x36, 0x07, 0x61, 0x92, 0xc2, + 0x22, 0x12, 0x5a, 0x09, 0x36, 0x66, 0x07, 0xe2, + 0x6c, 0x84, 0xd4, 0xf3, 0x72, 0x07, 0xf1, 0x49, + 0x48, 0x20, 0xe3, 0x8d, 0x8b, 0x56, 0xf1, 0xf5, + 0x9e, 0x93, 0x93, 0x48, 0x42, 0xa3, 0xf9, 0x95, + 0x6d, 0x9a, 0xd8, 0x1c, 0x06, 0x05, 0x93, 0x4f, + 0x89, 0x51, 0x1f, 0x41, 0xd8, 0xed, 0x6d, 0x59, + 0x1c, 0x43, 0x0f, 0x34, 0x78, 0xaf, 0x9b, 0x78, + 0xe9, 0x48, 0x4f, 0x7f, 0x0d, 0x57, 0x3b, 0x2b, + 0x47, 0xab, 0x1d, 0xb0, 0xaa, 0x41, 0xbe, 0xd2, + 0x52, 0x28, 0x27, 0x27, 0xf7, 0xc3, 0x6d, 0x88, + 0xcd, 0x28, 0x2b, 0x50, 0xa0, 0xc4, 0x1b, 0x47, + 0xb9, 0x57, 0x7f, 0xec, 0xda, 0x6a, 0xe2, 0xaa, + 0x39, 0xde, 0x3d, 0x90, 0x04, 0x00, 0x41, 0xd9, + 0x69, 0xe8, 0x4e, 0x60, 0x56, 0xb5, 0xd8, 0x80, + 0xf2, 0x32, 0x8c, 0xe0, 0x01, 0x99, 0x2e, 0x4c, + 0xc0, 0x4f, 0xe0, 0x2c, 0x4a, 0xc7, 0x76, 0xb7, + 0xbb, 0xa6, 0x5a, 0x69, 0x83, 0x2d, 0xa3, 0xb0, + 0x01, 0x09, 0xd3, 0x6b, 0x19, 0xb0, 0x41, 0x57, + 0x4f, 0x2e, 0x14, 0x18, 0xc9, 0xfc, 0x08, 0xd8, + 0x3c, 0x85, 0xfe, 0x8f, 0xd6, 0xc3, 0x93, 0x6f, + 0xe0, 0xc1, 0x13, 0x7f, 0x36, 0xc8, 0x0a, 0x58, + 0x1d, 0x32, 0x72, 0x45, 0xa9, 0x0d, 0xc2, 0x3c, + 0xc7, 0xa5, 0x3f, 0xf6, 0x1a, 0xd0, 0x35, 0x9e, + 0x47, 0x85, 0x7c, 0x8c, 0x5c, 0x38, 0xce, 0x9d, + 0xd5, 0x68, 0xbd, 0x6f, 0x2e, 0x9a, 0xf9, 0x0d, + 0x51, 0xa3, 0x7e, 0x42, 0x3c, 0x95, 0x4e, 0x19, + 0xe8, 0x57, 0xd3, 0x29, 0xb8, 0x5c, 0x7b, 0x6b, + 0x64, 0xb8, 0xa6, 0x9d, 0x7f, 0x95, 0xde, 0x09, + 0xd1, 0x84, 0x7f, 0x86, 0xe5, 0xfa, 0xb5, 0x66, + 0x6c, 0x52, 0x9f, 0x59, 0xe5, 0x29, 0x6d, 0x58, + 0x52, 0x59, 0x2c, 0x2c, 0x10, 0x59, 0xb9, 0x1f, + 0x92, 0x4e, 0x9e, 0xc2, 0xf7, 0xc5, 0x53, 0xb7, + 0x4f, 0x48, 0xfa, 0x4e, 0xea, 0x73, 0x93, 0x55, + 0x97, 0x26, 0x3f, 0xd0, 0xf7, 0x9e, 0x1f, 0xad, + 0xfb, 0x57, 0x7b, 0x1f, 0x12, 0xcd, 0x81, 0xe1, + 0x0e, 0x5b, 0x7d, 0xda, 0x97, 0xbd, 0x2a, 0xa3, + 0x1c, 0xed, 0xc1, 0x83, 0x84, 0x92, 0x09, 0x17, + 0x14, 0x8c, 0x49, 0xd1, 0x8d, 0x98, 0xf9, 0xdb, + 0x9d, 0xbf, 0x07, 0x64, 0x12, 0xfa, 0x46, 0x9e, + 0x22, 0x3a, 0x2d, 0x9a, 0xda, 0xf1, 0x99, 0xb6, + 0xbf, 0x1e, 0x79, 0x91, 0x2b, 0x2b, 0x86, 0x2d, + 0xbe, 0x67, 0xb0, 0x0a, 0x46, 0x32, 0xbf, 0x24, + 0xeb, 0xa7, 0xf0, 0x57, 0x75, 0xa6, 0xf6, 0x3b, + 0x75, 0x5d, 0x6c, 0x72, 0x0e, 0x70, 0x9c, 0x85, + 0x6e, 0x26, 0xaa, 0x7d, 0xb8, 0x4d, 0xf5, 0xb4, + 0x74, 0xb9, 0x05, 0xcc, 0xcb, 0xa6, 0xef, 0x15, + 0x75, 0x30, 0xab, 0xc9, 0xab, 0x20, 0xc7, 0x58, + 0xbe, 0x20, 0x0d, 0x5e, 0xaa, 0x37, 0x9c, 0xc8, + 0x22, 0x39, 0x7b, 0x80, 0xb3, 0xbd, 0xd8, 0x18, + 0x62, 0x10, 0xd9, 0xa7, 0x1f, 0xee, 0x8e, 0x8b, + 0x90, 0x52, 0x1f, 0xa3, 0xe0, 0x07, 0xc2, 0x81, + 0xeb, 0x68, 0x74, 0x6d, 0xef, 0xf8, 0xb4, 0xbb, + 0xbf, 0x08, 0xe8, 0x8b, 0x21, 0x00, 0xa7, 0x53, + 0x2b, 0xd6, 0x95, 0x45, 0xb0, 0xb2, 0x3b, 0x08, + 0xe2, 0x49, 0xf6, 0xb2, 0xae, 0xc1, 0xf6, 0x19, + 0xd1, 0x0a, 0xf0, 0x73, 0xbd, 0x01, 0x89, 0xd0, + 0x68, 0xc2, 0xbb, 0xdb, 0x67, 0x6c, 0x8c, 0xe5, + 0x9f, 0x09, 0xff, 0x80, 0x74, 0x61, 0xe7, 0xa9, + 0x1a, 0xbe, 0xca, 0x0b, 0x2a, 0x1d, 0x6a, 0x6c, + 0x04, 0xa0, 0x61, 0x40, 0x70, 0x85, 0x2f, 0x24, + 0x72, 0xec, 0x1a, 0x4b, 0xa0, 0x35, 0x95, 0x06, + 0xa9, 0x7c, 0x1f, 0x90, 0x77, 0xd5, 0xb6, 0xdd, + 0x7f, 0x41, 0x0f, 0xcd, 0x82, 0xd0, 0x19, 0xc4, + 0x7e, 0x89, 0xd6, 0x33, 0x8a, 0x68, 0x9d, 0x44, + 0x74, 0x2e, 0x6a, 0x84, 0xb4, 0xe4, 0x86, 0x35, + 0xd9, 0x19, 0x21, 0x44, 0x57, 0x80, 0x20, 0xb0, + 0xf0, 0xdb, 0xcd, 0xe7, 0x50, 0x17, 0x0c, 0x00, + 0x79, 0x28, 0xb6, 0xe0, 0xfa, 0x94, 0xc2, 0x96, + 0x8d, 0xf9, 0xc4, 0x8c, 0x02, 0xb9, 0x4a, 0x6f, + 0xa4, 0x57, 0x73, 0x91, 0x1b, 0x31, 0x29, 0xfc, + 0x7d, 0x53, 0x61, 0x01, 0x95, 0xd8, 0x5c, 0xa6, + 0x1f, 0xc4, 0x72, 0xf5, 0xd2, 0x98, 0xc6, 0xa9, + 0x50, 0x2a, 0x40, 0x01, 0xe4, 0xb0, 0x0a, 0x4c, + 0x38, 0x2c, 0x3a, 0xdc, 0x2a, 0x4e, 0x23, 0x69, + 0x55, 0x1a, 0x21, 0xcd, 0x14, 0xae, 0x22, 0xe9, + 0x42, 0x31, 0xa3, 0x0a, 0x73, 0x77, 0x8e, 0x80, + 0x56, 0xc0, 0x9e, 0xc2, 0xca, 0xb2, 0x0f, 0xb5, + 0x1e, 0x3a, 0x96, 0xf5, 0x32, 0xc5, 0x46, 0xd1, + 0x02, 0x96, 0x50, 0x9c, 0x2a, 0xd4, 0xef, 0x06, + 0x04, 0xc2, 0x61, 0xf6, 0xb8, 0x41, 0x08, 0x74, + 0x04, 0xbc, 0x4e, 0x18, 0xc8, 0x72, 0x18, 0xc2, + 0xc8, 0xbe, 0xde, 0x52, 0x7d, 0xc0, 0x83, 0xc0, + 0x9b, 0xe2, 0xd8, 0xbd, 0x38, 0x38, 0xd9, 0xa3, + 0xa9, 0x5c, 0x6e, 0xba, 0x38, 0xe6, 0x4e, 0xea, + 0x7c, 0xb1, 0x10, 0x59, 0x41, 0x9e, 0x64, 0xd9, + 0x41, 0x01, 0xbc, 0x94, 0x77, 0x0b, 0x12, 0x1e, + 0xbf, 0x92, 0x98, 0xbc, 0xe9, 0x8b, 0xb0, 0x25, + 0x1f, 0xb5, 0xe0, 0xcb, 0x7d, 0xd2, 0x15, 0xa3, + 0x0e, 0x67, 0x50, 0x30, 0x80, 0xe2, 0x83, 0xe2, + 0x5f, 0xe8, 0xa8, 0x44, 0x84, 0x89, 0x30, 0x2c, + 0x66, 0x26, 0x7e, 0x22, 0xba, 0xfa, 0xa5, 0xd0, + 0x15, 0x82, 0x9d, 0x2c, 0x23, 0x49, 0x79, 0x22, + 0x91, 0x94, 0xc0, 0x73, 0xe8, 0xf8, 0x05, 0x26, + 0x8c, 0x5c, 0xc4, 0xf0, 0xae, 0x88, 0x53, 0xce, + 0x5d, 0x7b, 0xaf, 0x39, 0x07, 0x33, 0x7a, 0x3d, + 0x9b, 0xe3, 0x4a, 0x5a, 0xbe, 0xeb, 0xed, 0x0f, + 0x3b, 0xfe, 0xe2, 0x44, 0x59, 0x52, 0xdc, 0xab, + 0x76, 0xfa, 0x44, 0xb8, 0x8e, 0x63, 0x9c, 0x86, + 0xeb, 0x9e, 0x3f, 0x36, 0x07, 0x49, 0xf5, 0x06, + 0x70, 0xa2, 0x92, 0x24, 0xff, 0x82, 0x3b, 0xd2, + 0x31, 0x37, 0x71, 0x66, 0xe4, 0x1d, 0x56, 0x6e, + 0x55, 0x53, 0xb0, 0x7c, 0x5d, 0x16, 0xa6, 0xb3, + 0x1d, 0x6f, 0x53, 0x8c, 0x79, 0x2e, 0xe2, 0xe8, + 0xa5, 0x94, 0x41, 0x33, 0xaf, 0xc6, 0x5c, 0x10, + 0xd9, 0x2f, 0xa7, 0xf0, 0xbe, 0xf1, 0xe5, 0x3b, + 0x60, 0x72, 0x74, 0xc3, 0x26, 0x9b, 0x01, 0x6f, + 0xa2, 0x67, 0xa4, 0xcf, 0x00, 0xb8, 0x31, 0xf5, + 0xda, 0x6b, 0x69, 0x30, 0x4f, 0x39, 0x37, 0x2c, + 0x90, 0xf3, 0x2e, 0xff, 0x49, 0x4b, 0xfd, 0x1b, + 0xd6, 0xa1, 0xfe, 0xbd, 0x14, 0x2d, 0x8f, 0xad, + 0x73, 0xb0, 0x43, 0xa1, 0x48, 0x85, 0xa0, 0xf0, + 0x53, 0xcc, 0xd5, 0xf3, 0xe9, 0x58, 0xb2, 0xca, + 0x53, 0x02, 0x0b, 0x44, 0x86, 0xec, 0xe2, 0x1e, + 0xc8, 0xca, 0x07, 0x5b, 0x1d, 0xb4, 0x2f, 0x8e, + 0xe4, 0xf4, 0x38, 0x5b, 0xb0, 0x0a, 0xb9, 0xa3, + 0xe7, 0xe7, 0x05, 0x98, 0x5a, 0x56, 0x19, 0x59, + 0x46, 0xd8, 0xa9, 0xd1, 0xd8, 0x45, 0x3c, 0xcb, + 0x3f, 0xe4, 0xbf, 0x4f, 0x14, 0xfc, 0x88, 0x1d, + 0xb7, 0x7b, 0xf4, 0x95, 0xb6, 0xcc, 0x79, 0xc3, + 0x25, 0x9d, 0x7a, 0x95, 0x7a, 0xa2, 0xfb, 0xbf, + 0xf2, 0x32, 0x3a, 0x7d, 0x18, 0x84, 0x8b, 0xc2, + 0x1e, 0x9c, 0x86, 0x52, 0x70, 0xe4, 0x4d, 0x74, + 0x4f, 0xe0, 0xa3, 0x0a, 0x2a, 0x31, 0x03, 0x47, + 0x0d, 0x3c, 0xab, 0xb9, 0xc0, 0xf5, 0x09, 0x3d, + 0x5e, 0x5f, 0x62, 0x7c, 0xc0, 0xd4, 0x1f, 0x26, + 0x4b, 0x53, 0x5f, 0x63, 0x65, 0x7e, 0xb2, 0xba, + 0xd6, 0x24, 0x60, 0xc8, 0xe8, 0xf7, 0xf9, 0x05, + 0x34, 0xaf, 0xed, 0xef, 0xf9, 0x3f, 0x75, 0x7b, + 0x99, 0xa0, 0xc7, 0xca, 0x40, 0x63, 0x67, 0x6c, + 0x90, 0xa0, 0xb6, 0xe6, 0xed, 0xf1, 0x12, 0x73, + 0x77, 0x8e, 0x97, 0xa5, 0xa7, 0xb1, 0xd1, 0xf3, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x0e, 0x19, 0x1f, 0x25, + 0x2c, 0x36, 0x40, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa87", + .pk_len =3D DILITHIUM87_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM87_PUBLICKEYBYTES]){ + 0x02, 0xc2, 0x08, 0xda, 0x0f, 0x0e, 0x0c, 0x49, + 0x39, 0xab, 0x53, 0x31, 0x83, 0x2e, 0x41, 0x5d, + 0xe4, 0x76, 0x31, 0x1e, 0x65, 0x71, 0xe5, 0xb6, + 0x8d, 0xe8, 0xb3, 0xa5, 0xd9, 0x9e, 0xb7, 0x99, + 0x1a, 0x3d, 0x3e, 0xa9, 0x54, 0xf8, 0xb3, 0x74, + 0xe7, 0x01, 0x02, 0x4e, 0x23, 0xbf, 0x9b, 0xd3, + 0x2a, 0x03, 0xd6, 0x1a, 0x96, 0x7f, 0xf8, 0xc2, + 0xc5, 0x36, 0x3b, 0x4f, 0xe1, 0x96, 0x93, 0x59, + 0x06, 0x28, 0x64, 0xce, 0x2e, 0x73, 0xad, 0xab, + 0xf6, 0x57, 0xe1, 0x84, 0x1c, 0x7d, 0x7b, 0x9b, + 0x70, 0x33, 0x12, 0x48, 0x04, 0xe6, 0x1c, 0x6b, + 0x5b, 0x45, 0x37, 0xcd, 0x5f, 0x00, 0x2e, 0x21, + 0xb9, 0xd5, 0x86, 0x2d, 0x3e, 0x50, 0x30, 0x42, + 0x2b, 0x13, 0xf8, 0x7b, 0x81, 0x6c, 0x4e, 0xe6, + 0x17, 0xa3, 0x5e, 0xa8, 0x34, 0x53, 0x64, 0x15, + 0xf3, 0xb6, 0xf5, 0x90, 0x8f, 0xa6, 0x23, 0x7f, + 0x88, 0x71, 0xea, 0x25, 0x0a, 0x17, 0xc9, 0xd1, + 0x34, 0x2c, 0xb4, 0xc5, 0x14, 0xa4, 0x03, 0xe1, + 0x07, 0x01, 0xba, 0x22, 0x57, 0x97, 0xcd, 0x3b, + 0xe0, 0xfc, 0xb1, 0xe5, 0xa4, 0x22, 0x72, 0xcb, + 0x88, 0xb7, 0xaa, 0x84, 0x75, 0xae, 0x62, 0xff, + 0x1a, 0x9f, 0x45, 0xd6, 0x2f, 0xd6, 0xad, 0x29, + 0xa3, 0x4c, 0x9c, 0x7c, 0x55, 0xc5, 0xec, 0x4c, + 0xc2, 0x7a, 0xad, 0x60, 0x65, 0x06, 0xfc, 0x7d, + 0xf2, 0x67, 0xce, 0xf8, 0x11, 0xea, 0xbf, 0xd8, + 0x84, 0x94, 0xf2, 0x13, 0xa2, 0xa8, 0x39, 0xe1, + 0x0d, 0x47, 0x94, 0x8b, 0x1d, 0x4b, 0x51, 0xd3, + 0xf9, 0x2f, 0x91, 0x76, 0x20, 0x4e, 0x22, 0xf8, + 0x81, 0xc4, 0xac, 0xf6, 0xf1, 0x2f, 0x38, 0x2a, + 0x78, 0x00, 0xa8, 0xbb, 0x9e, 0xfa, 0xa8, 0x1c, + 0xaa, 0xc4, 0x7e, 0x6e, 0x30, 0xcc, 0x79, 0x17, + 0xc6, 0x4e, 0x85, 0x9a, 0x96, 0x13, 0xef, 0x85, + 0x7d, 0x7a, 0x91, 0x61, 0xfa, 0x8b, 0x8b, 0xdb, + 0x85, 0x22, 0x69, 0x4a, 0x64, 0x36, 0x12, 0xc1, + 0x9e, 0x13, 0x8e, 0x63, 0xaf, 0x35, 0xf4, 0xc8, + 0x11, 0x9a, 0x77, 0xfa, 0x52, 0xe3, 0x63, 0x8a, + 0xdc, 0x62, 0x91, 0xcd, 0xe1, 0x13, 0xe3, 0x4d, + 0x9d, 0xfc, 0xd1, 0xb1, 0x42, 0xbb, 0x67, 0xcd, + 0x2c, 0xc8, 0xb3, 0x14, 0x36, 0x95, 0xba, 0x7e, + 0xbb, 0x84, 0xa0, 0x34, 0x8b, 0x63, 0x5f, 0x8e, + 0x55, 0xb8, 0xde, 0x9f, 0x09, 0x7b, 0x43, 0x61, + 0xac, 0x7d, 0x99, 0xa6, 0xc5, 0x2d, 0xb1, 0x2d, + 0x37, 0xde, 0x54, 0x9a, 0x46, 0x70, 0x2f, 0xc0, + 0xdf, 0xb8, 0x2b, 0x9c, 0xbe, 0x91, 0x77, 0x10, + 0xb4, 0xb9, 0x75, 0xe4, 0xe2, 0xb3, 0x70, 0x09, + 0x5c, 0x34, 0x14, 0x69, 0x9c, 0x00, 0xcf, 0x47, + 0x4a, 0x2d, 0xf1, 0x14, 0xdb, 0xc1, 0xca, 0xf6, + 0xcd, 0x8f, 0x2e, 0x03, 0xfc, 0x36, 0xa4, 0x5b, + 0x11, 0x95, 0x5f, 0x42, 0x77, 0xf9, 0x03, 0x7c, + 0xe8, 0x2f, 0x99, 0xd7, 0x59, 0x75, 0x62, 0xb1, + 0x70, 0x01, 0x8d, 0x11, 0x32, 0xe3, 0xbb, 0xad, + 0x0d, 0x97, 0x0f, 0x1a, 0xe0, 0x36, 0x6b, 0x0c, + 0x2e, 0xf9, 0x47, 0xfa, 0xb6, 0xae, 0x65, 0x07, + 0x1e, 0xf6, 0x8a, 0x89, 0x54, 0xbe, 0xa8, 0x98, + 0xce, 0x08, 0xf2, 0xe5, 0xbf, 0x86, 0xed, 0x35, + 0x8b, 0xc0, 0x6b, 0x75, 0x06, 0x1f, 0x4a, 0xb1, + 0x21, 0x95, 0xf3, 0x61, 0xcf, 0x4e, 0x64, 0xab, + 0x61, 0x34, 0xf4, 0x54, 0x4c, 0xe1, 0x60, 0x8a, + 0xba, 0x2b, 0x71, 0x7c, 0xf5, 0xe2, 0x38, 0xfa, + 0x75, 0xad, 0x09, 0x43, 0x45, 0x0d, 0x0d, 0x1b, + 0x24, 0xe0, 0x92, 0xe8, 0xdf, 0xcd, 0xe6, 0x98, + 0xde, 0x4b, 0xc1, 0xda, 0x7b, 0x91, 0xc8, 0x80, + 0x0f, 0xe6, 0xee, 0xeb, 0x77, 0x21, 0xe7, 0xb3, + 0x7c, 0x30, 0xaa, 0xb0, 0x49, 0xfe, 0x43, 0x40, + 0xbd, 0x62, 0x24, 0xb3, 0x96, 0xaa, 0x3c, 0x5a, + 0x3e, 0x7d, 0x5f, 0xc6, 0x7d, 0x5b, 0x09, 0xf0, + 0x92, 0xdf, 0x07, 0x00, 0xb8, 0xac, 0x46, 0x8f, + 0x87, 0x5b, 0x18, 0x93, 0x6c, 0x59, 0xf7, 0xdf, + 0x6a, 0xa3, 0x7a, 0xf6, 0xcb, 0x75, 0x85, 0xee, + 0x0e, 0x86, 0xd6, 0xb4, 0x0a, 0xa3, 0x29, 0xc9, + 0x8b, 0x94, 0xc9, 0xa2, 0x6d, 0xbe, 0x4e, 0xd7, + 0xf9, 0x6e, 0xff, 0xde, 0x01, 0x63, 0x3f, 0x4d, + 0xd0, 0x4b, 0xb5, 0x8a, 0xfb, 0x8f, 0x9e, 0xd3, + 0x6d, 0xba, 0x3c, 0x5c, 0x24, 0xae, 0xb1, 0x8e, + 0x54, 0xfc, 0x3f, 0x62, 0xf3, 0x0e, 0xf7, 0x7b, + 0x74, 0xc8, 0x4a, 0x88, 0x0a, 0xc1, 0x2f, 0x94, + 0x6b, 0x30, 0xdd, 0xeb, 0x9f, 0xd6, 0x9c, 0x6d, + 0x09, 0xf3, 0x78, 0x35, 0x85, 0x24, 0xf2, 0x9f, + 0xf3, 0xf3, 0x26, 0xc2, 0x18, 0x82, 0x4d, 0xe7, + 0x78, 0xad, 0x9e, 0x3e, 0x3a, 0xe1, 0xab, 0xe6, + 0x35, 0x53, 0x8f, 0x1a, 0xf8, 0x07, 0xb6, 0x70, + 0x9c, 0xd4, 0x2b, 0x36, 0xd4, 0xbd, 0xde, 0xae, + 0x12, 0x79, 0x1b, 0x25, 0x56, 0x14, 0xea, 0x6e, + 0x9f, 0x2e, 0xc6, 0xc6, 0xeb, 0xc3, 0x20, 0xc4, + 0x44, 0x34, 0xda, 0x0a, 0x3f, 0x36, 0x78, 0xdd, + 0x9f, 0xef, 0xc6, 0x18, 0x34, 0x6d, 0x4f, 0xa3, + 0x86, 0x26, 0xdb, 0x97, 0x2f, 0x85, 0xee, 0xe1, + 0x4d, 0xfa, 0xbd, 0x50, 0xc7, 0x5d, 0x2a, 0xaf, + 0x59, 0x38, 0xca, 0xea, 0xfb, 0x11, 0x50, 0xcb, + 0x71, 0x8a, 0x4e, 0xcc, 0xe9, 0x5e, 0x2d, 0xf4, + 0x06, 0xe7, 0x9f, 0x2f, 0xcb, 0xea, 0x49, 0x8a, + 0x67, 0x9d, 0x07, 0x35, 0xfc, 0x5a, 0x34, 0x73, + 0xd7, 0x79, 0x3c, 0x93, 0x24, 0xf7, 0x2c, 0x2a, + 0xe0, 0x23, 0x2c, 0x39, 0x66, 0x8e, 0x17, 0x36, + 0x29, 0xef, 0xcb, 0xfc, 0x1c, 0xba, 0x25, 0xa3, + 0xeb, 0x18, 0x25, 0xaa, 0x28, 0x85, 0x51, 0xab, + 0x83, 0x5f, 0xe3, 0x49, 0x8a, 0xf4, 0x35, 0x81, + 0x34, 0xd0, 0x03, 0xc8, 0x8c, 0x3e, 0xc3, 0x4c, + 0x9c, 0xcd, 0x61, 0xfe, 0x1f, 0xf4, 0x69, 0xa1, + 0x84, 0x27, 0x66, 0x37, 0xf0, 0x50, 0xad, 0x2e, + 0xcd, 0xa4, 0xe7, 0xf8, 0x8c, 0xc0, 0xcf, 0x45, + 0xed, 0x91, 0x55, 0xa0, 0x01, 0x88, 0x93, 0xd8, + 0x28, 0x16, 0x3f, 0x46, 0x1e, 0x06, 0x32, 0x3d, + 0x0b, 0x71, 0xc2, 0x4b, 0x79, 0xd2, 0x5e, 0xfa, + 0xea, 0x1c, 0xa9, 0xcd, 0xfe, 0x1e, 0x18, 0x68, + 0x44, 0x17, 0x02, 0xea, 0x8b, 0xaf, 0xd6, 0xfe, + 0xb0, 0x67, 0xdb, 0x9f, 0x64, 0x04, 0x29, 0x58, + 0xd7, 0x74, 0x40, 0x4d, 0x29, 0xee, 0x72, 0x1c, + 0x11, 0xe9, 0x66, 0x44, 0x49, 0x6c, 0x26, 0x4d, + 0x0b, 0xec, 0x26, 0x0a, 0x64, 0x89, 0x32, 0x48, + 0xe4, 0x28, 0x35, 0x0e, 0x42, 0x6a, 0xf0, 0x6b, + 0x6b, 0x84, 0x0a, 0x3d, 0xf7, 0x42, 0x81, 0x38, + 0x0d, 0x77, 0x58, 0x6f, 0x41, 0x86, 0x13, 0x5e, + 0x25, 0x95, 0x3d, 0xb8, 0x22, 0x9f, 0x25, 0xc8, + 0x65, 0xf2, 0x72, 0x7c, 0xa0, 0xae, 0xa5, 0xfc, + 0xcb, 0x91, 0x72, 0x5f, 0x04, 0x3a, 0xe1, 0x64, + 0xea, 0x6c, 0x1b, 0x1d, 0xad, 0xfa, 0x63, 0xdd, + 0x30, 0x8f, 0x98, 0xb8, 0x8f, 0x17, 0xaf, 0x38, + 0x5a, 0x12, 0xaa, 0x3f, 0x7b, 0xf4, 0xc2, 0xa3, + 0x9b, 0x74, 0xa1, 0x98, 0xf3, 0xb5, 0xb1, 0x50, + 0x74, 0x36, 0x14, 0x6d, 0x9b, 0x8a, 0xae, 0xfe, + 0xd9, 0x40, 0xf9, 0x59, 0x65, 0x57, 0x38, 0xe8, + 0x1a, 0xa8, 0x7d, 0xfc, 0xac, 0xd1, 0xd7, 0x45, + 0x2e, 0x40, 0xfa, 0xdc, 0x33, 0x61, 0x32, 0x30, + 0x24, 0x20, 0x45, 0x44, 0xbb, 0x0b, 0x04, 0xb3, + 0xf0, 0x07, 0x0a, 0x4c, 0x27, 0xf6, 0xdb, 0x6d, + 0x5d, 0x5e, 0x07, 0x1e, 0x52, 0x19, 0x8a, 0x40, + 0x01, 0x3b, 0xeb, 0x68, 0x90, 0x13, 0xc3, 0x4a, + 0x7a, 0xe3, 0xb9, 0x3a, 0xd7, 0x19, 0x8d, 0xbb, + 0xcd, 0x09, 0x10, 0xc7, 0x16, 0x3f, 0x0a, 0xf8, + 0xdd, 0x32, 0x84, 0x40, 0x0e, 0xe7, 0xc5, 0xf7, + 0x7e, 0x00, 0x1a, 0xb1, 0x62, 0xa5, 0xcf, 0x2f, + 0xf8, 0xf2, 0x99, 0x17, 0xd7, 0x4e, 0x76, 0xe0, + 0x07, 0xe7, 0xd4, 0xc0, 0x50, 0xf8, 0xfb, 0xb9, + 0xce, 0x1d, 0x3c, 0x6b, 0xbd, 0x4d, 0xc5, 0xfc, + 0xc9, 0xc0, 0x46, 0xb4, 0xbe, 0x70, 0x9c, 0x5e, + 0x26, 0xdb, 0x91, 0x75, 0xd1, 0x6d, 0x87, 0x3c, + 0x97, 0xac, 0x44, 0xac, 0x7b, 0x5a, 0x57, 0xca, + 0x3d, 0x28, 0x77, 0x51, 0x99, 0x0f, 0x2e, 0x63, + 0x87, 0x35, 0xed, 0x72, 0x3c, 0x66, 0x01, 0x1e, + 0xf2, 0x09, 0xc0, 0xa7, 0xf9, 0xe8, 0x63, 0x8a, + 0x69, 0x4e, 0x39, 0x5e, 0xdd, 0x39, 0x5f, 0x5b, + 0x82, 0xc9, 0xc4, 0x90, 0x79, 0x76, 0x75, 0x73, + 0x6e, 0x5e, 0xbc, 0x1a, 0xa5, 0xae, 0x62, 0xd2, + 0x1b, 0x7d, 0xe0, 0x16, 0xe2, 0x9c, 0x75, 0xc2, + 0x9c, 0x38, 0x08, 0x5b, 0xe5, 0x41, 0x59, 0x8e, + 0x6d, 0xd9, 0x0c, 0x32, 0x5e, 0x84, 0x63, 0xb0, + 0x5e, 0xad, 0x81, 0x7a, 0x4e, 0xfc, 0xcc, 0xfd, + 0x71, 0x05, 0x91, 0x06, 0x73, 0x34, 0xee, 0xc2, + 0xba, 0xbb, 0x84, 0x8a, 0x9c, 0xf4, 0x95, 0xc7, + 0xee, 0x3c, 0xd4, 0xc0, 0xbf, 0x7a, 0x5d, 0x73, + 0x64, 0x9b, 0xff, 0x6a, 0x51, 0x4b, 0xe4, 0x85, + 0xbf, 0x77, 0x5e, 0xc0, 0x32, 0x57, 0x3f, 0x0f, + 0xe3, 0xbc, 0xf2, 0xcf, 0x36, 0x86, 0x85, 0xd4, + 0x01, 0xd2, 0x99, 0xf7, 0x23, 0xe9, 0x25, 0xa4, + 0x54, 0x2c, 0xf6, 0x12, 0x97, 0xc3, 0x1b, 0xc4, + 0x55, 0xc4, 0x59, 0xb7, 0x3b, 0x5d, 0xa0, 0x88, + 0xa6, 0x80, 0xf7, 0x7f, 0x92, 0x06, 0xd3, 0x47, + 0x35, 0x7c, 0xbb, 0xf5, 0x0a, 0x01, 0xc9, 0x5a, + 0xdd, 0x8d, 0x31, 0x2e, 0xe5, 0xcf, 0x09, 0x93, + 0x76, 0x9c, 0x55, 0xc7, 0xe0, 0x4f, 0xef, 0x4d, + 0x53, 0x63, 0x5d, 0x4f, 0x2d, 0x00, 0x5a, 0x40, + 0x83, 0xc4, 0x61, 0xb5, 0x62, 0x5f, 0x95, 0x22, + 0x02, 0xc9, 0x34, 0xa1, 0x3b, 0xf7, 0x5e, 0x9a, + 0xbc, 0xaf, 0xba, 0xa1, 0x3b, 0xe1, 0x15, 0x9d, + 0x29, 0xa9, 0xd5, 0x16, 0x9e, 0x96, 0x1a, 0x4e, + 0x2a, 0xe0, 0x30, 0x88, 0x56, 0x62, 0x9a, 0x89, + 0x49, 0x6b, 0x54, 0x02, 0x8d, 0x59, 0x87, 0xc6, + 0x8b, 0x08, 0xc9, 0xfd, 0x0e, 0x35, 0x64, 0x8f, + 0xc7, 0x78, 0xde, 0x3b, 0x7f, 0x8a, 0x43, 0xa1, + 0x18, 0xbc, 0x56, 0xec, 0xab, 0x4e, 0x35, 0x50, + 0x1f, 0x22, 0x3e, 0xd1, 0x78, 0x07, 0x3d, 0x9e, + 0xb3, 0xa0, 0x06, 0x7e, 0x59, 0xd7, 0x7f, 0xd6, + 0xf6, 0xe9, 0xf6, 0x15, 0x9f, 0xf8, 0x51, 0xfb, + 0xe2, 0x16, 0x62, 0x36, 0xfb, 0xca, 0x9f, 0x36, + 0x64, 0x6f, 0xba, 0x6b, 0x99, 0x68, 0x43, 0xe6, + 0xd5, 0x53, 0x84, 0xfa, 0xa9, 0x27, 0x04, 0x5c, + 0x66, 0x7a, 0x41, 0x63, 0x09, 0x95, 0x4e, 0xa3, + 0xe6, 0xc9, 0x62, 0x47, 0x3e, 0xb3, 0x50, 0xdf, + 0x8c, 0xee, 0xe0, 0xe9, 0x02, 0xd0, 0xf3, 0x14, + 0xc1, 0x26, 0x18, 0xd8, 0xd2, 0xef, 0xa8, 0xac, + 0x1b, 0x03, 0x49, 0x34, 0x67, 0x1d, 0xd8, 0xb4, + 0xad, 0x98, 0xdd, 0xd9, 0x47, 0x26, 0x12, 0xd0, + 0x3c, 0x47, 0x89, 0x09, 0x23, 0xc9, 0x7d, 0xba, + 0xba, 0x48, 0x65, 0x44, 0xe6, 0x24, 0xcb, 0xb1, + 0x60, 0x48, 0x44, 0x5c, 0xdb, 0x37, 0x95, 0x7f, + 0x95, 0xf8, 0x41, 0x92, 0x91, 0x96, 0xd0, 0xf9, + 0xef, 0x54, 0xdf, 0x88, 0x77, 0x58, 0x8e, 0xae, + 0x33, 0xea, 0xa4, 0x39, 0x9f, 0x00, 0xf5, 0x6e, + 0x4e, 0x50, 0x15, 0xe1, 0x9e, 0x09, 0xb7, 0x5d, + 0xab, 0xb2, 0x4b, 0x00, 0xcc, 0x13, 0x10, 0x44, + 0x0b, 0xb1, 0xb9, 0x3b, 0xed, 0x8d, 0x8c, 0x53, + 0x22, 0x5b, 0x78, 0x91, 0xce, 0x0d, 0xa0, 0x85, + 0x33, 0x5f, 0x93, 0x55, 0xc2, 0xf2, 0xec, 0xef, + 0x71, 0xb7, 0x61, 0x4f, 0x43, 0x32, 0xfa, 0xf4, + 0x4b, 0x1d, 0xb8, 0xe0, 0x9b, 0xb8, 0x28, 0xcb, + 0xc2, 0xa6, 0x76, 0x6c, 0x2c, 0xdd, 0x2d, 0xe3, + 0x1e, 0x78, 0xc3, 0xd0, 0xe0, 0x64, 0xfd, 0xf9, + 0x47, 0x2f, 0xd7, 0x7c, 0x9e, 0x12, 0x49, 0x17, + 0x1a, 0x0c, 0xd2, 0xab, 0xd7, 0xf5, 0x53, 0xb3, + 0x02, 0x16, 0xc8, 0xd9, 0xdd, 0x1f, 0x4d, 0xaa, + 0xc1, 0xe6, 0xf5, 0xfd, 0x6b, 0xee, 0xb8, 0x54, + 0x7c, 0x6b, 0x82, 0x77, 0xd0, 0x94, 0x42, 0xca, + 0x66, 0xaf, 0xdb, 0x17, 0xae, 0xff, 0x37, 0x83, + 0x98, 0x59, 0x08, 0x0e, 0xd2, 0xb4, 0x7c, 0x58, + 0x87, 0xaa, 0xb9, 0xad, 0x75, 0x5e, 0x24, 0xab, + 0xb9, 0xed, 0xd4, 0x00, 0x7d, 0xb8, 0x68, 0xf4, + 0xc4, 0x92, 0x97, 0x89, 0x54, 0x2e, 0xd1, 0x1c, + 0x9a, 0xd8, 0xf4, 0xb2, 0xb1, 0x15, 0xbb, 0x06, + 0x74, 0x37, 0xb5, 0xb5, 0xcd, 0x7b, 0x77, 0x7f, + 0x8d, 0xdd, 0x66, 0xd4, 0xd9, 0xd9, 0x25, 0x20, + 0xbc, 0x87, 0x2a, 0xe2, 0xff, 0x7e, 0xd1, 0x96, + 0xea, 0x12, 0x48, 0xc6, 0x09, 0xc1, 0x93, 0x2d, + 0x5f, 0x02, 0x10, 0x90, 0xb3, 0x86, 0x0b, 0x47, + 0x2e, 0x43, 0xf0, 0xe4, 0x6c, 0xa3, 0x0f, 0x45, + 0x1c, 0x8e, 0x09, 0x4c, 0x71, 0xde, 0x2d, 0x99, + 0x90, 0x31, 0x13, 0x60, 0x29, 0x34, 0xef, 0x6d, + 0x6d, 0x95, 0xab, 0x77, 0x7e, 0xa2, 0xb4, 0x6a, + 0xa5, 0x63, 0xa8, 0x94, 0x4a, 0xd7, 0x95, 0xf3, + 0xa5, 0xe1, 0x23, 0x53, 0x51, 0x9d, 0xd7, 0xe4, + 0xeb, 0xe5, 0xee, 0xdf, 0xbe, 0x96, 0x3a, 0x38, + 0xef, 0x06, 0xa9, 0x44, 0xf0, 0xad, 0xab, 0x37, + 0xc2, 0x67, 0xcf, 0x63, 0xc3, 0xd6, 0x22, 0x2e, + 0x16, 0x3b, 0x5a, 0xa3, 0xf6, 0xf8, 0x0b, 0xdf, + 0xf8, 0xa5, 0xcb, 0x19, 0x29, 0x65, 0xad, 0x8e, + 0xec, 0x42, 0xec, 0x0b, 0x1d, 0x16, 0xc9, 0xf7, + 0x0f, 0x74, 0xd1, 0x26, 0x9e, 0x22, 0xca, 0xc1, + 0xfb, 0x7d, 0x4f, 0x73, 0x02, 0x44, 0x88, 0x55, + 0x40, 0x57, 0xfa, 0xc7, 0xaf, 0xfd, 0xb2, 0x9d, + 0xe0, 0xf9, 0x6c, 0x32, 0xc1, 0x70, 0x51, 0x38, + 0x1f, 0xce, 0x95, 0x77, 0x55, 0xde, 0xca, 0x0d, + 0x59, 0x89, 0x3d, 0x88, 0x63, 0x25, 0x77, 0x00, + 0x3d, 0x96, 0x48, 0x39, 0xde, 0xf5, 0x83, 0x77, + 0xe3, 0x11, 0x0c, 0x75, 0x0c, 0x89, 0x5c, 0x79, + 0x75, 0x88, 0x21, 0x6e, 0xdc, 0x01, 0x6f, 0xee, + 0xb6, 0x16, 0xaa, 0xb1, 0x99, 0x86, 0x30, 0x89, + 0x8f, 0x95, 0xf4, 0xf1, 0x3b, 0xd3, 0x11, 0xe1, + 0x48, 0x3a, 0x6c, 0x26, 0x0c, 0x3d, 0x6e, 0x0b, + 0x6f, 0xf4, 0x21, 0x10, 0x17, 0xf1, 0x11, 0xc3, + 0xb8, 0xde, 0x69, 0xce, 0x12, 0x26, 0x17, 0xc9, + 0x66, 0xd7, 0x88, 0x23, 0xd8, 0xd9, 0xe8, 0xe5, + 0x4b, 0x19, 0x7c, 0x9c, 0xcf, 0x45, 0x76, 0x58, + 0x3c, 0x55, 0xaa, 0x4d, 0x4a, 0x44, 0xfb, 0x0b, + 0xf2, 0x0f, 0x4b, 0x50, 0xad, 0xe5, 0x59, 0xda, + 0x43, 0x25, 0x0f, 0x8b, 0x7c, 0xc6, 0x84, 0xed, + 0x2f, 0x11, 0xc5, 0x66, 0x71, 0x43, 0x56, 0x03, + 0x1b, 0xab, 0x30, 0xba, 0x0f, 0x56, 0xa8, 0x14, + 0x91, 0x85, 0x65, 0x54, 0x8c, 0xbb, 0x6a, 0xa8, + 0x9d, 0x5d, 0x73, 0xd9, 0xdd, 0xa2, 0x34, 0xb5, + 0xba, 0x8d, 0x90, 0x1e, 0xf9, 0x3a, 0xc2, 0x7e, + 0xcf, 0x6e, 0x59, 0x8b, 0xc9, 0x84, 0x4e, 0x8b, + 0x50, 0x99, 0xa7, 0x5b, 0x4b, 0x7e, 0xc2, 0x1b, + 0x36, 0xef, 0x8d, 0xce, 0x58, 0x7c, 0xf9, 0xad, + 0x6a, 0x59, 0xca, 0xbe, 0x8c, 0x78, 0xf6, 0x43, + 0x1f, 0x32, 0xe3, 0x4a, 0xa1, 0xde, 0x6d, 0xdc, + 0xc9, 0x54, 0xd8, 0x02, 0x45, 0x96, 0xbe, 0x78, + 0x0b, 0xfd, 0x81, 0x2d, 0x6c, 0xff, 0xa5, 0x8e, + 0x57, 0x07, 0x30, 0xa3, 0x00, 0x57, 0x1a, 0x4a, + 0x52, 0x6c, 0xa1, 0xc2, 0x29, 0xcf, 0x81, 0x4d, + 0xdb, 0x87, 0xa8, 0x43, 0xa6, 0x5b, 0xe6, 0x86, + 0x90, 0x5a, 0x46, 0xac, 0x86, 0x35, 0x1d, 0xfe, + 0x28, 0xc8, 0x56, 0x39, 0xde, 0x31, 0x3a, 0x8d, + 0x93, 0x77, 0xaa, 0xa0, 0x4e, 0xfd, 0x09, 0xc8, + 0xf6, 0x22, 0x1f, 0xe9, 0x7a, 0x16, 0xf0, 0x43, + 0xcc, 0xc7, 0x24, 0x81, 0x9d, 0xfb, 0x62, 0xbd, + 0xf6, 0xf1, 0x8e, 0x7b, 0xae, 0x59, 0x9d, 0x14, + 0xb6, 0x1f, 0x27, 0x1b, 0x3f, 0x58, 0x81, 0x8e, + 0xc3, 0x08, 0xd6, 0x10, 0x9b, 0x44, 0xdb, 0x98, + 0xd6, 0xec, 0x9e, 0x4a, 0x59, 0xd1, 0xe8, 0xcf, + 0x36, 0x0c, 0x35, 0x06, 0xbd, 0x5a, 0xdc, 0x51, + 0xa3, 0x25, 0xe6, 0x50, 0x2b, 0x90, 0x8c, 0x84, + 0x20, 0xf3, 0x2c, 0xec, 0x36, 0xf7, 0xf9, 0x52, + 0x2a, 0x8d, 0xb0, 0xba, 0x79, 0x2b, 0xce, 0x9b, + 0x7f, 0xe8, 0x28, 0x85, 0x0a, 0xa6, 0x7b, 0x59, + 0xb9, 0x10, 0xe5, 0x3d, 0x2b, 0x3b, 0x98, 0x24, + 0xe0, 0xe2, 0x72, 0x6b, 0x62, 0x61, 0x2e, 0xe7, + 0xb4, 0x79, 0xfc, 0x6d, 0x06, 0x6a, 0x70, 0x26, + 0x6e, 0x60, 0x2d, 0x2f, 0x17, 0xd2, 0xa0, 0xc7, + 0x5e, 0xca, 0x68, 0x52, 0x15, 0x56, 0x4f, 0x6d, + 0x18, 0xde, 0x98, 0x14, 0xa2, 0x78, 0xd0, 0xb8, + 0xc4, 0xab, 0xd3, 0x2a, 0x0e, 0x59, 0x9c, 0xec, + 0xa6, 0x9d, 0x67, 0xbc, 0x47, 0xd7, 0xc7, 0x86, + 0xbe, 0x6f, 0x1b, 0xa7, 0x81, 0x87, 0x45, 0x50, + 0x5e, 0xd7, 0x66, 0x4c, 0x24, 0x28, 0xab, 0xa0, + 0xe4, 0x59, 0xe5, 0xdb, 0x8b, 0x79, 0x62, 0xa0, + 0x94, 0xcb, 0x6c, 0x1e, 0xfc, 0xdb, 0xa2, 0x2b, + 0x02, 0x29, 0xf5, 0xa3, 0xed, 0xfc, 0x00, 0x86, + 0x19, 0x5f, 0x68, 0x31, 0x86, 0xd9, 0x63, 0x90, + 0x78, 0xb7, 0xec, 0xbd, 0x84, 0x61, 0xeb, 0xfd, + 0x8d, 0xcd, 0xfd, 0xa0, 0xeb, 0xb3, 0x76, 0xc0, + 0x0e, 0x98, 0xc7, 0x4c, 0x42, 0x7d, 0x92, 0xec, + 0x2e, 0x9a, 0xf7, 0x2a, 0x20, 0x35, 0xe1, 0x3b, + 0x43, 0x6b, 0xec, 0x0a, 0xd1, 0x4f, 0xc0, 0x59, + 0x04, 0x9c, 0x2b, 0x38, 0x56, 0xcc, 0x01, 0xdc, + 0x40, 0x48, 0xf9, 0x9d, 0xa4, 0x08, 0xb9, 0xb5, + 0x42, 0x45, 0x07, 0x78, 0x52, 0x44, 0x07, 0x29, + 0x97, 0x1c, 0x0b, 0xc4, 0x1c, 0x69, 0xc8, 0x45, + 0xa1, 0x2b, 0xbf, 0x40, 0x78, 0x0e, 0xee, 0xc0, + 0x23, 0xd8, 0x1e, 0x8f, 0x48, 0x85, 0x89, 0x58, + 0xc0, 0x46, 0x91, 0xd2, 0x88, 0x17, 0x89, 0x9c, + 0x4b, 0xb6, 0x6b, 0xac, 0xbb, 0x85, 0x99, 0x65, + 0x16, 0x39, 0xec, 0x3c, 0x76, 0x4f, 0x51, 0x12, + 0xc3, 0xfc, 0x2f, 0x71, 0x2e, 0x35, 0x77, 0x0d, + 0x66, 0xab, 0x5b, 0x7f, 0x09, 0x63, 0xfd, 0x12, + 0xf6, 0xac, 0xe8, 0x1f, 0xdd, 0xd6, 0x25, 0x7e, + 0x52, 0x52, 0x0d, 0xc9, 0xe5, 0x32, 0x0a, 0x45, + 0xff, 0x0e, 0x78, 0x8c, 0x72, 0x4f, 0x28, 0xac, + 0x7b, 0xfa, 0xab, 0x7b, 0x76, 0x42, 0xad, 0x64, + 0xb6, 0xa3, 0xe6, 0xda, 0x64, 0x1a, 0x17, 0xa5, + 0x20, 0x00, 0x5c, 0x2a, 0xa9, 0xe5, 0xb3, 0x9e, + 0x57, 0xf9, 0x65, 0x2b, 0x4a, 0x86, 0xa4, 0x5a, + 0x36, 0x6e, 0xed, 0x68, 0x72, 0x47, 0xfc, 0xea, + 0xb1, 0x14, 0x0b, 0xf6, 0x7a, 0x11, 0x1b, 0xe7, + 0x7d, 0x57, 0xe9, 0x28, 0x10, 0xaf, 0x25, 0x01, + 0x57, 0x4f, 0x4b, 0x0b, 0x9f, 0xa6, 0xcb, 0x1f, + 0x20, 0x79, 0x4f, 0xe3, 0xc2, 0xc4, 0xf6, 0x45, + 0xcf, 0x8c, 0xb7, 0x7b, 0x5e, 0x28, 0x58, 0x39, + 0xfe, 0xa7, 0xad, 0x55, 0x65, 0x50, 0x6b, 0xd7, + 0x44, 0x0f, 0x46, 0x24, 0xec, 0xac, 0x9f, 0xf9, + 0xa0, 0x8a, 0xda, 0xdd, 0x25, 0x01, 0x6d, 0x07, + 0x5c, 0x31, 0x4c, 0x15, 0xcc, 0x63, 0x23, 0x31, + 0x10, 0xfa, 0x03, 0x05, 0x6f, 0xc9, 0xe3, 0x1b, + 0x7a, 0x93, 0x07, 0xa0, 0x1d, 0x06, 0x02, 0x62, + 0x35, 0xd7, 0x88, 0x62, 0xa5, 0x87, 0x45, 0x6b, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0xb0, 0xfd, 0x6d, 0x90, 0x96, 0x40, 0xee, 0x80, + 0xa5, 0x07, 0x91, 0x96, 0xd4, 0xe9, 0x23, 0xc2, + 0x33, 0xd3, 0x66, 0xb8, 0xc9, 0xe0, 0x42, 0xf6, + 0x4e, 0x58, 0x30, 0x2b, 0xa3, 0xda, 0x04, 0x98, + 0x0e, 0x08, 0x1b, 0x1c, 0x6a, 0x05, 0xdb, 0xb2, + 0xa1, 0x45, 0xe4, 0xc2, 0x8f, 0x6e, 0x6d, 0x3a, + 0x43, 0x78, 0xa7, 0x34, 0x72, 0x6e, 0xb0, 0x1f, + 0x60, 0x9d, 0x88, 0xbb, 0xf9, 0xf2, 0x37, 0xae, + }, + .sig_len =3D DILITHIUM87_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM87_CRYPTO_BYTES]){ + 0x25, 0x09, 0x7a, 0x53, 0x87, 0x5b, 0xd7, 0x3d, + 0xc4, 0xfc, 0xec, 0x46, 0x67, 0xb5, 0x52, 0xbf, + 0xf0, 0x43, 0x67, 0xd8, 0x55, 0xdc, 0x45, 0xbf, + 0x0e, 0x71, 0xa0, 0xaf, 0x6d, 0x90, 0x16, 0x62, + 0x09, 0x50, 0x05, 0x6a, 0xdf, 0xf9, 0x2e, 0x97, + 0xaa, 0x17, 0x1d, 0x8a, 0xc3, 0xd8, 0x16, 0x80, + 0xc7, 0xec, 0xed, 0xf7, 0x77, 0x92, 0xaa, 0x7e, + 0xa0, 0xa9, 0x61, 0xb9, 0x0c, 0xfe, 0x3a, 0x38, + 0x8a, 0x75, 0xda, 0x7f, 0x21, 0x3d, 0x8a, 0x2c, + 0x6e, 0x2d, 0xe3, 0xb3, 0x4d, 0xe1, 0xba, 0xa7, + 0xed, 0xa2, 0xf9, 0x7a, 0x5c, 0xa9, 0xa5, 0x78, + 0x86, 0xb8, 0x18, 0xb8, 0xe9, 0x62, 0xa8, 0xa6, + 0x69, 0x34, 0x36, 0xbb, 0x93, 0xb7, 0xf2, 0x6b, + 0x25, 0x5e, 0x6c, 0x28, 0x8e, 0x92, 0xf7, 0x50, + 0x81, 0xe7, 0xba, 0x07, 0x75, 0x31, 0xd2, 0xcb, + 0x6f, 0x50, 0xc4, 0x49, 0x25, 0x6b, 0xd1, 0x07, + 0x98, 0x40, 0xe3, 0x75, 0x19, 0xe8, 0xad, 0xd2, + 0x91, 0x30, 0xd3, 0x34, 0xd2, 0xd3, 0x8e, 0x0f, + 0xc7, 0x13, 0x1f, 0xed, 0xd6, 0x88, 0x13, 0xf0, + 0x73, 0xd7, 0x65, 0x32, 0xeb, 0xa6, 0x0a, 0x5a, + 0x17, 0x4f, 0x86, 0xd6, 0x37, 0x24, 0x95, 0xcc, + 0xdd, 0xd3, 0x76, 0xaf, 0x4e, 0xc7, 0x54, 0xa8, + 0x8a, 0xbf, 0x7b, 0xb8, 0xf3, 0xe7, 0x45, 0xd7, + 0x7e, 0x76, 0xd3, 0x24, 0x7b, 0x95, 0xd8, 0xbc, + 0x52, 0xde, 0xe5, 0x5a, 0x33, 0x6a, 0x2e, 0x3d, + 0x2a, 0xd6, 0x93, 0x72, 0x74, 0x69, 0xfe, 0x6d, + 0xb7, 0x26, 0x14, 0x83, 0x6c, 0xc3, 0xa2, 0x1c, + 0xde, 0x17, 0x1b, 0x09, 0xf7, 0x52, 0x3a, 0x26, + 0xa1, 0xfa, 0xd3, 0x0d, 0xf2, 0xb7, 0x2f, 0x94, + 0xcf, 0xdb, 0xf0, 0x58, 0x42, 0x46, 0xf2, 0xc5, + 0x64, 0xfd, 0x2d, 0x7e, 0x60, 0x7e, 0x13, 0x23, + 0x46, 0x62, 0xd2, 0xf6, 0x4d, 0x07, 0xf8, 0xd1, + 0x7c, 0xfc, 0xd2, 0x88, 0x18, 0xb2, 0xe2, 0x68, + 0xb7, 0x6c, 0xb4, 0x87, 0xee, 0x59, 0x35, 0xd2, + 0xf5, 0x3e, 0x4e, 0x9e, 0xfc, 0xc2, 0x93, 0x84, + 0x1a, 0x18, 0x5e, 0x09, 0x70, 0x9e, 0xb9, 0x5a, + 0xba, 0x9b, 0x68, 0x22, 0x6c, 0x8b, 0xb3, 0x4f, + 0xc9, 0x9e, 0x7a, 0x77, 0xf4, 0x32, 0x66, 0xa3, + 0x1b, 0xf7, 0x59, 0x15, 0xa3, 0xfb, 0x92, 0x54, + 0x6b, 0x56, 0x8b, 0x19, 0x4c, 0x9e, 0x8d, 0x49, + 0x56, 0x5e, 0x3d, 0x47, 0x99, 0x16, 0x5b, 0x00, + 0xa0, 0x4e, 0x41, 0xbb, 0x42, 0x9f, 0xbd, 0x31, + 0x3f, 0xe0, 0x40, 0x22, 0xd8, 0xf7, 0x42, 0x54, + 0xcc, 0xbd, 0x2b, 0xbf, 0x7d, 0x09, 0x69, 0x18, + 0xa6, 0x8e, 0x72, 0x3a, 0x8b, 0x69, 0x90, 0x91, + 0x6f, 0xbb, 0x83, 0x34, 0x47, 0x2d, 0xfe, 0xb8, + 0x72, 0xe4, 0xe0, 0xfc, 0xf6, 0x41, 0x2e, 0xb5, + 0xed, 0x17, 0x4f, 0x91, 0xfe, 0x4c, 0xa6, 0xaa, + 0xec, 0x1c, 0xfd, 0x6f, 0x25, 0x46, 0xf6, 0x84, + 0xfe, 0x95, 0x03, 0xb3, 0xe1, 0xf3, 0xa7, 0x35, + 0x18, 0x4d, 0x73, 0x8c, 0x1e, 0xab, 0x7a, 0x0c, + 0xc7, 0xde, 0x2f, 0x84, 0x91, 0x29, 0x67, 0x95, + 0x8d, 0xfe, 0x6f, 0x83, 0xb8, 0xd0, 0xba, 0xd5, + 0xa2, 0xf7, 0xbb, 0xd1, 0xe2, 0x80, 0x8e, 0x62, + 0xbc, 0xed, 0x56, 0x88, 0x0e, 0x05, 0x0c, 0xa4, + 0xc6, 0xa7, 0xfb, 0x78, 0xc8, 0x52, 0x51, 0x56, + 0x7e, 0xa2, 0xa9, 0xeb, 0x0a, 0xc1, 0xb7, 0xc3, + 0x9f, 0x10, 0x91, 0xe1, 0xb8, 0x82, 0xa9, 0x63, + 0xd1, 0x11, 0x39, 0x72, 0x45, 0xac, 0x98, 0xbd, + 0x03, 0x4c, 0xd3, 0x15, 0x4d, 0x87, 0xcd, 0x8b, + 0x35, 0x3f, 0xd0, 0x8a, 0x6d, 0xb7, 0x34, 0x85, + 0xb7, 0xcc, 0xe5, 0xc2, 0xfc, 0xb8, 0x6d, 0xb6, + 0x90, 0x3a, 0xef, 0x6f, 0x53, 0x02, 0x0c, 0x6c, + 0x7d, 0x79, 0x51, 0xb8, 0xdf, 0x54, 0xa9, 0xf5, + 0xf6, 0x9b, 0x80, 0xed, 0x97, 0x3b, 0x7e, 0xa1, + 0xce, 0x3e, 0xa2, 0xd3, 0xce, 0xb2, 0x0c, 0x16, + 0x28, 0x73, 0xf1, 0x5d, 0xeb, 0xc8, 0x6a, 0x10, + 0x41, 0xbb, 0x14, 0x65, 0x48, 0x78, 0x18, 0xa3, + 0x90, 0xb1, 0xc8, 0x5b, 0xf3, 0x65, 0xb3, 0xcb, + 0x7c, 0x49, 0x87, 0x61, 0xa8, 0xf4, 0xdc, 0x58, + 0x21, 0x12, 0x4b, 0xb8, 0x04, 0xf1, 0x1c, 0x7e, + 0x7a, 0xd0, 0xc9, 0xde, 0x3f, 0x72, 0x5e, 0x5e, + 0x6b, 0xf6, 0x73, 0x3e, 0x7c, 0x3d, 0xaf, 0x39, + 0x9a, 0x3b, 0xa5, 0x8b, 0xea, 0x13, 0xa6, 0xb5, + 0x3c, 0x13, 0xa1, 0x98, 0xa0, 0xbb, 0x75, 0xd2, + 0xca, 0x0e, 0x3d, 0x8a, 0x08, 0x9f, 0x98, 0xb1, + 0x5c, 0x59, 0x3a, 0xa5, 0x14, 0x3f, 0xc7, 0xfa, + 0x71, 0xb8, 0xc0, 0x50, 0xa4, 0x35, 0xdd, 0x11, + 0xaf, 0x10, 0x05, 0xc4, 0x66, 0x1c, 0xae, 0x9b, + 0x43, 0xf3, 0x4f, 0xbd, 0xb1, 0xac, 0x3f, 0x7d, + 0xe6, 0x99, 0xfc, 0xd3, 0x54, 0xc7, 0x82, 0xcc, + 0xdc, 0xda, 0xe4, 0x1b, 0x15, 0x19, 0x70, 0x0a, + 0xd0, 0x4a, 0xe2, 0x9d, 0x4c, 0xe9, 0x59, 0x12, + 0x01, 0xab, 0x30, 0xfb, 0xe6, 0xe0, 0x74, 0x54, + 0x25, 0xb5, 0xd9, 0x0e, 0x79, 0xba, 0x1b, 0x0b, + 0x02, 0x4b, 0x0e, 0xf8, 0x81, 0x63, 0xf5, 0x54, + 0xa0, 0xec, 0xf4, 0x80, 0x4a, 0x54, 0x2e, 0xda, + 0xc4, 0x44, 0x97, 0xe4, 0xcb, 0xd5, 0x5f, 0x5a, + 0x75, 0x21, 0x8d, 0xfd, 0x78, 0xed, 0x15, 0x97, + 0x54, 0xd0, 0x77, 0x70, 0x8a, 0x62, 0xc7, 0x74, + 0xd4, 0x1c, 0x7e, 0x28, 0x63, 0xae, 0x9d, 0xeb, + 0x9e, 0xba, 0x40, 0x55, 0x52, 0x7e, 0x0d, 0xe9, + 0x48, 0x20, 0x6d, 0x07, 0x39, 0xd0, 0x1a, 0x08, + 0x1a, 0xea, 0xca, 0xbc, 0x96, 0x92, 0xaf, 0x34, + 0xe6, 0x69, 0xe4, 0x23, 0xa7, 0x1e, 0x45, 0xbe, + 0xd4, 0x7e, 0xd2, 0xb6, 0xb8, 0x86, 0xa3, 0x1d, + 0xfd, 0x8e, 0xa0, 0x46, 0xca, 0x0e, 0xfe, 0xc9, + 0xf5, 0x58, 0x44, 0x09, 0xf0, 0x5e, 0x1a, 0xf2, + 0x0f, 0x88, 0x0f, 0x54, 0xf8, 0xb8, 0xcc, 0x2f, + 0x1c, 0xd0, 0xe4, 0xd3, 0x21, 0x45, 0x66, 0x2e, + 0x40, 0x59, 0xb8, 0x1e, 0x51, 0x19, 0x5a, 0x5c, + 0x58, 0x6b, 0xb0, 0xde, 0xc8, 0x31, 0x77, 0xee, + 0x02, 0xa0, 0xe3, 0xef, 0x84, 0x36, 0x48, 0xae, + 0xa9, 0x41, 0x0c, 0x1b, 0xa4, 0xa2, 0xf7, 0x3e, + 0x5d, 0xab, 0xd0, 0x02, 0x8b, 0x34, 0x4b, 0x42, + 0x2c, 0xaf, 0x07, 0x32, 0x52, 0xc4, 0x2e, 0x8a, + 0xbb, 0x37, 0xa5, 0x3c, 0x47, 0x19, 0x29, 0xde, + 0x04, 0x87, 0xb6, 0x8d, 0xd5, 0x9c, 0x98, 0xa6, + 0x06, 0x60, 0xf0, 0x37, 0x53, 0x29, 0x54, 0x98, + 0xf0, 0x52, 0x8a, 0xb0, 0x6a, 0x1b, 0x8a, 0xde, + 0x32, 0x1d, 0x4f, 0x53, 0x4f, 0x21, 0x48, 0x77, + 0x97, 0xe6, 0x9e, 0x5a, 0x96, 0x34, 0x11, 0x67, + 0xb8, 0xef, 0x9c, 0xad, 0x28, 0xee, 0xdf, 0xd2, + 0x86, 0xdd, 0x0a, 0xfa, 0x5f, 0x2b, 0x39, 0xb3, + 0x65, 0xda, 0xa6, 0xf7, 0x19, 0x15, 0xd1, 0x8f, + 0x30, 0x2f, 0xfa, 0x24, 0x2f, 0x8a, 0x78, 0x72, + 0x91, 0xdd, 0x28, 0x73, 0xfa, 0x2f, 0x6b, 0x1e, + 0x8f, 0x60, 0x65, 0xa0, 0x93, 0x24, 0x3d, 0xdd, + 0xc7, 0xed, 0x44, 0xba, 0x45, 0xa8, 0x60, 0xa4, + 0x70, 0xaf, 0x6e, 0x2f, 0xc0, 0x86, 0xc6, 0x5e, + 0xed, 0xed, 0xad, 0x7d, 0x10, 0xe4, 0x48, 0x04, + 0xd7, 0xd8, 0x48, 0xfa, 0xbe, 0x5b, 0x5d, 0x43, + 0x47, 0x0b, 0xcc, 0x75, 0x31, 0xed, 0x6e, 0x97, + 0xb8, 0xff, 0x8c, 0x0d, 0x3b, 0x47, 0xdd, 0xff, + 0x88, 0xd6, 0x98, 0x65, 0x76, 0xc2, 0x1b, 0xf6, + 0xf0, 0x69, 0xcb, 0xaf, 0xa6, 0x79, 0x49, 0x99, + 0xaf, 0xae, 0x7e, 0xa1, 0xa7, 0x1b, 0xc8, 0xc5, + 0xf5, 0x40, 0xf6, 0xc9, 0x6a, 0xa4, 0xc1, 0xcb, + 0x15, 0x35, 0x09, 0xb7, 0x85, 0x88, 0xc3, 0x6a, + 0xcb, 0xc2, 0xa7, 0x5e, 0xcd, 0xc2, 0xe5, 0x7b, + 0x92, 0xab, 0xd3, 0x6f, 0x59, 0x63, 0xe4, 0xb3, + 0x50, 0x2f, 0x62, 0xad, 0x96, 0x00, 0x34, 0x60, + 0x47, 0x0c, 0xef, 0x85, 0x70, 0xf9, 0xfd, 0x01, + 0xaa, 0x3a, 0xcc, 0xc5, 0x22, 0x2e, 0xf7, 0xec, + 0x4a, 0x5d, 0x08, 0x1d, 0x70, 0xa4, 0xe8, 0x51, + 0x9a, 0x14, 0xa9, 0xda, 0xa2, 0xb3, 0x63, 0x44, + 0x2e, 0x58, 0xb3, 0x32, 0xe2, 0x9c, 0x35, 0x0d, + 0x02, 0x2f, 0x6c, 0xc1, 0xb9, 0xe9, 0x0f, 0x13, + 0x02, 0x37, 0xdc, 0xc1, 0x97, 0xe2, 0x32, 0x1e, + 0x6f, 0xba, 0xb8, 0xd1, 0xfd, 0xf0, 0xd5, 0x23, + 0xe0, 0x7d, 0xae, 0x85, 0x1e, 0x9d, 0x0d, 0x7b, + 0xfe, 0x40, 0xe8, 0x0d, 0xf1, 0x2c, 0xf0, 0xa9, + 0xf7, 0x77, 0xbe, 0xb3, 0x8f, 0xe8, 0x47, 0xc2, + 0x6a, 0x7d, 0x9a, 0xf4, 0x4e, 0xeb, 0x17, 0x8c, + 0x62, 0xda, 0xcc, 0x85, 0x7b, 0x00, 0x9b, 0xc3, + 0x14, 0xa4, 0x5b, 0xc6, 0xaf, 0x49, 0x6e, 0xf8, + 0x2e, 0x76, 0x36, 0x05, 0xce, 0x19, 0x83, 0x7a, + 0xdb, 0xcd, 0x99, 0x7a, 0x92, 0x0e, 0x1d, 0xd1, + 0xfe, 0xc9, 0xec, 0x6f, 0xec, 0xdc, 0x96, 0x26, + 0x71, 0x1b, 0x48, 0x72, 0x22, 0xe2, 0xf6, 0xbf, + 0xc0, 0x34, 0xfe, 0x6c, 0xff, 0x3b, 0xc2, 0x9a, + 0x73, 0x52, 0xbf, 0xc8, 0xda, 0x4a, 0xe5, 0xc4, + 0x89, 0x3c, 0x81, 0x9c, 0x29, 0xa9, 0xee, 0x7d, + 0x17, 0x71, 0xf0, 0xf6, 0x8d, 0x78, 0xac, 0x8a, + 0x79, 0xfe, 0xfb, 0x37, 0x7e, 0xb3, 0x1a, 0xff, + 0xf3, 0xd8, 0xd8, 0xa8, 0x15, 0x0e, 0xa0, 0x40, + 0xf0, 0x1a, 0xa6, 0x1b, 0xc4, 0x63, 0x47, 0x65, + 0x91, 0x32, 0xf5, 0x8a, 0x09, 0xe8, 0xb2, 0x14, + 0xc8, 0xdb, 0x55, 0x66, 0x84, 0x17, 0x70, 0x96, + 0x59, 0xd4, 0xcb, 0x13, 0xa1, 0x7e, 0x07, 0xa5, + 0x55, 0x2e, 0xe0, 0xe6, 0xda, 0x4b, 0x7a, 0x6a, + 0x19, 0x8b, 0x4c, 0x63, 0xc6, 0xaf, 0xe0, 0xeb, + 0xe0, 0xf7, 0x0a, 0xe2, 0x04, 0x6f, 0xdd, 0xda, + 0x39, 0xc0, 0xcf, 0xee, 0xab, 0xed, 0xec, 0x33, + 0xfb, 0xf9, 0xcc, 0xb6, 0xc3, 0xa7, 0xa6, 0xc2, + 0x22, 0x0c, 0xeb, 0xe1, 0x59, 0x8c, 0x34, 0x78, + 0xe5, 0xa5, 0x11, 0xca, 0x6d, 0x46, 0x81, 0xbe, + 0x84, 0x44, 0x8e, 0x31, 0x24, 0x5c, 0x6b, 0xdd, + 0x2a, 0x13, 0xe1, 0x00, 0x94, 0xbb, 0x3b, 0x16, + 0xfc, 0x72, 0xa3, 0xc6, 0x24, 0x0a, 0xd1, 0x10, + 0x03, 0x66, 0x16, 0xb9, 0x94, 0x1b, 0x96, 0xca, + 0x99, 0x27, 0xd2, 0xb7, 0xb4, 0xfe, 0x3e, 0x25, + 0xec, 0x57, 0xdf, 0x45, 0x7b, 0x53, 0x01, 0xf3, + 0x07, 0xb9, 0x77, 0xfa, 0x85, 0x1d, 0x69, 0x69, + 0x2a, 0xbd, 0xcd, 0x9c, 0x73, 0x07, 0xf8, 0x26, + 0xce, 0xaf, 0x18, 0x94, 0xd5, 0x08, 0x3e, 0x6c, + 0xb8, 0x64, 0x57, 0xb8, 0xfc, 0xc1, 0xa2, 0xed, + 0xf3, 0x20, 0x17, 0xe8, 0x93, 0x27, 0x3e, 0xc6, + 0x4b, 0xf1, 0x2f, 0x21, 0x16, 0x1f, 0x60, 0x52, + 0x94, 0x0b, 0x25, 0x42, 0x8a, 0x2e, 0x0b, 0x5d, + 0x42, 0x91, 0xca, 0x77, 0x52, 0x8e, 0xbd, 0x3d, + 0x82, 0x2b, 0xd5, 0xed, 0x53, 0x4a, 0x84, 0x9a, + 0x9d, 0xc4, 0xb1, 0x75, 0x87, 0x95, 0x19, 0xa6, + 0x46, 0x7f, 0xb8, 0xd0, 0x56, 0x18, 0xf8, 0xa6, + 0x8f, 0xce, 0x64, 0xcd, 0xa5, 0x34, 0xf4, 0xd7, + 0x02, 0x5e, 0xe1, 0xb1, 0x8f, 0x42, 0x3b, 0xbe, + 0x18, 0x4d, 0xf8, 0x26, 0xa4, 0x1e, 0x5c, 0xf0, + 0xd5, 0x73, 0x28, 0xdf, 0xaa, 0x73, 0x08, 0xee, + 0x72, 0x52, 0x3d, 0x63, 0xfb, 0x82, 0x71, 0x88, + 0xe5, 0x35, 0x54, 0xbc, 0xf8, 0x3f, 0xd0, 0x39, + 0x1c, 0xc7, 0x86, 0x86, 0x80, 0x37, 0x1c, 0x88, + 0xf0, 0xff, 0x65, 0x3d, 0x94, 0x07, 0x7f, 0x97, + 0x65, 0xd2, 0xb2, 0xf6, 0xb2, 0xd8, 0x56, 0x23, + 0xe4, 0xbb, 0xfe, 0xef, 0x80, 0x53, 0x7b, 0xd3, + 0x44, 0x11, 0xb2, 0x32, 0x8b, 0x93, 0xea, 0x15, + 0x2d, 0x3b, 0x80, 0x38, 0xdc, 0xfe, 0x80, 0x78, + 0xd9, 0x01, 0x60, 0xc3, 0x03, 0xce, 0x96, 0x89, + 0x00, 0x9e, 0x48, 0xa4, 0xfa, 0x33, 0x08, 0xe6, + 0x1d, 0xca, 0xff, 0xbc, 0xbf, 0x2c, 0xa3, 0xfd, + 0xf4, 0x6d, 0x25, 0x5c, 0xf7, 0x83, 0x0e, 0x9b, + 0x97, 0xbf, 0xea, 0x8a, 0xcc, 0x7f, 0x74, 0xac, + 0x77, 0xc6, 0x99, 0xb7, 0x02, 0xd0, 0xc7, 0x65, + 0x76, 0x8e, 0x43, 0x0a, 0x23, 0xdc, 0xb5, 0x76, + 0x85, 0x04, 0x2b, 0xc7, 0xf7, 0x67, 0xc4, 0xa8, + 0xbc, 0x02, 0x91, 0xdb, 0x24, 0x50, 0xb8, 0x51, + 0xb5, 0x74, 0xb2, 0x04, 0xeb, 0x83, 0x51, 0x0d, + 0xa2, 0x74, 0xea, 0x72, 0xc8, 0x2f, 0x08, 0x61, + 0x46, 0xa5, 0x5a, 0x09, 0x97, 0x9c, 0x2d, 0x81, + 0xb4, 0x1b, 0x94, 0x75, 0x4a, 0x96, 0x30, 0x26, + 0xda, 0xf8, 0x32, 0xb3, 0x07, 0xa6, 0xa7, 0x66, + 0xdf, 0xca, 0xfd, 0xdf, 0x47, 0xcf, 0x66, 0x58, + 0x81, 0x4c, 0x82, 0x58, 0xba, 0xa9, 0x03, 0xf9, + 0xa9, 0xed, 0xd2, 0xf6, 0xe5, 0xec, 0x26, 0xf0, + 0xa6, 0xc9, 0x54, 0x6f, 0x9a, 0x4b, 0x64, 0x93, + 0xc3, 0xf9, 0xb6, 0x0a, 0xc2, 0x36, 0x5c, 0x23, + 0xed, 0xfc, 0x0f, 0x6c, 0x91, 0x23, 0x69, 0x48, + 0xbf, 0x3c, 0x85, 0x41, 0x8d, 0xd0, 0xcf, 0x28, + 0x3a, 0x71, 0x63, 0x91, 0x04, 0x85, 0x81, 0x70, + 0x06, 0x3e, 0x6c, 0x73, 0x8a, 0x33, 0xeb, 0x93, + 0x52, 0xd5, 0x13, 0x55, 0xe5, 0xcb, 0x49, 0x60, + 0x74, 0x44, 0xe1, 0xaf, 0xe2, 0xd5, 0xae, 0x0f, + 0x7c, 0x3f, 0x9a, 0x15, 0x05, 0x1f, 0xdf, 0x39, + 0x51, 0x45, 0xca, 0x26, 0xda, 0x03, 0xd1, 0x90, + 0x23, 0xd9, 0x35, 0xf8, 0x93, 0x31, 0xec, 0xe3, + 0xfe, 0x73, 0xe3, 0xbd, 0xa9, 0x33, 0x90, 0x9b, + 0xcf, 0x5b, 0x31, 0x3d, 0xfe, 0x05, 0x1a, 0xb8, + 0x69, 0xe3, 0xb6, 0xe8, 0x39, 0xe5, 0x68, 0x98, + 0x85, 0x8e, 0x90, 0x7b, 0x97, 0x85, 0x2e, 0x98, + 0x98, 0x17, 0xd8, 0x6f, 0x9c, 0x39, 0x75, 0x1b, + 0x74, 0x43, 0x53, 0xae, 0x1c, 0xd0, 0xa1, 0x0a, + 0x66, 0xf0, 0xc9, 0x66, 0xb8, 0xde, 0xcf, 0x15, + 0xbb, 0x71, 0x73, 0xb0, 0x84, 0xed, 0x0f, 0x0d, + 0x5e, 0xdc, 0xb8, 0x3f, 0xa5, 0x56, 0xd9, 0x0a, + 0x24, 0xb5, 0x84, 0x7b, 0xf4, 0x50, 0xd6, 0x88, + 0x0f, 0x16, 0x35, 0x7f, 0x47, 0xf4, 0xfd, 0xb0, + 0x0c, 0x03, 0xfc, 0x87, 0x7b, 0xa0, 0x37, 0x0e, + 0xbd, 0xd5, 0x57, 0x5b, 0xa5, 0x19, 0xec, 0x52, + 0xd8, 0x57, 0x7e, 0x81, 0xc8, 0x33, 0x6d, 0xc4, + 0x7f, 0x41, 0xb0, 0x0d, 0xee, 0x53, 0x3b, 0x69, + 0x14, 0x63, 0x1e, 0xe1, 0xc9, 0xa8, 0x00, 0xb2, + 0x9f, 0x6a, 0x84, 0x69, 0x49, 0x38, 0x78, 0x0b, + 0x20, 0xcf, 0x9e, 0x1e, 0x86, 0x41, 0xc8, 0x3f, + 0x86, 0x65, 0x68, 0x45, 0x1a, 0x8d, 0x56, 0x5b, + 0x80, 0xf9, 0xad, 0x03, 0x65, 0x32, 0xa0, 0xc6, + 0x6d, 0x95, 0x81, 0x79, 0x89, 0x98, 0x1d, 0x74, + 0x61, 0xe2, 0x0a, 0xa9, 0x88, 0x4d, 0xa3, 0x50, + 0x3c, 0xfd, 0x10, 0x9a, 0x38, 0x06, 0x93, 0xb3, + 0x2a, 0xef, 0x17, 0xcb, 0x24, 0xa5, 0x41, 0x5b, + 0xdc, 0xb5, 0x6b, 0x31, 0x8d, 0xa7, 0x58, 0x0b, + 0xb1, 0xc8, 0xc6, 0x1f, 0x2f, 0x28, 0x0e, 0x76, + 0x63, 0x49, 0x89, 0x73, 0x23, 0xf8, 0x2b, 0x53, + 0xc7, 0xd1, 0x9a, 0x69, 0x2c, 0x13, 0xd8, 0x1b, + 0x99, 0x09, 0x53, 0xd3, 0x7d, 0xc2, 0x59, 0xd4, + 0x4c, 0x99, 0x4f, 0xb5, 0x55, 0x0b, 0x64, 0xaa, + 0x61, 0x08, 0x2d, 0xb2, 0x60, 0xe1, 0x69, 0x00, + 0x24, 0xc9, 0x32, 0x5d, 0xb9, 0x03, 0xe6, 0x84, + 0xd8, 0xcf, 0xa3, 0xa5, 0x57, 0xc2, 0x88, 0x23, + 0xf0, 0x4a, 0x11, 0x7f, 0x34, 0xa5, 0x4f, 0xe9, + 0xda, 0xfb, 0xbc, 0x81, 0x0c, 0xae, 0xaa, 0xa7, + 0x83, 0xe7, 0xa9, 0x31, 0x2b, 0x69, 0xf3, 0x8a, + 0x84, 0x0a, 0xeb, 0xf7, 0xb0, 0x3b, 0x48, 0x7d, + 0x04, 0x0c, 0xb4, 0xaa, 0xb9, 0x16, 0x0e, 0x2c, + 0xbd, 0x0d, 0x9d, 0x4a, 0x88, 0xe2, 0x80, 0x85, + 0x2a, 0xd0, 0xb0, 0x65, 0x65, 0x4e, 0xbb, 0xf9, + 0x33, 0x89, 0x08, 0xdf, 0x30, 0xcb, 0x7e, 0x6b, + 0x78, 0x3a, 0x7d, 0xeb, 0x64, 0x44, 0x50, 0x22, + 0xd1, 0xe9, 0x50, 0xc4, 0x7b, 0x5c, 0x86, 0x79, + 0x88, 0xb5, 0x2a, 0x54, 0xed, 0x37, 0x06, 0x1e, + 0x08, 0xc5, 0xfb, 0xb1, 0x13, 0xb4, 0x73, 0x0a, + 0x5e, 0x0a, 0x88, 0x01, 0x57, 0x0c, 0x92, 0x18, + 0x6c, 0xac, 0x83, 0x45, 0xa0, 0x96, 0x69, 0xdf, + 0xb5, 0x18, 0xf7, 0x0e, 0x4e, 0x6c, 0x34, 0xe3, + 0x65, 0x83, 0xde, 0x40, 0xa0, 0xa7, 0x17, 0xfc, + 0x48, 0x87, 0x82, 0x4c, 0x0d, 0xa0, 0xd4, 0xc4, + 0x4a, 0x21, 0x1b, 0x75, 0xbd, 0x05, 0x31, 0x9b, + 0x24, 0x47, 0x0f, 0x44, 0x50, 0x06, 0x6e, 0xac, + 0x28, 0xd6, 0x2e, 0xf5, 0xce, 0xcf, 0x4c, 0xd2, + 0x23, 0xf1, 0x8c, 0x79, 0xad, 0x56, 0x64, 0xb1, + 0x6a, 0x5e, 0x51, 0x16, 0x4e, 0x66, 0xd0, 0xfa, + 0x34, 0x80, 0xab, 0x10, 0x9c, 0xdf, 0xc5, 0xa3, + 0x3e, 0xd6, 0xdc, 0x0c, 0x8e, 0x36, 0xc3, 0x5d, + 0xde, 0x13, 0xea, 0x6e, 0x0a, 0xb4, 0x31, 0x62, + 0x50, 0x06, 0xad, 0xff, 0x0f, 0xe6, 0x7e, 0x51, + 0xd9, 0xe8, 0x59, 0x8f, 0x83, 0xf2, 0x7c, 0x4b, + 0x36, 0x60, 0xb0, 0x3d, 0xa0, 0x74, 0xc9, 0x95, + 0xb1, 0xd9, 0x8d, 0x4d, 0x03, 0xc9, 0x31, 0xbd, + 0x50, 0x58, 0xed, 0x8a, 0x73, 0xaf, 0x12, 0x6b, + 0xa5, 0x1b, 0x87, 0xec, 0xc0, 0xea, 0xc3, 0x30, + 0x5c, 0x7f, 0xab, 0xec, 0xb1, 0xfd, 0x82, 0x8d, + 0xf9, 0x12, 0x28, 0xca, 0x62, 0xff, 0x60, 0xfd, + 0xf1, 0xf0, 0xc9, 0x9a, 0x54, 0xf0, 0x81, 0x48, + 0xed, 0xe4, 0x08, 0x12, 0xa6, 0x5f, 0x9a, 0xf8, + 0x96, 0xaa, 0x49, 0x7d, 0xf2, 0x85, 0x6d, 0x4f, + 0x0b, 0x19, 0xcc, 0xbe, 0x62, 0xaa, 0xbb, 0x15, + 0xb4, 0x2b, 0x10, 0xb1, 0x4e, 0xcf, 0xe8, 0x31, + 0xbc, 0xa1, 0x61, 0x8a, 0x31, 0x4e, 0xda, 0x8a, + 0xcd, 0xe9, 0x81, 0x4f, 0xd5, 0xb5, 0x54, 0xf3, + 0x93, 0x7d, 0x0c, 0x19, 0x65, 0xc1, 0x3d, 0xa5, + 0x74, 0xee, 0xe3, 0xe1, 0x53, 0x70, 0x3b, 0xe1, + 0x01, 0x0b, 0x10, 0xb8, 0x41, 0x89, 0x01, 0x76, + 0xe9, 0xff, 0x7d, 0x68, 0x86, 0xfc, 0x79, 0x73, + 0xac, 0xce, 0x6c, 0xc5, 0x90, 0xe1, 0x13, 0x91, + 0xbd, 0x9b, 0x94, 0xdf, 0x64, 0xba, 0x6c, 0xd1, + 0x5a, 0x4f, 0x0a, 0xf5, 0x99, 0xaa, 0x2b, 0x2f, + 0x51, 0xd6, 0x82, 0x52, 0xe8, 0x42, 0x8c, 0xbe, + 0xed, 0x5c, 0x87, 0x7e, 0xe8, 0xd3, 0x6e, 0x29, + 0x89, 0x3a, 0x0f, 0xaa, 0xb4, 0x8c, 0x72, 0x31, + 0x5c, 0x82, 0x4e, 0xaa, 0x21, 0xa3, 0x50, 0x5a, + 0xa7, 0x89, 0x09, 0x2b, 0xdd, 0x2a, 0xad, 0xb0, + 0x0a, 0xb9, 0x48, 0x15, 0x4c, 0x4c, 0xd5, 0x08, + 0x8c, 0x26, 0x6a, 0xd0, 0x06, 0x8b, 0x95, 0xdd, + 0x81, 0x1d, 0x19, 0x2d, 0x1b, 0xa5, 0x7c, 0x0c, + 0xb0, 0x68, 0x7d, 0x60, 0x89, 0x6f, 0x41, 0xde, + 0x90, 0xfc, 0x51, 0x25, 0xe9, 0x1b, 0x3c, 0xe5, + 0xc0, 0x36, 0xf4, 0x7d, 0x0e, 0x53, 0xa5, 0x78, + 0xca, 0x06, 0xd9, 0x8d, 0xdf, 0x1c, 0xc6, 0x5a, + 0x72, 0x8e, 0xcf, 0x4f, 0xc4, 0x5a, 0x79, 0x65, + 0xe2, 0x71, 0xb8, 0xa9, 0x4a, 0x12, 0x29, 0xcc, + 0x7e, 0x1b, 0x64, 0x93, 0xc7, 0x5b, 0x2a, 0x12, + 0x2d, 0x30, 0xc1, 0x55, 0x2f, 0xea, 0xb3, 0xa4, + 0xfd, 0x2b, 0xa0, 0xc3, 0x65, 0x46, 0x60, 0xaf, + 0x56, 0xea, 0x79, 0xf2, 0x7e, 0xaf, 0x73, 0xbc, + 0x91, 0xd2, 0xd4, 0xa5, 0x9e, 0x6f, 0x62, 0x34, + 0x53, 0x6c, 0x8f, 0x29, 0x17, 0x68, 0x47, 0xea, + 0xed, 0xec, 0x8a, 0x25, 0x6d, 0x6c, 0x83, 0x16, + 0x7d, 0x93, 0xd3, 0x44, 0xbd, 0x56, 0x30, 0xbd, + 0x64, 0x20, 0xa0, 0xfb, 0x40, 0xf5, 0x62, 0x77, + 0xe6, 0x08, 0x91, 0x35, 0x3a, 0x0a, 0xc4, 0x2d, + 0x74, 0x76, 0xca, 0x6d, 0x73, 0xb2, 0x23, 0x84, + 0xe7, 0x4a, 0xc6, 0xd2, 0xa1, 0xbe, 0xd5, 0x71, + 0xac, 0xfe, 0x19, 0x77, 0xde, 0x6c, 0x40, 0xc4, + 0x41, 0x34, 0x2c, 0x8f, 0x7c, 0x3d, 0x2d, 0xfe, + 0x1f, 0x96, 0xf3, 0x5e, 0xfa, 0x33, 0xf8, 0xe6, + 0xfe, 0x93, 0x88, 0xf6, 0xec, 0x46, 0xf8, 0x5e, + 0xd7, 0x56, 0xf2, 0x39, 0x8d, 0xee, 0x24, 0x40, + 0x0e, 0x77, 0xf4, 0xe0, 0xfe, 0x37, 0x15, 0xa8, + 0x7a, 0x21, 0xbd, 0x13, 0x82, 0x03, 0xa6, 0xb7, + 0x3c, 0x90, 0xdd, 0xa7, 0x60, 0x20, 0x9f, 0xc4, + 0xad, 0xfe, 0xaf, 0xb3, 0x6e, 0xe9, 0xc6, 0x29, + 0x69, 0x47, 0x6d, 0x04, 0x80, 0x5c, 0x9e, 0x76, + 0x22, 0x93, 0x18, 0x5e, 0x29, 0xec, 0xff, 0xf6, + 0x0b, 0x99, 0xbc, 0xa8, 0x6e, 0xd7, 0x72, 0xf7, + 0xb7, 0xbd, 0xb7, 0xd3, 0x8e, 0x85, 0x28, 0xc3, + 0xb3, 0x96, 0xa9, 0x2c, 0x56, 0x5c, 0xab, 0x9a, + 0x86, 0x16, 0xb3, 0x55, 0x51, 0x31, 0x1d, 0x2c, + 0x8a, 0x20, 0xa1, 0x2b, 0xee, 0xd3, 0x2b, 0xf1, + 0xb6, 0xe3, 0xa8, 0xda, 0x32, 0xd3, 0xae, 0x51, + 0x75, 0xd1, 0x1c, 0xe9, 0xe1, 0x26, 0xc4, 0x7f, + 0x68, 0x84, 0xb5, 0xbb, 0xca, 0xae, 0x11, 0x90, + 0xb1, 0x18, 0x71, 0xab, 0x00, 0x03, 0x6e, 0xff, + 0x96, 0x33, 0x92, 0x20, 0x3b, 0xdd, 0xd0, 0x4d, + 0xd1, 0x2b, 0x64, 0x8c, 0xda, 0xf1, 0x93, 0xf6, + 0xd3, 0xdc, 0x22, 0x88, 0x19, 0xf2, 0xa7, 0x79, + 0x27, 0xc2, 0x23, 0xa7, 0x4c, 0x4c, 0xd8, 0x5d, + 0xa5, 0x20, 0xbe, 0x60, 0x2e, 0x75, 0x96, 0xd0, + 0xbf, 0x39, 0x71, 0xb5, 0x16, 0xce, 0xbf, 0x37, + 0xb5, 0x5a, 0xfc, 0xfd, 0x14, 0x7a, 0xac, 0x13, + 0x87, 0x95, 0xcd, 0x1b, 0x89, 0x73, 0xcb, 0xd7, + 0xdf, 0xee, 0x2e, 0xb1, 0xf3, 0x2a, 0xde, 0x77, + 0xc9, 0x6c, 0x5c, 0xce, 0x77, 0x0d, 0xdd, 0x71, + 0x13, 0x7a, 0xa2, 0xfc, 0xd5, 0x66, 0xc8, 0xf7, + 0xb6, 0x98, 0xf8, 0xf1, 0x3b, 0x3f, 0x6f, 0x0e, + 0xfe, 0x49, 0xb1, 0xbf, 0xf8, 0x29, 0xc9, 0x4c, + 0x8b, 0xda, 0xcd, 0x15, 0x6b, 0xa5, 0xac, 0x0d, + 0x7f, 0x4e, 0x3d, 0x15, 0x48, 0x19, 0x19, 0x59, + 0x6a, 0xdd, 0xa7, 0x49, 0x91, 0x31, 0xe6, 0x72, + 0x82, 0xc8, 0x27, 0x53, 0xa0, 0xcb, 0x47, 0xf4, + 0x58, 0xd2, 0x1f, 0xd8, 0x04, 0x90, 0xc3, 0x5b, + 0x02, 0xc2, 0x8f, 0x4a, 0x09, 0x81, 0xd0, 0xe6, + 0x6e, 0x84, 0x82, 0x37, 0xa6, 0xb5, 0x55, 0x7e, + 0xfd, 0xa2, 0x2b, 0x90, 0xd2, 0x2c, 0x6b, 0xab, + 0x9b, 0x16, 0xf8, 0xe0, 0xe6, 0x02, 0xcd, 0x29, + 0x68, 0x99, 0xaa, 0xe5, 0xca, 0x31, 0xe0, 0x7e, + 0xca, 0x4a, 0xa4, 0xdd, 0x8c, 0x04, 0x43, 0x44, + 0x3b, 0x73, 0x78, 0x76, 0xa6, 0x4c, 0x02, 0xf1, + 0x00, 0x4e, 0xbc, 0xfa, 0x2e, 0xc8, 0xbc, 0x82, + 0x04, 0x9f, 0xf5, 0x17, 0xc4, 0x91, 0x6d, 0x97, + 0x60, 0xaf, 0xa7, 0x92, 0xd7, 0xd3, 0x19, 0x97, + 0xba, 0x79, 0x43, 0xa2, 0x62, 0x9a, 0xf6, 0x46, + 0xa5, 0x13, 0xa8, 0xd9, 0x7c, 0x9a, 0x31, 0x66, + 0x5b, 0x26, 0x84, 0x69, 0x52, 0x23, 0x09, 0x49, + 0xc5, 0x8b, 0x79, 0x16, 0x8e, 0xa0, 0x22, 0xd8, + 0x05, 0xb6, 0x9b, 0xd3, 0xc1, 0x71, 0xec, 0xaa, + 0xc7, 0xba, 0x07, 0xb3, 0x47, 0xbe, 0x76, 0x3b, + 0x2b, 0x20, 0x87, 0x8f, 0xcd, 0x35, 0x91, 0x8b, + 0x28, 0xb9, 0xa7, 0x68, 0x98, 0x82, 0x3f, 0xfb, + 0xe3, 0x51, 0x17, 0x5c, 0xc6, 0xad, 0x81, 0xe7, + 0x6d, 0x93, 0xf5, 0xe8, 0xc2, 0x27, 0x1a, 0xf3, + 0x66, 0x08, 0x41, 0xa2, 0x84, 0x7f, 0x8b, 0x29, + 0xee, 0xec, 0x77, 0xc7, 0x9b, 0x60, 0x6a, 0xc3, + 0xb2, 0x97, 0x4b, 0x37, 0xd9, 0x69, 0xf2, 0xfe, + 0x5f, 0xd7, 0x47, 0xff, 0x5b, 0xe1, 0x9b, 0x14, + 0x9d, 0xb0, 0x4f, 0xd1, 0xc4, 0xc0, 0x70, 0x56, + 0xa9, 0x64, 0xa3, 0x1c, 0xf0, 0xbd, 0x4e, 0x25, + 0x15, 0xa6, 0x39, 0xbd, 0x7c, 0xcd, 0x06, 0x06, + 0x55, 0x81, 0x56, 0xe7, 0x87, 0xe8, 0xb6, 0xff, + 0xdf, 0xdd, 0x6c, 0x5f, 0x8a, 0xbb, 0x20, 0x25, + 0x98, 0xb6, 0xbd, 0x6b, 0x20, 0x79, 0x74, 0x67, + 0x5e, 0x43, 0xae, 0x3e, 0x9c, 0xca, 0xef, 0xdc, + 0x1e, 0x7e, 0xaf, 0xa0, 0x63, 0x33, 0xe0, 0xb1, + 0x32, 0xb7, 0xbc, 0x4e, 0x41, 0x9b, 0x42, 0xe4, + 0xad, 0xb3, 0x67, 0x79, 0x8b, 0x41, 0xc2, 0xa4, + 0x84, 0xac, 0x1d, 0xc1, 0xfe, 0xc0, 0xae, 0x35, + 0x3f, 0xca, 0xc7, 0x2e, 0x02, 0x91, 0xd1, 0x1b, + 0xfc, 0xa8, 0x12, 0xd2, 0x92, 0xdd, 0x53, 0x40, + 0xa0, 0x55, 0xbd, 0x23, 0x3a, 0x88, 0xcf, 0x3f, + 0x76, 0xf1, 0x31, 0x81, 0x7c, 0x0c, 0x17, 0x39, + 0x94, 0xf6, 0xcc, 0x55, 0x4c, 0xe7, 0x85, 0xa6, + 0xca, 0xc0, 0x30, 0x9a, 0x7e, 0x11, 0x41, 0x35, + 0xb6, 0x9c, 0xa0, 0xb4, 0x08, 0xa9, 0xe4, 0x2e, + 0x0f, 0xa6, 0x8f, 0x73, 0xb5, 0x42, 0x04, 0x7c, + 0x69, 0x61, 0xc7, 0x5d, 0x67, 0x45, 0x6f, 0x3c, + 0x82, 0xab, 0xac, 0x21, 0x1c, 0x11, 0x03, 0x98, + 0x1a, 0xa4, 0xc5, 0x1b, 0x4e, 0x3e, 0xb6, 0x5e, + 0x0a, 0xb3, 0xc3, 0x25, 0x01, 0xd2, 0x03, 0x78, + 0xe2, 0x8b, 0x3a, 0xf5, 0xac, 0xbc, 0x48, 0xf5, + 0x4a, 0x91, 0xc6, 0x69, 0xfb, 0x88, 0x2e, 0x52, + 0x46, 0x96, 0xd5, 0xf6, 0x07, 0x30, 0x95, 0x85, + 0x1e, 0xbe, 0x2d, 0x5c, 0x45, 0x72, 0xd4, 0xcc, + 0xef, 0xfc, 0x28, 0x1b, 0xbe, 0xc4, 0x2c, 0xa5, + 0x03, 0x15, 0xf9, 0x1e, 0x26, 0x4f, 0x47, 0xc3, + 0x52, 0xab, 0x4b, 0x93, 0x37, 0xa3, 0x8b, 0x1c, + 0x13, 0xbe, 0x89, 0xa3, 0x42, 0x65, 0x8c, 0x0d, + 0x00, 0x2f, 0xce, 0x10, 0x88, 0x6e, 0x02, 0x77, + 0x45, 0x28, 0xd0, 0xd8, 0xfc, 0xd3, 0xc2, 0x9f, + 0x76, 0xcb, 0xf1, 0x1e, 0x67, 0xae, 0xa4, 0xde, + 0xe4, 0xdc, 0x84, 0x12, 0x42, 0x15, 0x04, 0x89, + 0xa0, 0xe1, 0xfb, 0xfe, 0x16, 0x07, 0x8d, 0x34, + 0x55, 0xb7, 0x01, 0x2a, 0x6e, 0x8d, 0x50, 0xaa, + 0x3d, 0x5e, 0x42, 0xf5, 0x6d, 0xa3, 0x0a, 0x9d, + 0xc2, 0x91, 0xcf, 0x1d, 0x0a, 0x84, 0xbd, 0xb9, + 0xdc, 0xa6, 0xcc, 0xa6, 0x6a, 0x96, 0x69, 0x79, + 0xe7, 0x5b, 0xb9, 0xf9, 0x6b, 0x24, 0xf1, 0xc8, + 0x92, 0xe2, 0x1e, 0x2a, 0x22, 0xa4, 0x7b, 0x70, + 0xd2, 0xd7, 0xf2, 0xf1, 0x93, 0x79, 0x92, 0x0c, + 0x4f, 0xc4, 0xad, 0x95, 0x25, 0x29, 0x04, 0xea, + 0x72, 0xe3, 0xce, 0xd5, 0xd0, 0xc1, 0x23, 0xad, + 0x6f, 0x3d, 0xd6, 0xa9, 0x39, 0x2b, 0x24, 0x8d, + 0xa7, 0x72, 0x23, 0xeb, 0xa5, 0xa4, 0x11, 0x10, + 0x4a, 0x89, 0x2f, 0x7b, 0xe5, 0x06, 0xa2, 0xaa, + 0xd8, 0xe8, 0x96, 0xeb, 0xf1, 0x7b, 0x74, 0x06, + 0x65, 0x10, 0x8b, 0xc3, 0xa9, 0x0f, 0xae, 0x73, + 0xd5, 0xb0, 0xea, 0x25, 0x77, 0xfd, 0xa6, 0x41, + 0x55, 0x85, 0x72, 0xa6, 0x9d, 0xf3, 0x94, 0x5f, + 0x00, 0x37, 0x6f, 0x63, 0x64, 0x0c, 0x99, 0xde, + 0x36, 0x29, 0x89, 0x98, 0x88, 0x9e, 0xd9, 0x97, + 0x63, 0xd8, 0xfa, 0x13, 0x7a, 0x1f, 0x7e, 0x47, + 0x6a, 0xe9, 0xac, 0x18, 0x11, 0x69, 0xf4, 0x92, + 0x04, 0xc9, 0xec, 0x54, 0xaa, 0x69, 0x79, 0x8b, + 0xbb, 0x49, 0x81, 0x54, 0xeb, 0x3e, 0x87, 0xcc, + 0x63, 0xee, 0x1b, 0x07, 0x4b, 0x75, 0x93, 0x8a, + 0x81, 0x1b, 0x5e, 0xc3, 0x05, 0x6d, 0x1d, 0x8d, + 0x27, 0x59, 0xf7, 0xc6, 0xe9, 0x37, 0xf4, 0x71, + 0xcd, 0x1e, 0x27, 0x84, 0xd6, 0x4e, 0x1f, 0x07, + 0x1f, 0xe1, 0xf0, 0xaa, 0xc2, 0x71, 0x6b, 0x4f, + 0x15, 0xcf, 0x55, 0x62, 0xda, 0xcb, 0xe1, 0x49, + 0x7c, 0x46, 0xee, 0x58, 0x6e, 0x57, 0x09, 0xd8, + 0xef, 0xed, 0xa3, 0x8c, 0xa2, 0x63, 0x4a, 0x23, + 0x55, 0x04, 0x49, 0x0d, 0x47, 0x2a, 0x22, 0xf8, + 0x1f, 0xfd, 0x99, 0xab, 0x59, 0x18, 0x45, 0x9c, + 0xce, 0xd5, 0x37, 0x84, 0xc9, 0xe7, 0x5c, 0x9c, + 0xb8, 0xc8, 0x91, 0x4f, 0xc7, 0x97, 0xd2, 0x1f, + 0xb0, 0x0f, 0x2e, 0x08, 0xaa, 0x10, 0x1d, 0x21, + 0xb9, 0xbe, 0xb3, 0xa6, 0x3b, 0x09, 0xe0, 0x40, + 0x05, 0xc1, 0x93, 0x32, 0x9e, 0xea, 0x73, 0x9e, + 0x30, 0xe5, 0x74, 0x72, 0xcb, 0xf2, 0xfe, 0xf9, + 0x83, 0xf5, 0x8c, 0xc8, 0x39, 0xc7, 0x90, 0xe9, + 0x31, 0x0e, 0xcf, 0x0e, 0xa3, 0x11, 0xee, 0x74, + 0xd9, 0x13, 0x40, 0x42, 0xd7, 0x04, 0xbd, 0x68, + 0x60, 0xcd, 0xe5, 0x7c, 0x40, 0x96, 0xee, 0x88, + 0x5e, 0x1a, 0xea, 0x17, 0x40, 0x5a, 0x95, 0xe6, + 0xa9, 0xb2, 0x5e, 0xcb, 0x8a, 0x4f, 0xca, 0x18, + 0x35, 0x62, 0x39, 0x02, 0xdb, 0x7b, 0x92, 0x16, + 0x03, 0x18, 0xca, 0x84, 0xf0, 0xa5, 0x23, 0xb7, + 0x82, 0x6e, 0x47, 0x72, 0xaa, 0x07, 0xe5, 0x27, + 0x9f, 0x8a, 0x78, 0xd8, 0xa3, 0xca, 0xa4, 0x8f, + 0xee, 0xcc, 0xda, 0x45, 0x8a, 0x56, 0x5e, 0x0f, + 0x83, 0x10, 0x14, 0x0c, 0x71, 0x2a, 0x8b, 0xc7, + 0xa5, 0x25, 0x06, 0x07, 0x64, 0x2f, 0x6a, 0xac, + 0x70, 0x36, 0xce, 0x47, 0xda, 0x1c, 0xc6, 0x80, + 0xcb, 0xd1, 0x89, 0xd7, 0xdf, 0xfc, 0xd3, 0xb1, + 0x15, 0xd1, 0x51, 0xa6, 0x25, 0xa0, 0xfa, 0x2d, + 0x1a, 0x8e, 0xad, 0xc5, 0xa7, 0xeb, 0x26, 0x2c, + 0x48, 0xf7, 0x26, 0x4e, 0x61, 0x0f, 0x79, 0x3f, + 0x4c, 0x4d, 0x7d, 0x5c, 0x2e, 0x3d, 0x39, 0x16, + 0x77, 0x00, 0x31, 0x1d, 0x75, 0xdf, 0xb3, 0x88, + 0xf7, 0x4b, 0x2e, 0x30, 0x42, 0x8e, 0xbb, 0xd4, + 0x0b, 0xf7, 0xfd, 0x4d, 0x41, 0xb5, 0x75, 0x50, + 0xf9, 0x04, 0x3d, 0xf6, 0xbb, 0x0b, 0xf1, 0x5f, + 0x51, 0xac, 0x3a, 0xb8, 0x95, 0xb3, 0x35, 0xf7, + 0xea, 0x0f, 0x1b, 0xb5, 0x9c, 0xef, 0xa2, 0x34, + 0x6e, 0xf4, 0x19, 0x47, 0xb6, 0xc8, 0xfb, 0x63, + 0x3f, 0x60, 0x5f, 0xc6, 0x6e, 0x29, 0xce, 0x37, + 0xe6, 0xf9, 0xf4, 0xae, 0xb7, 0xe3, 0x6b, 0x65, + 0xd8, 0x63, 0xf0, 0x37, 0xbf, 0x53, 0xdf, 0xd4, + 0xeb, 0xa1, 0xf1, 0xb0, 0x73, 0xe8, 0x0c, 0x12, + 0xac, 0x71, 0xca, 0xb4, 0x0f, 0x66, 0xf6, 0x1b, + 0x01, 0xcf, 0x36, 0x33, 0x33, 0xf0, 0xff, 0x56, + 0x5d, 0x1b, 0x01, 0xb3, 0x12, 0x9d, 0x1e, 0x5f, + 0x49, 0xd3, 0x56, 0x0a, 0x3d, 0xcf, 0xf7, 0x1e, + 0x25, 0x39, 0xaf, 0x68, 0xd9, 0xa5, 0xbf, 0x5b, + 0xed, 0x23, 0x14, 0xfb, 0x0c, 0xed, 0x74, 0x09, + 0xd2, 0x4b, 0x81, 0x22, 0x1b, 0x4c, 0x38, 0x00, + 0xae, 0x62, 0xf5, 0xc0, 0x72, 0x3c, 0xa8, 0x83, + 0x4a, 0xd8, 0x6f, 0x6f, 0xbb, 0x71, 0x18, 0x68, + 0x9f, 0x44, 0x6a, 0x6a, 0x4f, 0x93, 0x6e, 0x01, + 0xd1, 0x40, 0x10, 0x2c, 0xaa, 0xf1, 0x94, 0xb6, + 0x3a, 0x90, 0xb0, 0x8d, 0xa2, 0x4f, 0xaf, 0x70, + 0xb2, 0x98, 0x4b, 0x40, 0x06, 0x47, 0x04, 0x82, + 0x6e, 0x93, 0x09, 0x97, 0xd7, 0x96, 0x9c, 0x94, + 0x76, 0xda, 0x01, 0xad, 0xbd, 0x2a, 0x67, 0xc3, + 0x31, 0xd6, 0x46, 0x8b, 0x7d, 0x37, 0x4e, 0x1c, + 0xa3, 0x24, 0xb9, 0x3a, 0x65, 0x19, 0x44, 0x85, + 0xdf, 0x45, 0x35, 0x10, 0xc4, 0x68, 0x78, 0x45, + 0x99, 0x60, 0x14, 0x91, 0x0b, 0x3e, 0xe3, 0xa4, + 0xfe, 0xe6, 0x08, 0x12, 0xae, 0xc3, 0xa2, 0x8d, + 0x48, 0xd0, 0x11, 0xd7, 0x7a, 0xd4, 0xde, 0x94, + 0x09, 0xa5, 0xb0, 0xec, 0x3f, 0xf7, 0x49, 0xd0, + 0x8e, 0x46, 0xf2, 0xc3, 0x3d, 0x6b, 0xaa, 0xca, + 0x1e, 0xfa, 0x5a, 0xa6, 0x9f, 0x53, 0xca, 0x3c, + 0xdb, 0x4b, 0xf3, 0xa0, 0xe5, 0xc9, 0xd8, 0x08, + 0xac, 0xe0, 0x95, 0x49, 0xf0, 0x2a, 0x02, 0x29, + 0xe0, 0xc1, 0x87, 0x53, 0x8e, 0xa4, 0xab, 0xff, + 0xc1, 0x3f, 0x2c, 0xaf, 0x0f, 0xbd, 0x0b, 0xfc, + 0x43, 0x2e, 0xb6, 0x9d, 0xa1, 0x93, 0x87, 0x88, + 0xc5, 0xc4, 0x47, 0xac, 0x61, 0xa2, 0x62, 0xbf, + 0x35, 0xab, 0x11, 0x41, 0x5d, 0xf4, 0x3b, 0x3f, + 0xb4, 0xaa, 0x51, 0x9e, 0xee, 0x6c, 0x70, 0xc3, + 0x4e, 0xed, 0x49, 0xfc, 0x40, 0xb2, 0x02, 0x34, + 0x5e, 0x82, 0x30, 0x68, 0x7e, 0x1a, 0xe6, 0xcd, + 0x84, 0xef, 0xe4, 0x33, 0x45, 0x42, 0xc4, 0x8e, + 0x54, 0xb9, 0x4c, 0x9d, 0xbf, 0x3b, 0x76, 0xfb, + 0xfb, 0x27, 0xd8, 0xcd, 0x2f, 0x74, 0x3c, 0xda, + 0x0f, 0xba, 0x3d, 0x2b, 0x92, 0x48, 0x14, 0x6e, + 0xec, 0x6d, 0x26, 0xe3, 0xa6, 0x57, 0x55, 0x82, + 0xd0, 0x38, 0xe2, 0xef, 0xab, 0xa7, 0xb1, 0x2b, + 0x33, 0xe6, 0xf5, 0xa3, 0x61, 0x48, 0xb2, 0xf0, + 0x2e, 0x37, 0x94, 0x38, 0x99, 0x39, 0x8c, 0x70, + 0x4f, 0x50, 0xa6, 0x16, 0x03, 0x45, 0x2c, 0xae, + 0x8e, 0x75, 0x0d, 0x6e, 0x3c, 0x54, 0xab, 0x15, + 0xf9, 0x8d, 0xa8, 0x49, 0x54, 0x93, 0x62, 0x4e, + 0x3d, 0xfb, 0x52, 0x32, 0xb4, 0x5e, 0xe0, 0xd5, + 0xb9, 0xec, 0x2e, 0x26, 0x5d, 0x6d, 0x3d, 0xf0, + 0xac, 0x54, 0x3c, 0xb0, 0x9d, 0xcf, 0x63, 0x22, + 0x8e, 0x2a, 0xe3, 0xe7, 0xf0, 0x4f, 0x51, 0x1b, + 0xf2, 0x4c, 0xe3, 0xb4, 0xa0, 0x78, 0x2d, 0xdb, + 0x98, 0x99, 0xc0, 0xb9, 0x43, 0xf9, 0xbe, 0x72, + 0x90, 0x6f, 0x21, 0x41, 0xff, 0xac, 0x63, 0x61, + 0x5f, 0x54, 0x65, 0xde, 0x2d, 0x63, 0x76, 0xbc, + 0x3c, 0x35, 0x62, 0xb8, 0x21, 0xa8, 0x5e, 0x4c, + 0xf4, 0xfd, 0xa9, 0x73, 0x4f, 0x8b, 0xb9, 0xd1, + 0x07, 0x64, 0x37, 0x92, 0x66, 0x1f, 0x41, 0xe1, + 0xa1, 0xc7, 0xd9, 0x04, 0xc7, 0x1c, 0x81, 0x6a, + 0x7f, 0x6d, 0x80, 0xec, 0xed, 0x84, 0x8b, 0xf3, + 0xc3, 0xa7, 0xcb, 0x12, 0x2b, 0xd6, 0x27, 0x20, + 0x20, 0x99, 0x30, 0x37, 0x50, 0xc4, 0xac, 0x63, + 0x12, 0xb3, 0x8a, 0xcb, 0x16, 0xf1, 0x52, 0x7d, + 0xa5, 0xab, 0xc4, 0xea, 0x83, 0xdb, 0x52, 0xbb, + 0x97, 0x4c, 0xf7, 0x3c, 0x81, 0x67, 0x5b, 0xd8, + 0xf8, 0xbc, 0xab, 0xf5, 0x7c, 0x93, 0x19, 0x41, + 0x38, 0xa6, 0x0a, 0x78, 0x07, 0x03, 0xfd, 0x66, + 0x9b, 0x5e, 0xc0, 0x60, 0x3f, 0xf8, 0xe1, 0x12, + 0xd9, 0x1b, 0x72, 0x80, 0x75, 0xfa, 0x38, 0xc9, + 0xbb, 0x41, 0x6a, 0x29, 0xd0, 0x26, 0x5d, 0xa9, + 0xa5, 0x26, 0x05, 0x5e, 0xea, 0x1f, 0x63, 0x8b, + 0xa0, 0x41, 0x09, 0x58, 0x21, 0xa8, 0x33, 0x02, + 0x32, 0xaf, 0x86, 0xf7, 0xdd, 0x4d, 0x80, 0xdd, + 0x48, 0x14, 0x03, 0xe9, 0xbf, 0xed, 0xff, 0xbd, + 0x11, 0x18, 0x49, 0x63, 0x67, 0x6d, 0x96, 0xc2, + 0xec, 0xef, 0xf8, 0x6d, 0x7f, 0x8f, 0x99, 0xaf, + 0xc4, 0x0b, 0x4f, 0x61, 0x67, 0x86, 0x8b, 0x97, + 0x35, 0x98, 0xd0, 0xd5, 0xfc, 0x0d, 0x35, 0x3d, + 0x47, 0x55, 0x56, 0x66, 0x68, 0xc5, 0xfd, 0x03, + 0x52, 0x83, 0xa0, 0xcd, 0xea, 0x05, 0x41, 0x4a, + 0xa5, 0xe1, 0xec, 0x14, 0x1e, 0x26, 0x29, 0x2c, + 0x39, 0x51, 0x9c, 0x9e, 0xe5, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0b, 0x11, 0x18, 0x1d, 0x27, + 0x2d, 0x33, 0x3d, }, + }, { + .what =3D "pure rejection vector", + .algo =3D "ml-dsa87", + .pk_len =3D DILITHIUM87_PUBLICKEYBYTES, + .pk =3D (const u8[DILITHIUM87_PUBLICKEYBYTES]){ + 0xf0, 0xb2, 0xb4, 0x8a, 0x7e, 0x17, 0x02, 0xdf, + 0x75, 0xc1, 0x1f, 0xd7, 0x0f, 0xfd, 0x02, 0x86, + 0x74, 0x08, 0xb2, 0x1a, 0xf6, 0xbd, 0xbe, 0x4e, + 0xad, 0x38, 0x2c, 0x48, 0x2e, 0x83, 0x71, 0xbb, + 0xc0, 0x3b, 0xa0, 0x34, 0xd5, 0xfa, 0x3e, 0xfd, + 0xba, 0x87, 0x19, 0x3a, 0x7f, 0xe0, 0x71, 0x45, + 0x4d, 0x0a, 0xa2, 0x15, 0x93, 0x4a, 0x0a, 0x0a, + 0x7e, 0xb5, 0xc7, 0x1b, 0x28, 0xb1, 0x13, 0x7c, + 0x00, 0xc6, 0x89, 0xaf, 0x7f, 0x9c, 0x44, 0xec, + 0x31, 0xff, 0x27, 0x53, 0x7b, 0x16, 0x45, 0xe0, + 0x9f, 0x1d, 0x80, 0x70, 0x00, 0xe2, 0xa8, 0xd7, + 0x69, 0x7d, 0xfc, 0x43, 0xef, 0x59, 0xaf, 0xfe, + 0xdb, 0x79, 0x1a, 0x5b, 0xc2, 0x8b, 0x73, 0x1b, + 0x6f, 0xf0, 0x8a, 0x6f, 0xd2, 0x74, 0x75, 0xbc, + 0x13, 0xee, 0xb3, 0x70, 0x07, 0x82, 0x66, 0x1a, + 0xb5, 0xee, 0xa4, 0xec, 0xae, 0xce, 0x3e, 0xc1, + 0x21, 0xa0, 0x9e, 0xa9, 0x9d, 0x15, 0x5c, 0x9d, + 0xa8, 0xef, 0xb2, 0x1e, 0x90, 0x41, 0x70, 0xe2, + 0x39, 0x05, 0xed, 0xb6, 0x8a, 0x09, 0xfd, 0x81, + 0x6e, 0x9b, 0xf6, 0x77, 0xd6, 0x5c, 0x1d, 0xd2, + 0x04, 0xb8, 0x2e, 0xae, 0xdc, 0x5e, 0x5a, 0x23, + 0x4a, 0x07, 0x3f, 0x95, 0x96, 0xc0, 0x94, 0x1f, + 0xd2, 0x8b, 0x58, 0x17, 0x0b, 0x7b, 0xd3, 0x70, + 0x90, 0xe2, 0xf9, 0xcf, 0x42, 0x92, 0xc6, 0x3e, + 0x96, 0x29, 0x4b, 0xd3, 0x76, 0xd5, 0xf3, 0xdc, + 0xda, 0x33, 0x52, 0xfd, 0x30, 0x72, 0xc8, 0x9c, + 0xd0, 0xca, 0x3b, 0x52, 0xfa, 0x7c, 0x2f, 0xca, + 0x99, 0x97, 0xdf, 0x03, 0x62, 0xf2, 0x90, 0x94, + 0xb4, 0x89, 0xda, 0x72, 0x16, 0x3d, 0xed, 0x0e, + 0xdc, 0xe0, 0x23, 0x80, 0x43, 0x05, 0xdc, 0x42, + 0xf8, 0x16, 0xdf, 0x4a, 0xd2, 0xeb, 0x7d, 0xb3, + 0x5c, 0xb0, 0x86, 0xb8, 0x43, 0xd5, 0x9b, 0x88, + 0xd0, 0xb3, 0xa0, 0x68, 0x7f, 0x1e, 0x3b, 0xe1, + 0x2d, 0x1c, 0x3d, 0x9f, 0x12, 0x61, 0xc2, 0x55, + 0xce, 0xd1, 0xda, 0x6e, 0x1a, 0xd5, 0x10, 0xb3, + 0x60, 0xde, 0x90, 0x58, 0x87, 0x94, 0x73, 0x40, + 0xde, 0xdc, 0x0d, 0x8d, 0x36, 0x0b, 0xb5, 0x2a, + 0x28, 0xae, 0xfb, 0x39, 0x90, 0x04, 0x55, 0xfd, + 0x88, 0x81, 0x4e, 0x68, 0x0a, 0xf0, 0xed, 0xa7, + 0x69, 0x25, 0xd2, 0xc3, 0xcd, 0x32, 0x75, 0x49, + 0xac, 0xc5, 0xc8, 0xb9, 0x02, 0x1a, 0xb3, 0x57, + 0xa5, 0x30, 0xa7, 0xc1, 0x03, 0x44, 0xcf, 0x58, + 0x00, 0xeb, 0x23, 0x4b, 0xb6, 0x3b, 0x6b, 0x5e, + 0x20, 0xcd, 0xac, 0x4a, 0x8e, 0xc6, 0xca, 0x33, + 0xb6, 0x17, 0x5c, 0x76, 0x15, 0x30, 0xc8, 0xb5, + 0x6b, 0x4c, 0x68, 0x46, 0x88, 0x31, 0xca, 0xae, + 0x45, 0xe6, 0x8f, 0x2a, 0x69, 0x29, 0xfd, 0x7c, + 0x95, 0x31, 0xa0, 0x8b, 0xc9, 0x35, 0x50, 0x24, + 0xb6, 0xc4, 0x94, 0xf8, 0x74, 0xe0, 0xb0, 0x5a, + 0xd5, 0x30, 0x11, 0x49, 0x37, 0x8a, 0x53, 0x68, + 0x9e, 0xc3, 0x9e, 0xc2, 0x4e, 0x51, 0x97, 0xd8, + 0x1b, 0x03, 0x4f, 0xa3, 0xc8, 0x6d, 0xdf, 0xdb, + 0x2a, 0xfe, 0xf7, 0x78, 0xf7, 0xc3, 0xa7, 0xc6, + 0x9e, 0xce, 0xb3, 0x77, 0x8c, 0xf7, 0x95, 0x26, + 0xe5, 0x84, 0xa0, 0x0d, 0xc6, 0x8c, 0xae, 0x1e, + 0xed, 0x23, 0xa0, 0x0c, 0xaa, 0xa1, 0x35, 0x63, + 0x96, 0x4a, 0x8a, 0x83, 0xee, 0x96, 0xdd, 0xf1, + 0x1d, 0xdb, 0xc3, 0x1c, 0x6d, 0xe7, 0x5b, 0xe6, + 0x9c, 0x89, 0xe5, 0xe6, 0x8b, 0xf3, 0x61, 0xa4, + 0xfd, 0x9a, 0xc6, 0xc1, 0x21, 0xb3, 0x39, 0x75, + 0xcc, 0x1d, 0x84, 0x1f, 0x5b, 0xb9, 0xbd, 0x21, + 0x6b, 0x3b, 0xdc, 0x7b, 0x52, 0x2d, 0x65, 0xcb, + 0x1b, 0x47, 0x8c, 0xb6, 0x33, 0x6f, 0x07, 0xb1, + 0xc8, 0x7e, 0x9a, 0x50, 0x69, 0xfc, 0x04, 0x43, + 0xf1, 0x79, 0xf1, 0xd6, 0x34, 0x71, 0x35, 0x82, + 0x8f, 0xdd, 0xab, 0x09, 0xe9, 0x74, 0xa3, 0xdf, + 0x4a, 0x51, 0x70, 0xe5, 0x68, 0xae, 0x03, 0x3d, + 0x3c, 0xab, 0x2b, 0x4c, 0x82, 0xfb, 0xd2, 0x3d, + 0xcc, 0x83, 0x18, 0xaf, 0xc0, 0x0e, 0xa2, 0x0c, + 0x7a, 0x10, 0x61, 0x8a, 0x2d, 0xc0, 0x69, 0xf5, + 0x63, 0x3d, 0x46, 0x35, 0x3e, 0xd6, 0x58, 0xe0, + 0x91, 0xbf, 0xf8, 0xe3, 0xd6, 0xb7, 0xce, 0x93, + 0xa7, 0xc7, 0x4c, 0x62, 0xb9, 0xc6, 0xba, 0xcf, + 0x4e, 0x4a, 0xb2, 0x24, 0x6a, 0xab, 0x2e, 0xdb, + 0x5f, 0x80, 0x6a, 0x6b, 0xfe, 0x5e, 0xe2, 0x94, + 0x4e, 0x5c, 0xde, 0x5a, 0x19, 0xee, 0xe6, 0xc2, + 0xe0, 0x22, 0xf6, 0x20, 0x31, 0x5e, 0x33, 0x6a, + 0xc5, 0xfb, 0xa1, 0x0a, 0x6a, 0x15, 0xde, 0x1c, + 0x5f, 0xce, 0x3f, 0x33, 0xa7, 0x7e, 0x0f, 0x07, + 0x57, 0x7e, 0x40, 0x67, 0xd1, 0x95, 0x3f, 0x87, + 0xb2, 0x9a, 0xef, 0xb0, 0xa2, 0x9c, 0x13, 0xf6, + 0x45, 0xb2, 0x69, 0x3c, 0x31, 0x09, 0x2d, 0x0d, + 0x29, 0x87, 0xb1, 0x7a, 0xb5, 0x7a, 0x03, 0x87, + 0xc6, 0x42, 0x63, 0x72, 0xee, 0x01, 0x0f, 0xda, + 0xb8, 0x1a, 0x14, 0x2d, 0x5d, 0x83, 0x4f, 0x56, + 0x04, 0x83, 0xd2, 0x35, 0x37, 0xaa, 0xf8, 0xd3, + 0xd6, 0xca, 0x2f, 0xcd, 0xfd, 0xef, 0xb3, 0xa9, + 0x27, 0xbd, 0x93, 0xe3, 0x20, 0xda, 0xb4, 0x9e, + 0x65, 0x33, 0x39, 0x10, 0xc2, 0x19, 0x0e, 0x6c, + 0xaa, 0x5d, 0xc6, 0xe6, 0x96, 0x96, 0xa9, 0x78, + 0xd1, 0x86, 0x09, 0x24, 0x2b, 0x6a, 0xce, 0x79, + 0xa4, 0x94, 0xe1, 0xc0, 0x57, 0xac, 0x35, 0xb9, + 0xff, 0xb2, 0x0b, 0xdf, 0x98, 0xc6, 0x0d, 0xbf, + 0xb1, 0x4b, 0xe7, 0x30, 0x8c, 0x1c, 0x9e, 0x41, + 0x2c, 0xa8, 0x8c, 0xb3, 0x98, 0xa0, 0x98, 0x43, + 0x39, 0xb5, 0x0c, 0x6a, 0x6f, 0xa3, 0x1c, 0x32, + 0xb0, 0x20, 0xe7, 0x52, 0xf2, 0x79, 0x43, 0xa7, + 0xa8, 0xd5, 0xbc, 0x04, 0x89, 0xf3, 0x2d, 0x77, + 0xf4, 0x44, 0x54, 0x98, 0xb2, 0xbb, 0x53, 0xbc, + 0xc5, 0x70, 0x3f, 0x5b, 0xda, 0xcc, 0x14, 0xac, + 0xad, 0x94, 0xd1, 0x72, 0x3f, 0x0e, 0xaa, 0x52, + 0xc4, 0xab, 0xe8, 0xf2, 0x2a, 0x9e, 0x22, 0xda, + 0x5f, 0x02, 0xc8, 0x0d, 0x54, 0x89, 0xfc, 0x3c, + 0x2b, 0x44, 0x18, 0x38, 0x94, 0xbd, 0x67, 0x74, + 0x5c, 0x27, 0x13, 0x35, 0xa0, 0x0b, 0x70, 0x19, + 0xc4, 0xcc, 0xeb, 0xa9, 0xdf, 0xcf, 0x69, 0x9d, + 0xcf, 0x31, 0x86, 0xa1, 0xfc, 0x0f, 0x99, 0xbe, + 0xfb, 0xb1, 0x02, 0x0d, 0x62, 0x13, 0xc0, 0x2b, + 0xa5, 0x53, 0x0c, 0xa1, 0x8c, 0x52, 0x47, 0xe3, + 0x5d, 0x31, 0xdb, 0xa0, 0xf8, 0xd2, 0x13, 0xc4, + 0xa0, 0x75, 0x37, 0x46, 0x57, 0x82, 0x50, 0xcd, + 0x7f, 0x22, 0x93, 0x5d, 0x06, 0x26, 0x32, 0x22, + 0x49, 0xf6, 0xd5, 0x8f, 0xab, 0x64, 0x1c, 0x63, + 0x3b, 0xe5, 0xf9, 0xb4, 0x6e, 0x8a, 0xfe, 0x9d, + 0x14, 0x46, 0x34, 0xc7, 0x79, 0x03, 0x21, 0x44, + 0xf6, 0x9c, 0xad, 0x67, 0xd4, 0x79, 0x82, 0xf2, + 0x66, 0x66, 0x8b, 0xd7, 0x9c, 0x1a, 0x83, 0xa0, + 0xc4, 0x79, 0x9d, 0x37, 0x02, 0x1b, 0x37, 0xb3, + 0x22, 0xea, 0x59, 0x58, 0xe1, 0x28, 0xa5, 0x7a, + 0x69, 0x88, 0x00, 0x2f, 0xaf, 0x4f, 0x5a, 0x85, + 0x9b, 0x17, 0xdd, 0x0e, 0x56, 0x40, 0xb5, 0xde, + 0x26, 0xfd, 0x31, 0xeb, 0x2a, 0x9f, 0x7d, 0xaf, + 0x55, 0xfb, 0x10, 0x27, 0xd1, 0x84, 0x2c, 0xab, + 0xd9, 0xee, 0x1d, 0xff, 0x30, 0x73, 0xdf, 0x34, + 0x0d, 0xe1, 0x5c, 0x9f, 0xec, 0x46, 0x0f, 0x63, + 0xd1, 0x7a, 0x59, 0xd2, 0x9b, 0xdb, 0x98, 0xa5, + 0x5c, 0xbd, 0x09, 0xc5, 0xce, 0xa4, 0x78, 0xf1, + 0xf5, 0x69, 0x4a, 0x63, 0xbd, 0xae, 0x6b, 0xcb, + 0x90, 0xa9, 0x68, 0x90, 0x30, 0x04, 0x43, 0xdd, + 0xba, 0xed, 0xfb, 0x6e, 0xab, 0x9d, 0x35, 0xcc, + 0x45, 0xa4, 0x07, 0xe1, 0xfd, 0x05, 0x89, 0x93, + 0xc1, 0x09, 0xe7, 0xc0, 0x3f, 0x91, 0x95, 0xbb, + 0xba, 0x37, 0xa7, 0x33, 0xef, 0xae, 0x1a, 0x33, + 0xde, 0xa9, 0x41, 0x9e, 0x4a, 0x98, 0x17, 0x10, + 0x55, 0x83, 0xee, 0x9c, 0x8e, 0x51, 0x75, 0x87, + 0x7d, 0xcb, 0xbf, 0x4e, 0x1f, 0x0d, 0xf6, 0x43, + 0x20, 0x5d, 0x0d, 0xf5, 0x50, 0x9e, 0x6b, 0x47, + 0x7b, 0x8a, 0xa6, 0xa7, 0xdc, 0x78, 0xde, 0xc1, + 0x2d, 0x5e, 0x3e, 0x94, 0x41, 0xbe, 0x59, 0x6e, + 0x76, 0x16, 0x72, 0x31, 0xf2, 0x76, 0xb1, 0x6a, + 0xa3, 0x74, 0x01, 0x77, 0xc5, 0x6c, 0x32, 0x7c, + 0xb8, 0xd3, 0x09, 0x57, 0x22, 0xaa, 0x3e, 0x93, + 0x94, 0x7d, 0x70, 0xc9, 0x81, 0xfb, 0x64, 0x6e, + 0xaf, 0xcc, 0xe7, 0x97, 0x6b, 0x33, 0x8f, 0x3c, + 0x82, 0xd4, 0xf6, 0xa0, 0x9a, 0x15, 0x03, 0x94, + 0xdc, 0x35, 0xf5, 0x00, 0x66, 0xf8, 0xee, 0x85, + 0x9c, 0xc4, 0xb1, 0xe8, 0x6b, 0x1b, 0xb2, 0x16, + 0x0c, 0xd8, 0x86, 0xa1, 0x69, 0x34, 0x49, 0xb7, + 0x5a, 0xe0, 0xff, 0x8b, 0x51, 0xf7, 0xbb, 0x2e, + 0x35, 0x9e, 0xcf, 0x32, 0x01, 0x1e, 0xd0, 0x6f, + 0xff, 0x37, 0xfe, 0xcb, 0x29, 0xc2, 0xc4, 0x74, + 0xcd, 0xea, 0x41, 0x68, 0x06, 0x7b, 0x82, 0x1b, + 0x23, 0xf6, 0x4a, 0x67, 0xad, 0xe2, 0x6c, 0x69, + 0x48, 0x1b, 0x10, 0xf8, 0x14, 0x74, 0x8f, 0x87, + 0x80, 0x2c, 0xfa, 0xd7, 0xb5, 0x3c, 0xdb, 0xbf, + 0x2a, 0xdb, 0xe3, 0x74, 0x63, 0x36, 0xae, 0x46, + 0x05, 0xec, 0x14, 0xbf, 0x41, 0x97, 0xea, 0x19, + 0x49, 0x49, 0x12, 0x1e, 0xab, 0x92, 0x8e, 0x95, + 0x38, 0x02, 0x06, 0x82, 0x87, 0x52, 0xca, 0x37, + 0x4c, 0x88, 0x76, 0xe3, 0x0f, 0x19, 0x64, 0x52, + 0xab, 0x78, 0x11, 0xea, 0x12, 0xa4, 0x1f, 0x75, + 0x8c, 0x29, 0x0d, 0x78, 0x25, 0x92, 0x32, 0xf5, + 0xe6, 0xb2, 0x84, 0xfe, 0x4b, 0x9e, 0xbf, 0xbe, + 0x9a, 0x08, 0x97, 0x0e, 0xaa, 0x1e, 0x1a, 0x4c, + 0x79, 0xca, 0xe1, 0x47, 0x98, 0xf4, 0xdb, 0xc1, + 0xe0, 0x09, 0x6f, 0xcf, 0x14, 0xbc, 0x2d, 0x18, + 0xb5, 0x14, 0x09, 0xdd, 0x27, 0x21, 0xca, 0xa6, + 0xe8, 0x01, 0xc7, 0xd7, 0xc2, 0xad, 0x77, 0xa7, + 0x6c, 0xd4, 0x60, 0xfc, 0x32, 0x6d, 0xfe, 0xbd, + 0x91, 0x06, 0x0e, 0x3d, 0x1f, 0xc8, 0xbf, 0x88, + 0x69, 0x2d, 0x6f, 0x48, 0x6f, 0x1e, 0x8b, 0xf8, + 0xa6, 0x81, 0x2e, 0x04, 0x98, 0xb6, 0xbd, 0x0f, + 0x10, 0x0e, 0x96, 0xf2, 0xbc, 0xfd, 0x54, 0x4e, + 0xd3, 0x76, 0x18, 0x98, 0x68, 0xc8, 0x7c, 0x33, + 0x0b, 0x16, 0x35, 0xf8, 0x51, 0x89, 0xd8, 0xe5, + 0x91, 0x70, 0xac, 0x5a, 0x25, 0x6f, 0xe1, 0xf3, + 0x1f, 0xe1, 0xd8, 0xf1, 0xd2, 0xb2, 0x03, 0xb2, + 0xb6, 0x11, 0x58, 0x19, 0xf0, 0x2c, 0xd5, 0x21, + 0xca, 0x2f, 0xc3, 0x15, 0xb9, 0x8d, 0xfa, 0x52, + 0x42, 0x4c, 0x9a, 0x78, 0x38, 0xf4, 0x57, 0xee, + 0x75, 0xbe, 0x33, 0x89, 0x9b, 0x0a, 0xa3, 0xe7, + 0x97, 0xc4, 0x77, 0xdf, 0xa5, 0xe6, 0x05, 0xf0, + 0x7a, 0xb9, 0x84, 0x6c, 0xa1, 0x60, 0x51, 0x46, + 0x9d, 0xce, 0x5b, 0x30, 0x56, 0x42, 0xf2, 0x30, + 0xf1, 0xe4, 0x5f, 0x18, 0x13, 0xe3, 0xd0, 0xea, + 0xa1, 0xc8, 0x48, 0xb3, 0x22, 0x3b, 0x32, 0x72, + 0x92, 0x29, 0xa4, 0xc5, 0x8e, 0xcc, 0xdd, 0x0e, + 0x6d, 0x8b, 0x49, 0x3e, 0xe9, 0xb5, 0xbd, 0x86, + 0x9f, 0x8d, 0xa8, 0xf4, 0x24, 0x10, 0xf6, 0x57, + 0xd1, 0x62, 0x8f, 0xe8, 0x31, 0x8f, 0xec, 0x4b, + 0x86, 0xc4, 0xd0, 0x33, 0x1b, 0xac, 0x4f, 0xab, + 0x61, 0x27, 0x1a, 0xb5, 0xa9, 0x0f, 0x30, 0x6f, + 0x51, 0x42, 0x42, 0xd6, 0x8c, 0x7e, 0x10, 0x6b, + 0x0b, 0xa1, 0xf9, 0x64, 0x62, 0xc7, 0x9d, 0xbf, + 0xc6, 0xca, 0x5f, 0x6e, 0xbc, 0xc4, 0xdf, 0x7a, + 0x5c, 0x62, 0x9e, 0xd9, 0x93, 0x8a, 0x96, 0xaa, + 0x60, 0x96, 0x30, 0xbc, 0x96, 0xc6, 0x94, 0x15, + 0xde, 0x12, 0x93, 0x58, 0xb5, 0x5f, 0x75, 0x67, + 0xf7, 0x0d, 0x52, 0x3a, 0xd1, 0xb1, 0xae, 0xee, + 0x92, 0x1c, 0x75, 0x56, 0xa3, 0x38, 0x81, 0xe2, + 0x07, 0x32, 0x44, 0xd4, 0x17, 0xd2, 0x50, 0x9c, + 0x8e, 0xe2, 0x80, 0x7a, 0xd3, 0x52, 0x8b, 0x33, + 0xf8, 0xaf, 0x93, 0x93, 0xd5, 0x84, 0x85, 0xf5, + 0x4d, 0x44, 0x71, 0x35, 0x88, 0x9e, 0x6d, 0x03, + 0xfa, 0xea, 0x06, 0x06, 0x7c, 0x6c, 0x02, 0x88, + 0xee, 0xc1, 0xd1, 0xf4, 0xe8, 0x51, 0x39, 0xa1, + 0x39, 0x05, 0x5e, 0x8b, 0x37, 0x6f, 0x93, 0xf0, + 0xfb, 0x4a, 0x38, 0x35, 0x5b, 0x6f, 0x75, 0x24, + 0xbb, 0xa1, 0x42, 0xd5, 0x39, 0xbe, 0x18, 0x58, + 0x1b, 0x6f, 0xd1, 0xd3, 0x0a, 0x9b, 0xeb, 0xa1, + 0x6e, 0xa5, 0x69, 0xe8, 0x76, 0xd9, 0x75, 0xf1, + 0x6d, 0x2f, 0xc2, 0xb7, 0x30, 0x0b, 0x99, 0xe2, + 0x33, 0x87, 0x88, 0x5a, 0xc2, 0x64, 0x0b, 0x0e, + 0x06, 0xd6, 0x28, 0x68, 0x8c, 0xaa, 0xaa, 0xf6, + 0x9a, 0x30, 0xd4, 0x83, 0x90, 0x15, 0x0e, 0x83, + 0xe7, 0x8d, 0x26, 0x58, 0x6c, 0xff, 0xa3, 0x33, + 0xcd, 0x19, 0xe8, 0xe8, 0xa6, 0x93, 0x79, 0x45, + 0x68, 0x85, 0xcb, 0x0a, 0x3b, 0x88, 0x74, 0x40, + 0x40, 0x1d, 0xbc, 0x08, 0xfb, 0x6b, 0x17, 0xe7, + 0xf1, 0x9e, 0x2b, 0x98, 0xe1, 0x87, 0xd6, 0x21, + 0xb1, 0x9d, 0x47, 0xf4, 0xe3, 0x9f, 0xfb, 0xc7, + 0x97, 0x13, 0x31, 0x59, 0x59, 0x46, 0x69, 0x5c, + 0xbd, 0xb7, 0xb8, 0x97, 0x4b, 0x6c, 0x46, 0x34, + 0x49, 0xc6, 0x6e, 0xd7, 0x62, 0x66, 0x54, 0x9f, + 0x29, 0x66, 0x54, 0x75, 0x67, 0xf0, 0x68, 0x00, + 0x43, 0x5e, 0xac, 0xf8, 0x24, 0xbf, 0xf5, 0xfd, + 0xb8, 0xbc, 0x6c, 0x73, 0x7f, 0x34, 0xa4, 0x27, + 0x31, 0xdd, 0x73, 0x3b, 0x57, 0xa7, 0x76, 0x01, + 0x98, 0xdc, 0x6c, 0x97, 0x70, 0x60, 0xbb, 0x08, + 0x53, 0x29, 0x26, 0x53, 0x5f, 0xd6, 0x1d, 0x4e, + 0x25, 0xa0, 0x02, 0xd3, 0x10, 0x04, 0x96, 0xa2, + 0xcb, 0x86, 0xb4, 0xd0, 0x91, 0x30, 0xe9, 0xe4, + 0xe5, 0x2e, 0xe3, 0x22, 0x6c, 0x2c, 0xc8, 0xb2, + 0xa8, 0xa6, 0x0c, 0xf0, 0x18, 0xf8, 0xf1, 0x76, + 0x8a, 0x18, 0xd1, 0xc7, 0x98, 0x3c, 0x59, 0x62, + 0xa2, 0xcb, 0x05, 0xeb, 0xc7, 0x0d, 0xec, 0xf4, + 0x01, 0x36, 0x94, 0x32, 0x2a, 0xe6, 0x51, 0x77, + 0xd7, 0x8f, 0x00, 0xea, 0x7a, 0x8e, 0x58, 0x10, + 0xc1, 0x8a, 0x7d, 0x4c, 0x0d, 0x9c, 0x1e, 0x0d, + 0xd8, 0x9c, 0x3f, 0xf0, 0xd7, 0xaa, 0xd7, 0xf3, + 0x43, 0x88, 0x26, 0x30, 0x68, 0xd6, 0xf1, 0x07, + 0x0e, 0x70, 0x4c, 0xd6, 0xfb, 0x10, 0xe1, 0xd6, + 0xae, 0x41, 0xdf, 0x78, 0x7a, 0xc6, 0x54, 0x39, + 0x45, 0x78, 0x1d, 0x26, 0x95, 0x0b, 0x20, 0x66, + 0x16, 0x54, 0xad, 0x5f, 0x1c, 0x66, 0xf4, 0xc2, + 0x68, 0x54, 0xfd, 0x3e, 0x61, 0x61, 0x0a, 0xd7, + 0x23, 0xc4, 0x5b, 0xef, 0x36, 0x3d, 0x31, 0x95, + 0xf4, 0x42, 0x8a, 0xf7, 0x5a, 0xf8, 0x83, 0x9e, + 0xe8, 0x68, 0x57, 0x01, 0x4e, 0x18, 0x50, 0x5b, + 0x82, 0xcd, 0x52, 0x7d, 0xa4, 0xb6, 0x1c, 0xe5, + 0xd9, 0x8b, 0x9c, 0xd3, 0xfa, 0xfe, 0x5b, 0x6b, + 0x89, 0x1c, 0x1d, 0xd3, 0xd2, 0x8a, 0xf8, 0xcb, + 0x6d, 0xcb, 0x30, 0xc4, 0x66, 0x06, 0xfb, 0x83, + 0xec, 0xc4, 0xae, 0x59, 0xbb, 0x6c, 0xae, 0x0e, + 0x34, 0xe5, 0x32, 0xbf, 0x1a, 0xd6, 0x72, 0x7f, + 0x49, 0x43, 0x85, 0x1b, 0x66, 0x22, 0x9b, 0x69, + 0x8e, 0x46, 0x05, 0x6e, 0x95, 0xa7, 0x20, 0xc0, + 0xc8, 0x0a, 0x0c, 0x51, 0x3c, 0x70, 0xde, 0x92, + 0x82, 0xd3, 0x2a, 0x2a, 0x89, 0x8e, 0x9d, 0xc3, + 0x01, 0xaa, 0x80, 0x61, 0x21, 0x3e, 0x7d, 0x86, + 0x74, 0x38, 0x78, 0x37, 0x5a, 0x1e, 0xa3, 0x8d, + 0xa5, 0xdb, 0x05, 0xdc, 0x48, 0x8a, 0x2f, 0x80, + 0x46, 0x7f, 0xde, 0x4b, 0x99, 0x01, 0x55, 0x0f, + 0xe7, 0x6c, 0x49, 0x65, 0x66, 0xae, 0xc2, 0xf9, + 0x86, 0x71, 0x26, 0xf2, 0xbd, 0x00, 0x01, 0x38, + 0x80, 0x9a, 0x42, 0xcc, 0xb0, 0xae, 0xda, 0x5f, + 0xf6, 0xab, 0x27, 0xa6, 0x89, 0x6a, 0xce, 0x49, + 0xbe, 0x5d, 0x3d, 0xc3, 0xde, 0x4c, 0xc7, 0x85, + 0x39, 0x44, 0xe0, 0x33, 0x0a, 0x05, 0x96, 0x2f, + 0x6f, 0xfa, 0x58, 0xf3, 0x63, 0xbf, 0x28, 0xc3, + 0xef, 0xf6, 0xcb, 0xf1, 0xee, 0x36, 0x15, 0x3f, + 0xc2, 0x94, 0xc3, 0xe0, 0xa9, 0x5f, 0x2e, 0x1d, + 0x35, 0xc5, 0xf8, 0xb0, 0xf9, 0xde, 0xd7, 0xcd, + 0xbd, 0x11, 0x04, 0x37, 0x72, 0x40, 0x9c, 0x33, + 0xff, 0x17, 0xed, 0x3b, 0x0e, 0xbc, 0x02, 0x43, + 0xe1, 0x09, 0xa0, 0xb8, 0x13, 0x7c, 0xcc, 0xe5, + 0x0d, 0x1a, 0xdf, 0x0a, 0x88, 0xff, 0x6c, 0xfc, + 0x01, 0x86, 0x51, 0x7a, 0x7e, 0x4b, 0x7b, 0x98, + 0x45, 0xed, 0x32, 0xbf, 0x3c, 0x15, 0xef, 0xa7, + 0x08, 0xa2, 0x34, 0x9f, 0xf5, 0x0b, 0x05, 0xed, + 0x71, 0x2d, 0x1e, 0xa5, 0xe6, 0xe7, 0x74, 0x69, + 0x9e, 0x3e, 0x64, 0x56, 0xf5, 0x4f, 0x4f, 0xf7, + 0x77, 0x89, 0x1b, 0xd2, 0x73, 0xaa, 0x04, 0x73, + 0x6d, 0x23, 0xd6, 0x60, 0x17, 0x1f, 0x95, 0xdd, + 0x38, 0xa1, 0x9a, 0x1b, 0x4f, 0x53, 0x09, 0x8c, + 0x59, 0xa0, 0x14, 0xd4, 0x92, 0x52, 0x4f, 0x0e, + 0x43, 0x85, 0x2d, 0xfb, 0x98, 0x1a, 0x20, 0x46, + 0x10, 0x81, 0xbb, 0x76, 0x17, 0xa2, 0xb2, 0xc8, + 0xc7, 0xf5, 0xc2, 0xe5, 0x64, 0xbf, 0x53, 0xe5, + 0x66, 0xd7, 0x08, 0x45, 0xa9, 0xb3, 0x79, 0xde, + 0x5f, 0x2d, 0xbf, 0x96, 0xfd, 0x06, 0x51, 0xc9, + 0x92, 0x78, 0x9b, 0x85, 0xdc, 0x77, 0x9f, 0xb7, + 0x21, 0x52, 0xaf, 0x4b, 0x39, 0x10, 0x33, 0xef, + 0x8c, 0x80, 0xac, 0x3e, 0x7b, 0x8a, 0x0f, 0x42, + 0xed, 0x8f, 0xe1, 0xbc, 0x34, 0x32, 0x3b, 0xbd, + 0xed, 0x94, 0x38, 0xa6, 0x77, 0x1a, 0xbf, 0xf6, + 0x85, 0x22, 0xb7, 0x19, 0x9f, 0x27, 0xdf, 0x7a, + 0x17, 0xcf, 0xc3, 0x61, 0x0d, 0xd5, 0x13, 0x6c, + 0x3b, 0xa7, 0xb4, 0x26, 0x7b, 0x24, 0xf6, 0xd2, + 0x6f, 0xdc, 0x48, 0xb3, 0xfc, 0x21, 0x68, 0x9f, + 0xb3, 0xaf, 0x1e, 0x55, 0x7e, 0x7c, 0x2c, 0xa9, + 0xb7, 0x19, 0x65, 0xf0, 0xc5, 0x79, 0x4b, 0x2c, + 0x66, 0x83, 0xb7, 0xef, 0x00, 0x80, 0x8e, 0x1b, + 0xc7, 0x62, 0xaf, 0x4d, 0x01, 0x96, 0x83, 0xb2, + 0xda, 0x70, 0x0d, 0x18, 0xfa, 0x46, 0x2f, 0xaa, + 0xaa, 0x2f, 0x99, 0x09, 0xa4, 0x85, 0x8a, 0xf7, + 0x09, 0x20, 0xba, 0x08, 0x9c, 0xba, 0x87, 0xa1, + 0x8c, 0xb0, 0x73, 0xee, 0x38, 0xb8, 0xde, 0x17, + 0xe1, 0x8c, 0xcf, 0xa1, 0x2b, 0x98, 0xcf, 0x51, + 0x7c, 0x60, 0x80, 0x26, 0x4a, 0x16, 0x0f, 0x50, + 0x96, 0xab, 0x1e, 0x92, 0x12, 0xd3, 0x83, 0x4e, + 0x50, 0x93, 0x19, 0x21, 0xdb, 0x69, 0x06, 0xf4, + 0x69, 0xea, 0xc7, 0x1c, 0x86, 0xe5, 0x76, 0xb4, + 0x4e, 0xc3, 0x15, 0xf8, 0x8a, 0xa9, 0xea, 0x1c, + 0x41, 0x8f, 0xb1, 0xc4, 0x94, 0x8e, 0xed, 0x3a, + 0xc0, 0xdf, 0x72, 0x6a, 0x49, 0x84, 0x2a, 0xa6, + 0xe4, 0x14, 0x6d, 0xa1, 0x46, 0xa1, 0x0e, 0x61, + 0xda, 0x38, 0xd3, 0x09, 0x8e, 0x03, 0xdf, 0x3c, + 0xd9, 0x16, 0x34, 0x41, 0x8a, 0xb8, 0x71, 0x8f, + 0x30, 0x44, 0x8f, 0x8f, 0xdf, 0x8d, 0x58, 0x30, + 0xe1, 0xdc, 0x87, 0xf5, 0x74, 0xd3, 0xb9, 0xb0, + 0xc9, 0xdd, 0x51, 0x2c, 0x4c, 0x2b, 0x56, 0xb3, + 0xf8, 0xbe, 0x70, 0x21, 0xb4, 0x67, 0xc7, 0x06, + 0x9b, 0xbd, 0x89, 0xb6, 0xfb, 0x7b, 0x5e, 0x37, + }, + .msg_len =3D 64, + .msg =3D (const u8[64]){ + 0xa2, 0xec, 0x18, 0x06, 0x52, 0x37, 0x8a, 0x91, + 0x70, 0xea, 0x93, 0x79, 0xad, 0x55, 0x5f, 0x11, + 0xe6, 0x4a, 0xc7, 0x80, 0x05, 0x18, 0x36, 0xfd, + 0x12, 0xa6, 0x8b, 0x61, 0x5c, 0xf8, 0xea, 0xb0, + 0x34, 0x02, 0xc2, 0x5a, 0x1b, 0x22, 0x61, 0x78, + 0xb2, 0x97, 0xb8, 0xd5, 0x5a, 0x9b, 0x6d, 0x09, + 0xb6, 0xaf, 0x84, 0x0b, 0xb2, 0x51, 0x6e, 0x9f, + 0x9e, 0x30, 0xec, 0x80, 0x79, 0xda, 0x14, 0x22, + }, + .sig_len =3D DILITHIUM87_CRYPTO_BYTES, + .sig =3D (const u8[DILITHIUM87_CRYPTO_BYTES]){ + 0x48, 0x35, 0xc3, 0x69, 0x56, 0x2d, 0xef, 0xbf, + 0xd9, 0x1b, 0x71, 0xce, 0x99, 0x94, 0x1c, 0x02, + 0xc6, 0x8c, 0x36, 0xc6, 0x76, 0x91, 0x59, 0xfa, + 0xbf, 0x68, 0xf3, 0x68, 0xe4, 0x6c, 0x75, 0x1c, + 0x5d, 0x63, 0xbb, 0x33, 0x55, 0x39, 0x83, 0x85, + 0xeb, 0x76, 0x5d, 0x84, 0xf5, 0x46, 0x42, 0x89, + 0x69, 0xf7, 0x51, 0x5c, 0xf9, 0x83, 0x77, 0xde, + 0xbb, 0xfe, 0x08, 0xb2, 0x63, 0x2e, 0x91, 0x6b, + 0x76, 0x88, 0x3a, 0xea, 0xcd, 0xd5, 0x70, 0x84, + 0x06, 0x5d, 0xab, 0x55, 0x51, 0x75, 0x8e, 0xfa, + 0x09, 0xea, 0x73, 0x38, 0xe4, 0xf8, 0xbc, 0x98, + 0x26, 0x2f, 0x1f, 0x61, 0x93, 0x86, 0xd8, 0x1d, + 0xcf, 0x2d, 0xa5, 0x60, 0x16, 0x91, 0x9a, 0xc2, + 0x04, 0xc3, 0x26, 0x56, 0xf2, 0x1d, 0x68, 0x87, + 0xaa, 0xdd, 0xf8, 0xff, 0x80, 0xaa, 0x63, 0x1e, + 0xa8, 0x6e, 0xed, 0xff, 0xbf, 0x2c, 0x69, 0x35, + 0x41, 0x77, 0xa3, 0x5f, 0x1e, 0xb1, 0xb9, 0x2b, + 0x60, 0x7e, 0x9d, 0x4e, 0xee, 0x3d, 0x52, 0x88, + 0x23, 0x58, 0xf8, 0x35, 0x19, 0x5d, 0x74, 0x7c, + 0x84, 0xac, 0x16, 0xa6, 0x77, 0xfd, 0x2c, 0xee, + 0x1a, 0xdc, 0x98, 0xe4, 0x05, 0xbb, 0xd3, 0x2c, + 0x57, 0xd9, 0x25, 0x6d, 0x0f, 0x7f, 0x7c, 0xd8, + 0xa7, 0x16, 0x37, 0xc9, 0x34, 0x12, 0xb0, 0xb3, + 0x33, 0x82, 0x26, 0xb7, 0x60, 0xec, 0xbf, 0xde, + 0x39, 0xe7, 0x2f, 0x8c, 0x9f, 0x50, 0xce, 0x65, + 0x86, 0xd1, 0xe8, 0x5b, 0x35, 0x87, 0x1a, 0xc0, + 0x30, 0x34, 0x3c, 0xef, 0x06, 0x07, 0x97, 0x8c, + 0x4d, 0x9b, 0x75, 0x15, 0xce, 0x70, 0x87, 0xd3, + 0xd0, 0x7f, 0xfd, 0x08, 0xfe, 0x51, 0x23, 0xed, + 0x07, 0x6c, 0xc4, 0x44, 0x47, 0x45, 0xf7, 0x15, + 0x0c, 0x52, 0xe9, 0xfe, 0x16, 0xbc, 0x0f, 0x7d, + 0x2a, 0x96, 0x0f, 0xa2, 0xf8, 0x4d, 0x7f, 0x27, + 0x0f, 0x2a, 0xa4, 0xab, 0x73, 0x96, 0x68, 0xe1, + 0xe8, 0xdb, 0x6a, 0xa1, 0x0e, 0x64, 0x08, 0x1d, + 0x71, 0xb9, 0x79, 0x04, 0x72, 0xe1, 0x7c, 0x29, + 0x3d, 0xe4, 0x41, 0xd2, 0x34, 0x15, 0x08, 0x68, + 0xdc, 0x7b, 0x79, 0x19, 0xab, 0xb9, 0xcb, 0x0a, + 0x6a, 0x56, 0x3c, 0x56, 0xbd, 0xe3, 0x9b, 0xea, + 0xc4, 0x09, 0xae, 0xf8, 0x8b, 0xe0, 0x2d, 0xb0, + 0xff, 0x3c, 0xd3, 0xc5, 0xe2, 0x5b, 0xf6, 0xfa, + 0x5e, 0x58, 0xa6, 0x72, 0xcf, 0xa3, 0xdb, 0x66, + 0x2e, 0x21, 0x71, 0x76, 0xfd, 0x68, 0x07, 0xea, + 0x21, 0xaf, 0xa0, 0xc5, 0x17, 0x32, 0x6e, 0x10, + 0x60, 0xeb, 0x86, 0xe9, 0x02, 0x43, 0x32, 0xcf, + 0x81, 0x64, 0x0c, 0xff, 0xcc, 0x92, 0x19, 0xbd, + 0x73, 0x99, 0x0e, 0xd3, 0x4b, 0xdd, 0xc6, 0x7b, + 0xc5, 0xff, 0xef, 0x04, 0xc0, 0x79, 0x7e, 0x88, + 0x17, 0xcf, 0x09, 0x37, 0x5c, 0x87, 0x18, 0xd4, + 0xd0, 0x21, 0x68, 0xc0, 0xea, 0x47, 0xec, 0xcf, + 0xec, 0xab, 0x98, 0x61, 0x88, 0xec, 0x02, 0x4f, + 0x22, 0x8c, 0x77, 0xbb, 0x6e, 0x5b, 0xfc, 0xfc, + 0xd0, 0x0d, 0xca, 0x49, 0xda, 0x37, 0x0a, 0x0a, + 0xdf, 0x6f, 0xab, 0x75, 0xba, 0xbe, 0x7c, 0x70, + 0x09, 0x83, 0x56, 0xcd, 0x12, 0x56, 0x25, 0x31, + 0xbd, 0x41, 0x50, 0x93, 0x1f, 0x18, 0x74, 0x48, + 0xbd, 0x7c, 0x19, 0x03, 0x0a, 0x06, 0x97, 0x28, + 0x51, 0x4f, 0x5b, 0x8e, 0xa6, 0xf6, 0x7f, 0x50, + 0x15, 0x69, 0xee, 0x56, 0xa0, 0x97, 0x9d, 0x76, + 0x40, 0x5e, 0x7d, 0x10, 0x23, 0xd5, 0xba, 0x0b, + 0x2a, 0x9e, 0x8f, 0x57, 0xf8, 0x58, 0x12, 0x0f, + 0x0b, 0x4c, 0xee, 0x39, 0x77, 0xec, 0x86, 0xb6, + 0x1e, 0xb9, 0x5d, 0x11, 0x9d, 0xac, 0x4d, 0x15, + 0xa9, 0x6f, 0x45, 0xbf, 0xb0, 0x56, 0xd2, 0xc0, + 0xc8, 0x63, 0xf2, 0x53, 0x90, 0xf3, 0x68, 0x88, + 0xc8, 0xc9, 0xdd, 0x9b, 0xdd, 0x6c, 0x4e, 0x6e, + 0xd0, 0x63, 0xd7, 0x6f, 0x8a, 0x39, 0xd9, 0x96, + 0xf9, 0x0d, 0x4e, 0x0a, 0xf3, 0xc6, 0x80, 0x34, + 0x10, 0xab, 0xfd, 0xc2, 0x52, 0xec, 0xc7, 0x00, + 0x34, 0xb4, 0xbc, 0xc9, 0x11, 0xdd, 0x6d, 0xa0, + 0xba, 0x94, 0xe8, 0xa2, 0xf9, 0x2d, 0x58, 0x70, + 0xd5, 0x92, 0xa9, 0xae, 0x7f, 0x8b, 0x32, 0x44, + 0x9b, 0xf6, 0x17, 0x23, 0x03, 0x7c, 0x06, 0x55, + 0x91, 0xdc, 0x85, 0x1b, 0x13, 0x44, 0x9c, 0x36, + 0xbb, 0x19, 0x0b, 0xc8, 0x05, 0x96, 0xbe, 0xf3, + 0x1e, 0xd1, 0x9d, 0xbb, 0xf8, 0x4f, 0x5a, 0xd8, + 0x95, 0x90, 0x49, 0xab, 0x23, 0x95, 0x3b, 0x63, + 0x4c, 0xcb, 0x6b, 0x61, 0xf7, 0x2b, 0x88, 0xce, + 0x42, 0x6d, 0x7e, 0x57, 0x4e, 0xfd, 0x43, 0xc5, + 0xe5, 0xe0, 0xd3, 0xe4, 0x87, 0x63, 0xdd, 0xe8, + 0x36, 0x58, 0x41, 0x4e, 0x46, 0x44, 0x3b, 0x9d, + 0x85, 0xba, 0x29, 0xe0, 0xad, 0x21, 0x17, 0x1b, + 0xd4, 0x7a, 0xa6, 0xb6, 0xf7, 0x0e, 0x9a, 0xc3, + 0x29, 0xd1, 0x9e, 0xba, 0x16, 0x4c, 0xee, 0xd5, + 0x8d, 0x73, 0xf7, 0xe3, 0xe9, 0xbb, 0x2a, 0xad, + 0x3e, 0xe2, 0x32, 0xfa, 0x9f, 0x5a, 0x2f, 0x59, + 0x06, 0x49, 0x8b, 0x73, 0xa0, 0x2c, 0xd2, 0xa4, + 0x79, 0xa1, 0x9b, 0xf1, 0x4a, 0x19, 0x8e, 0x68, + 0x18, 0xf1, 0xd7, 0x5d, 0x43, 0xa6, 0xcd, 0x69, + 0x9e, 0xda, 0x2b, 0x4f, 0x61, 0x5b, 0x48, 0xb5, + 0x09, 0x3c, 0x91, 0x44, 0x6d, 0x99, 0xc4, 0xaf, + 0xae, 0x83, 0x74, 0x66, 0xe8, 0x06, 0x6e, 0x54, + 0x6b, 0x5b, 0x4e, 0x7f, 0xaf, 0xbb, 0x18, 0x43, + 0x62, 0xc2, 0xb6, 0xd6, 0x23, 0x77, 0x02, 0xdc, + 0x3a, 0x1c, 0x24, 0x74, 0x3d, 0x6f, 0x01, 0x1a, + 0xc0, 0x52, 0xa0, 0xe8, 0xa8, 0xe8, 0xc1, 0xd4, + 0x64, 0xc1, 0x9f, 0x92, 0xcd, 0x14, 0x9c, 0x86, + 0x01, 0x4c, 0xf0, 0x77, 0x64, 0x97, 0xdf, 0xd5, + 0xd7, 0x37, 0x72, 0x3a, 0x25, 0x9a, 0x36, 0xb0, + 0xc1, 0x6e, 0x1a, 0xc2, 0x3d, 0x3f, 0x49, 0xf3, + 0x89, 0x98, 0xb9, 0x35, 0x0f, 0x8f, 0x53, 0x49, + 0x4e, 0x65, 0xa9, 0xe1, 0x30, 0x9f, 0xa6, 0x2c, + 0xbe, 0xd2, 0x60, 0x4a, 0x57, 0x51, 0xb9, 0x16, + 0x7c, 0x72, 0x82, 0xf4, 0x93, 0x4e, 0x34, 0xeb, + 0x60, 0xb2, 0x2f, 0x2a, 0xe5, 0x43, 0x14, 0xa7, + 0x9c, 0x04, 0xf3, 0x76, 0xfe, 0x7d, 0xf7, 0x9e, + 0xb3, 0xe7, 0xbb, 0x16, 0x0c, 0xb0, 0xb3, 0x4f, + 0xd0, 0x18, 0x2e, 0x57, 0x2c, 0x93, 0xaf, 0xed, + 0xf3, 0x4a, 0x2b, 0x91, 0xfe, 0x29, 0x0e, 0x83, + 0x9d, 0x6a, 0x20, 0xe4, 0x3e, 0x42, 0x64, 0x54, + 0x0b, 0xce, 0x78, 0xaa, 0xf6, 0x86, 0x21, 0xf8, + 0xf4, 0x81, 0x75, 0xe2, 0xb1, 0xb9, 0x6d, 0x00, + 0xb4, 0x5f, 0x7a, 0x1c, 0xd3, 0x1b, 0x7b, 0x76, + 0xd1, 0x62, 0x6f, 0xb0, 0xb7, 0x41, 0xfc, 0xea, + 0xa2, 0xd0, 0xc2, 0x37, 0x14, 0xaf, 0x89, 0x61, + 0x78, 0x23, 0x2b, 0x35, 0x65, 0xf9, 0xab, 0xfe, + 0xeb, 0xe2, 0x34, 0x02, 0x55, 0x65, 0xe1, 0xa9, + 0x3b, 0xe5, 0x5e, 0x45, 0xce, 0x17, 0x91, 0xd6, + 0x68, 0xb2, 0x9d, 0xa1, 0x2f, 0x4a, 0x4b, 0xdb, + 0x23, 0xfb, 0xbc, 0x73, 0x04, 0x0d, 0x42, 0x24, + 0x37, 0x22, 0x22, 0x76, 0x74, 0xc7, 0xc9, 0xfc, + 0xb0, 0x4b, 0x62, 0x85, 0xd5, 0x12, 0xa4, 0x65, + 0xb7, 0xb0, 0x88, 0xe1, 0x0f, 0xec, 0xaa, 0x81, + 0xcd, 0x76, 0x10, 0x0f, 0x53, 0x62, 0x23, 0x0a, + 0xf6, 0xb2, 0x1a, 0xe6, 0xf4, 0xb9, 0xef, 0xb1, + 0x3d, 0x16, 0x8a, 0xef, 0x6d, 0x7b, 0xfb, 0x42, + 0x27, 0xbf, 0x16, 0x7d, 0xab, 0xb0, 0x4e, 0x57, + 0x32, 0x31, 0x96, 0x65, 0xac, 0xf3, 0x43, 0x3e, + 0xa1, 0x8a, 0xbb, 0xa9, 0xcc, 0x2c, 0x7e, 0xbd, + 0xda, 0x0a, 0x65, 0x91, 0x83, 0x17, 0x02, 0x3f, + 0x4f, 0xe6, 0xa2, 0xf9, 0x69, 0x3b, 0xeb, 0xb7, + 0xea, 0x05, 0x9e, 0x8f, 0x38, 0xd1, 0x2b, 0xa1, + 0x0a, 0x6c, 0x0c, 0xb2, 0x17, 0xe5, 0x71, 0x77, + 0x93, 0xdc, 0x94, 0x70, 0x1d, 0x65, 0x41, 0x9d, + 0x49, 0xde, 0xb7, 0xf9, 0x23, 0x2a, 0xd4, 0x0a, + 0xa9, 0x25, 0x4f, 0x87, 0xec, 0x31, 0x7b, 0x7e, + 0x1c, 0x3c, 0xf6, 0x62, 0x2e, 0x76, 0x5a, 0x83, + 0x2b, 0x41, 0x9b, 0xb0, 0x44, 0xbd, 0x11, 0xf2, + 0x67, 0x53, 0xcb, 0x52, 0x38, 0xcd, 0xed, 0x23, + 0xd6, 0xd1, 0x95, 0xb0, 0xa5, 0x83, 0x50, 0x41, + 0x0c, 0x1b, 0x87, 0xa1, 0xed, 0x99, 0x10, 0x8c, + 0x3f, 0x44, 0x68, 0xc2, 0x76, 0x99, 0x07, 0x3d, + 0x5c, 0x67, 0x57, 0x5f, 0x66, 0xfc, 0x74, 0x2d, + 0xae, 0xec, 0x90, 0xa3, 0x09, 0x54, 0xc8, 0xbd, + 0xbe, 0xd1, 0x57, 0x99, 0xc1, 0xdf, 0x8c, 0xa1, + 0xf2, 0x29, 0x5d, 0xc0, 0xbe, 0x2c, 0x08, 0x35, + 0x46, 0x3d, 0x37, 0x8c, 0xde, 0x9f, 0xff, 0x4c, + 0x0d, 0xc4, 0x6b, 0xf9, 0x57, 0x17, 0xf0, 0x9d, + 0xa8, 0x32, 0xa8, 0xfa, 0xe0, 0x98, 0x8f, 0x7f, + 0x91, 0x77, 0xc7, 0x9c, 0x2e, 0x8d, 0x4d, 0x27, + 0x66, 0xbf, 0x6b, 0x0a, 0x74, 0x74, 0x70, 0xdb, + 0x03, 0x6e, 0x0f, 0x36, 0xd7, 0xa5, 0x7d, 0x93, + 0x32, 0xa7, 0xde, 0xa9, 0xe1, 0x97, 0xd8, 0x63, + 0x11, 0x34, 0x20, 0x1b, 0x57, 0xbc, 0x90, 0xd5, + 0x40, 0x83, 0xdc, 0xae, 0xb0, 0x47, 0x81, 0x7c, + 0x4c, 0x9b, 0x4d, 0xa8, 0x34, 0xba, 0x14, 0xe1, + 0x1e, 0xee, 0x3b, 0xfd, 0xb4, 0x20, 0xdb, 0x6a, + 0xd9, 0x15, 0x41, 0xf6, 0x8c, 0xa6, 0x87, 0x63, + 0xc6, 0x95, 0xae, 0x65, 0x40, 0x33, 0x26, 0x8a, + 0x78, 0x86, 0x97, 0x25, 0xac, 0xb4, 0xe8, 0xf8, + 0x96, 0xd3, 0x3b, 0xd4, 0x92, 0xaf, 0xa9, 0x60, + 0x21, 0x3c, 0xb5, 0x92, 0x9d, 0xa8, 0x87, 0x82, + 0xcc, 0x25, 0xe2, 0x1b, 0xbb, 0x99, 0xfe, 0x68, + 0x6f, 0x0b, 0x44, 0x47, 0x3c, 0x90, 0x89, 0x12, + 0xb8, 0xd7, 0xcf, 0x87, 0x82, 0x6c, 0xb0, 0x00, + 0x79, 0xf0, 0xe1, 0xcf, 0xfe, 0x85, 0xec, 0x58, + 0x8e, 0x47, 0xd6, 0x65, 0xcd, 0xe4, 0xc3, 0x4f, + 0x80, 0xeb, 0xf6, 0xd1, 0x01, 0x9f, 0xe1, 0x08, + 0xae, 0x44, 0x9e, 0x29, 0xa3, 0x6d, 0xad, 0xd7, + 0x7e, 0x32, 0x83, 0x29, 0x9a, 0x65, 0xbd, 0xfe, + 0x9a, 0x3f, 0x8f, 0xa5, 0x72, 0x63, 0xd2, 0xf7, + 0xe0, 0x99, 0x61, 0x0f, 0xbb, 0xb7, 0x76, 0xe6, + 0xf7, 0xa7, 0x49, 0x51, 0xc4, 0x0c, 0xea, 0xfb, + 0xd3, 0xc7, 0xbd, 0x47, 0x9b, 0xf9, 0x5d, 0x6e, + 0xe0, 0x44, 0xcb, 0xbc, 0x2c, 0x44, 0xd2, 0x1e, + 0xae, 0xb6, 0x89, 0x2b, 0xfa, 0x51, 0x75, 0xdf, + 0x81, 0x70, 0x5f, 0x6b, 0x4e, 0x15, 0xb4, 0x6c, + 0xfd, 0xfb, 0x1c, 0x58, 0x22, 0xbd, 0xee, 0xab, + 0xc9, 0x59, 0x81, 0xcf, 0x82, 0x3c, 0xe3, 0x6f, + 0x6c, 0xb9, 0xcc, 0xcc, 0x3d, 0x77, 0x48, 0x4b, + 0x8a, 0xee, 0x0c, 0x8d, 0x8a, 0xcb, 0x5a, 0x31, + 0x0c, 0x7e, 0xe2, 0x08, 0xeb, 0x02, 0x13, 0xe8, + 0xa9, 0x3c, 0xd7, 0xd5, 0x89, 0x5a, 0x36, 0xd4, + 0x49, 0x4c, 0xc3, 0x48, 0x21, 0x4c, 0x7d, 0x00, + 0x78, 0xc3, 0x6c, 0xc3, 0x89, 0xdc, 0x20, 0xf1, + 0xcf, 0xb1, 0x91, 0x8a, 0x4f, 0x4d, 0x4a, 0x22, + 0xb7, 0xec, 0xff, 0x8e, 0xd2, 0xd1, 0x5f, 0x3e, + 0x78, 0x6b, 0x32, 0xd6, 0x76, 0x12, 0x4f, 0x33, + 0xe7, 0x02, 0xf6, 0xbe, 0xc8, 0xd8, 0x27, 0x0b, + 0xc9, 0xef, 0x1a, 0x30, 0x44, 0x4a, 0xb1, 0x55, + 0x5f, 0xbc, 0xc6, 0x5b, 0x57, 0x9f, 0xa9, 0x5a, + 0x3c, 0xec, 0xb5, 0x3a, 0x20, 0xdc, 0xae, 0xeb, + 0x1c, 0x66, 0xc9, 0x84, 0x05, 0xb3, 0x18, 0xcc, + 0x07, 0x93, 0xed, 0xd3, 0xf3, 0x6c, 0x2b, 0xe9, + 0x38, 0x1a, 0x0f, 0xc8, 0x19, 0x63, 0xa4, 0x9b, + 0x95, 0x07, 0x8c, 0x26, 0xa2, 0x68, 0x78, 0x1b, + 0xbf, 0x8f, 0x90, 0xfd, 0xdd, 0x96, 0xf5, 0xe2, + 0xc7, 0x25, 0xc8, 0xbc, 0x80, 0x3e, 0x49, 0x05, + 0xf5, 0x62, 0xc4, 0x57, 0xe5, 0xa0, 0x42, 0xee, + 0xd6, 0xfe, 0x3d, 0xf4, 0x9e, 0x61, 0xf8, 0x6e, + 0x34, 0x7b, 0xea, 0x75, 0x9c, 0x29, 0xf0, 0xff, + 0xd0, 0x45, 0xf2, 0x9c, 0x0a, 0x0f, 0x05, 0xc1, + 0x71, 0xed, 0x42, 0xb4, 0x46, 0x2b, 0x22, 0xce, + 0x06, 0xad, 0x67, 0x64, 0x7f, 0x2c, 0x7d, 0x07, + 0x54, 0x12, 0x01, 0xee, 0x35, 0xd8, 0xbd, 0x66, + 0x1c, 0xc8, 0x2f, 0xe8, 0x9a, 0xda, 0x40, 0xb7, + 0x31, 0xdf, 0x59, 0x35, 0x3e, 0x67, 0xf2, 0xf2, + 0x10, 0x31, 0x11, 0x60, 0x2b, 0x2d, 0x85, 0x88, + 0x71, 0xfd, 0x34, 0x03, 0x83, 0x98, 0xf7, 0x11, + 0x2b, 0xc0, 0x25, 0x0b, 0x39, 0xe4, 0xd0, 0xa9, + 0x00, 0xa9, 0xa8, 0x88, 0x38, 0x87, 0x64, 0xc0, + 0xb3, 0xc3, 0x5f, 0x9f, 0xd3, 0x48, 0x4c, 0xc3, + 0x4c, 0x5f, 0x42, 0x6f, 0x2d, 0xfd, 0xb1, 0x52, + 0x35, 0xf8, 0xf1, 0x83, 0x94, 0x89, 0xf0, 0x9a, + 0xc0, 0x70, 0x66, 0xa6, 0x06, 0x6b, 0x7b, 0x4d, + 0xe1, 0xb5, 0x37, 0xc6, 0xa8, 0xe3, 0x67, 0xdb, + 0x23, 0x40, 0x98, 0xd4, 0xf0, 0x5d, 0x6f, 0xe9, + 0x21, 0x28, 0x13, 0xe5, 0xbb, 0x06, 0x9e, 0xc6, + 0x11, 0xa4, 0xa3, 0x2c, 0x0f, 0x31, 0x15, 0x75, + 0xe2, 0x95, 0x04, 0x0c, 0xc5, 0x94, 0x7e, 0xea, + 0x77, 0x05, 0x47, 0xe9, 0x9b, 0x71, 0x80, 0xd6, + 0x01, 0xa4, 0x78, 0x9f, 0xdc, 0x62, 0xc3, 0x0f, + 0x8b, 0x6f, 0x4c, 0x7e, 0xc1, 0x97, 0x87, 0x01, + 0x9c, 0xc1, 0x46, 0x45, 0x98, 0xa6, 0x65, 0x93, + 0xc5, 0x3c, 0xa1, 0x55, 0x3a, 0x7d, 0xf7, 0xa6, + 0x31, 0x7c, 0x5d, 0x2c, 0x4c, 0xe7, 0x74, 0xb2, + 0x02, 0x1f, 0xb4, 0x2e, 0x24, 0x5f, 0x8c, 0xa0, + 0x7c, 0xd1, 0xc4, 0x29, 0x14, 0x49, 0xfa, 0x4b, + 0x09, 0x97, 0x8e, 0x30, 0xea, 0x3f, 0xd9, 0x16, + 0x1c, 0x38, 0x72, 0x3c, 0xe9, 0x2a, 0x84, 0x20, + 0xb4, 0xa7, 0x34, 0x52, 0x5b, 0xa6, 0x68, 0x49, + 0xa6, 0xd6, 0xe0, 0x72, 0xa9, 0x28, 0x83, 0xf7, + 0x4f, 0x96, 0xbc, 0x7f, 0x97, 0x07, 0xe2, 0x9a, + 0xdf, 0xe0, 0x89, 0xdd, 0x0c, 0x37, 0xb8, 0x90, + 0xde, 0xc8, 0x53, 0x51, 0xb1, 0x36, 0xcf, 0xd3, + 0x42, 0xf6, 0xed, 0x7c, 0x3f, 0xd2, 0x05, 0x67, + 0xe0, 0x23, 0x6c, 0x4e, 0xae, 0x3c, 0xa4, 0x8b, + 0x67, 0x0e, 0xda, 0x62, 0xd4, 0xf0, 0x3f, 0x33, + 0xdb, 0x23, 0x00, 0x0e, 0xc8, 0x2e, 0xd0, 0xb0, + 0x7a, 0x58, 0x66, 0xa1, 0x62, 0x02, 0x84, 0xf2, + 0xad, 0xf8, 0xf6, 0xf0, 0x0a, 0xd8, 0xc4, 0xa9, + 0x58, 0x50, 0x45, 0xf6, 0x56, 0x58, 0x26, 0x95, + 0xb2, 0xe1, 0x5b, 0x5d, 0x8a, 0x2b, 0x94, 0x6d, + 0xc1, 0xf5, 0xbe, 0xdb, 0xef, 0x67, 0x1d, 0x1f, + 0xff, 0xb3, 0x28, 0x14, 0x9d, 0xe2, 0xcf, 0xc2, + 0xf2, 0x84, 0xbc, 0xf1, 0xd1, 0x49, 0xc4, 0x26, + 0x57, 0x88, 0xf9, 0x53, 0xb8, 0x62, 0xf4, 0x07, + 0x7b, 0xf4, 0xf8, 0x77, 0x4b, 0x4d, 0x54, 0x56, + 0xbe, 0xff, 0x7f, 0x18, 0x5f, 0xc2, 0x7e, 0x3a, + 0x32, 0x92, 0x69, 0x3b, 0xbf, 0x8e, 0xde, 0xa0, + 0x40, 0xd3, 0x13, 0xa4, 0xdb, 0x3b, 0x92, 0x7a, + 0x9d, 0x72, 0x05, 0xdd, 0x8e, 0x1a, 0x6a, 0x53, + 0xa0, 0x56, 0x74, 0x63, 0x5a, 0x32, 0xd4, 0x6c, + 0xad, 0xad, 0xd1, 0x16, 0x3a, 0xb7, 0x34, 0x34, + 0x19, 0xf1, 0x16, 0x53, 0xf9, 0x3a, 0x28, 0xde, + 0xb3, 0x69, 0x53, 0x9e, 0xad, 0x25, 0xbc, 0xcf, + 0xae, 0xda, 0xae, 0x77, 0xa8, 0xc8, 0x80, 0x70, + 0x3c, 0x8e, 0xf8, 0x97, 0x16, 0x95, 0x2e, 0xd2, + 0xf9, 0xe3, 0x73, 0xf8, 0x70, 0xd4, 0x70, 0x90, + 0xdf, 0xd3, 0x60, 0x3f, 0x92, 0xd7, 0x7f, 0xb9, + 0xd7, 0xce, 0x6c, 0x6a, 0x08, 0xb7, 0x78, 0x16, + 0x9b, 0x5e, 0x7b, 0x73, 0xeb, 0x76, 0x4f, 0x13, + 0xbd, 0x1b, 0xf9, 0x7c, 0xfa, 0x3d, 0x36, 0x0f, + 0x04, 0x04, 0xe5, 0x07, 0x45, 0xfc, 0xda, 0x4d, + 0xc6, 0x4c, 0x64, 0xc1, 0xc5, 0x1a, 0x52, 0xb8, + 0x38, 0x34, 0x46, 0xda, 0x4f, 0xeb, 0x46, 0x9f, + 0x33, 0x35, 0x02, 0xbb, 0xc5, 0x3c, 0xb0, 0xa7, + 0x25, 0x7f, 0xf4, 0xdd, 0x75, 0x65, 0x65, 0x4c, + 0x23, 0xce, 0x68, 0x88, 0xe7, 0xde, 0xdd, 0x14, + 0x7b, 0x9f, 0xb0, 0x42, 0xdf, 0x81, 0x8c, 0xa8, + 0xa8, 0xd5, 0xfd, 0x01, 0xdf, 0xd1, 0x85, 0xec, + 0xdd, 0x57, 0xfe, 0xcc, 0x60, 0x5e, 0x10, 0x42, + 0x82, 0xa1, 0x12, 0x45, 0x56, 0x53, 0x35, 0x49, + 0x4e, 0xa3, 0xbe, 0xd3, 0xae, 0x86, 0x79, 0x3d, + 0xa0, 0x2f, 0xbc, 0xb4, 0x2d, 0x06, 0xb9, 0x92, + 0x96, 0x0e, 0x1c, 0xba, 0xea, 0x1a, 0x72, 0xa1, + 0xe1, 0xc7, 0x90, 0xcb, 0x6f, 0xbc, 0x05, 0x32, + 0x91, 0x5f, 0xa2, 0x67, 0xd6, 0x9f, 0x3a, 0xce, + 0x70, 0x60, 0x6a, 0xfd, 0xcf, 0xd1, 0x46, 0xd6, + 0x7d, 0x25, 0x7f, 0xee, 0x88, 0x6d, 0xe6, 0x87, + 0x51, 0xf0, 0x5a, 0xf8, 0xfe, 0x0d, 0xb8, 0x5a, + 0xd7, 0xb1, 0x33, 0x34, 0xa3, 0x63, 0xa2, 0x48, + 0xa2, 0x77, 0x94, 0x4f, 0x61, 0x53, 0x05, 0x75, + 0x30, 0xfe, 0x03, 0x67, 0xf8, 0xef, 0xb7, 0x4a, + 0x36, 0x0d, 0xed, 0x6c, 0xfa, 0x6a, 0x0f, 0x93, + 0xb1, 0xd5, 0xbc, 0xe9, 0x0c, 0x45, 0x58, 0x0d, + 0x02, 0xc0, 0x4b, 0x1f, 0x86, 0x59, 0x7b, 0x50, + 0x4c, 0x20, 0xc8, 0xf6, 0x7b, 0xf0, 0x36, 0xf1, + 0xa6, 0x81, 0xa1, 0x1e, 0x55, 0x9f, 0x94, 0x6c, + 0xa2, 0xa8, 0xe7, 0xcd, 0x27, 0xa3, 0xc5, 0x71, + 0x69, 0xf2, 0x0d, 0x91, 0xba, 0x75, 0x9e, 0xbc, + 0x01, 0x27, 0x27, 0x72, 0xe7, 0xd6, 0xb1, 0x93, + 0x39, 0xde, 0x13, 0xbf, 0x68, 0x7a, 0xd0, 0xa3, + 0xc8, 0x1d, 0x9f, 0x81, 0x66, 0x59, 0x3c, 0x3e, + 0x5d, 0xe4, 0xb5, 0x25, 0x10, 0xb2, 0x06, 0xb8, + 0x5c, 0x28, 0x07, 0x39, 0x64, 0x40, 0xd2, 0x75, + 0xee, 0x9c, 0x1c, 0xed, 0xad, 0xb4, 0xa0, 0x68, + 0xad, 0xb0, 0x69, 0xe6, 0xb2, 0x66, 0x9b, 0x44, + 0x4d, 0xe1, 0xb9, 0xa6, 0xc5, 0x0b, 0xdc, 0x52, + 0x31, 0x22, 0xd4, 0xec, 0x03, 0xd4, 0xa4, 0x9b, + 0x26, 0x3b, 0xfc, 0x2b, 0x90, 0x3c, 0x76, 0xda, + 0x11, 0xd2, 0x97, 0x8b, 0x08, 0x18, 0xf0, 0x7b, + 0xfe, 0x12, 0x28, 0x3a, 0x95, 0x38, 0xc9, 0x0f, + 0x01, 0x65, 0xad, 0xf2, 0xc9, 0xe0, 0xbf, 0x56, + 0x85, 0x0e, 0x17, 0x69, 0x38, 0x26, 0x39, 0x07, + 0x60, 0xc3, 0xb8, 0x27, 0x86, 0x4d, 0x80, 0xea, + 0x71, 0xac, 0xb7, 0xad, 0x08, 0xf9, 0xbb, 0xd7, + 0x9a, 0x16, 0x01, 0xb8, 0x51, 0x5f, 0xb4, 0x82, + 0xd0, 0x20, 0x00, 0x47, 0x37, 0x15, 0xa7, 0x92, + 0x33, 0x06, 0x9d, 0xd0, 0xcc, 0x1c, 0xa6, 0xa3, + 0x8c, 0x47, 0x4e, 0xcf, 0x67, 0xbf, 0x6c, 0x3a, + 0xc2, 0x9b, 0x93, 0xfc, 0x81, 0x21, 0xb1, 0xc9, + 0x8a, 0x46, 0x46, 0xbe, 0x38, 0x36, 0x21, 0x1b, + 0x4a, 0x5a, 0xa8, 0xb8, 0x85, 0xd7, 0x55, 0x60, + 0x51, 0xf2, 0xee, 0x51, 0x32, 0xf7, 0x32, 0x87, + 0x6c, 0x2e, 0xfb, 0x9d, 0x6d, 0x73, 0x98, 0x26, + 0xde, 0x21, 0x9c, 0xc1, 0x7e, 0x99, 0x0e, 0xdc, + 0x34, 0x95, 0xd3, 0x72, 0x0e, 0x1d, 0xae, 0xca, + 0xca, 0xdf, 0x75, 0x67, 0x6a, 0x86, 0x97, 0x27, + 0x18, 0x47, 0x33, 0x2d, 0xc6, 0x99, 0x6f, 0x89, + 0x1c, 0xfb, 0xf3, 0x1d, 0xfd, 0xf1, 0x68, 0x22, + 0x23, 0xfd, 0xb7, 0x9d, 0x7d, 0x5b, 0xe2, 0xaf, + 0x4d, 0xa9, 0x87, 0xeb, 0x05, 0x5e, 0xa0, 0x52, + 0x16, 0x61, 0x47, 0xb7, 0x07, 0xc8, 0x54, 0x86, + 0x8d, 0x7e, 0xcb, 0x8d, 0xb4, 0x04, 0x4d, 0x9c, + 0x51, 0x96, 0xd3, 0x4f, 0x87, 0x80, 0x69, 0x1c, + 0x73, 0x57, 0xef, 0x39, 0x1c, 0xdc, 0x17, 0xe2, + 0xfd, 0xed, 0x9d, 0x93, 0xb8, 0x7d, 0x5c, 0x7a, + 0x16, 0xb6, 0x30, 0xa1, 0xd6, 0x75, 0xf8, 0x74, + 0xe7, 0x0d, 0xbd, 0xd6, 0x44, 0x0d, 0x5d, 0x15, + 0xad, 0x02, 0xa1, 0x8c, 0x82, 0xb6, 0xb2, 0x94, + 0xf6, 0x0a, 0x5c, 0xda, 0x2b, 0x0d, 0x9c, 0x1e, + 0x38, 0x1e, 0x42, 0xad, 0xa4, 0x7f, 0x8f, 0x9d, + 0x60, 0xfd, 0x84, 0xec, 0x30, 0x72, 0x65, 0x59, + 0xb8, 0xf6, 0xd9, 0x10, 0xe2, 0xae, 0x26, 0xcd, + 0x09, 0x01, 0x88, 0x70, 0x59, 0x02, 0xde, 0xee, + 0x77, 0x6d, 0x73, 0xd2, 0xf7, 0x6e, 0xfd, 0x9d, + 0xf3, 0x0f, 0x9a, 0xfa, 0x21, 0x54, 0x2a, 0xb5, + 0xbe, 0x7b, 0x0d, 0x53, 0x93, 0x59, 0xa5, 0x54, + 0xab, 0xdb, 0x4d, 0x08, 0x52, 0xdd, 0xaf, 0xda, + 0xa4, 0x81, 0x8a, 0xa2, 0x66, 0x22, 0xdb, 0x51, + 0x82, 0xd6, 0x0d, 0xbe, 0x3f, 0x8c, 0xd9, 0x90, + 0xc9, 0x2e, 0x93, 0x5c, 0x2a, 0x6a, 0x47, 0x47, + 0xe6, 0x7f, 0x29, 0x1d, 0xa8, 0x17, 0x81, 0x02, + 0x98, 0xb9, 0xce, 0x8c, 0xb9, 0x4f, 0xe7, 0x25, + 0x7c, 0x6c, 0x1e, 0xf0, 0x14, 0x1e, 0xae, 0x77, + 0x31, 0xd5, 0x69, 0x81, 0x77, 0x25, 0x59, 0x4e, + 0x71, 0xf3, 0xf4, 0x3a, 0x1a, 0xd1, 0x1b, 0xbd, + 0xd9, 0x08, 0x2d, 0x14, 0x3a, 0xb9, 0x8d, 0xb2, + 0x30, 0xf8, 0xfe, 0x74, 0x18, 0xb7, 0x63, 0x05, + 0x16, 0x07, 0xfc, 0x79, 0x54, 0x95, 0xbc, 0x0d, + 0x4d, 0x3b, 0xa4, 0x26, 0x2e, 0x22, 0xd7, 0x47, + 0x9c, 0x75, 0x43, 0x4e, 0xe3, 0xca, 0x65, 0xe6, + 0xd6, 0x8d, 0xac, 0xd7, 0xb7, 0xbd, 0x10, 0x1d, + 0x5e, 0x96, 0x35, 0x49, 0x04, 0x43, 0x2b, 0xe5, + 0x33, 0x3a, 0xfc, 0x80, 0x6c, 0xfa, 0xad, 0x27, + 0x57, 0xef, 0xa0, 0xc9, 0xef, 0x4a, 0x37, 0x1b, + 0xab, 0xaa, 0x51, 0x02, 0xe2, 0xe8, 0x56, 0xea, + 0xa4, 0x4a, 0x54, 0xe5, 0x80, 0xd6, 0xc4, 0x8e, + 0xb8, 0x18, 0x52, 0x4f, 0xe9, 0x6f, 0x79, 0xcc, + 0x24, 0x79, 0xfb, 0x47, 0x87, 0xef, 0xcd, 0x90, + 0x76, 0x70, 0x8c, 0x2a, 0xce, 0xef, 0x10, 0xbb, + 0xd7, 0x10, 0x9b, 0xb8, 0x59, 0x89, 0x95, 0x9b, + 0x81, 0xe5, 0x7e, 0x15, 0xae, 0xc8, 0x93, 0xd5, + 0x12, 0x4a, 0xba, 0x78, 0xde, 0x04, 0xd8, 0x0f, + 0x34, 0xbb, 0xa0, 0xb8, 0x85, 0xe9, 0x90, 0x02, + 0xeb, 0x92, 0x26, 0xe8, 0xda, 0x92, 0x6d, 0x45, + 0x31, 0x30, 0x5d, 0xd3, 0x6f, 0x51, 0x34, 0x9c, + 0x62, 0x2b, 0xbb, 0xc0, 0xc2, 0xa6, 0x3a, 0xd3, + 0xfd, 0xfe, 0x7e, 0x71, 0x21, 0xf0, 0xfe, 0x74, + 0x2f, 0xba, 0x2c, 0xdc, 0x15, 0xc2, 0xaf, 0xc2, + 0xee, 0x90, 0x84, 0x5b, 0x40, 0x02, 0xba, 0xcb, + 0xc4, 0x71, 0x58, 0x8c, 0xa7, 0x1f, 0x7a, 0xe2, + 0xf6, 0x66, 0xae, 0x0d, 0x17, 0x4c, 0x25, 0x16, + 0x39, 0x1b, 0xbe, 0x04, 0x87, 0x14, 0x30, 0xe9, + 0x17, 0x36, 0x23, 0xa8, 0x6f, 0x86, 0x00, 0xb3, + 0x2a, 0x64, 0xdc, 0xb4, 0xd2, 0xaa, 0xf0, 0xb4, + 0x4f, 0x73, 0xf6, 0xc2, 0x7e, 0x48, 0x46, 0xd4, + 0xb3, 0x08, 0xa9, 0x33, 0x9c, 0xb9, 0x95, 0x67, + 0xa9, 0xa6, 0x0f, 0xc4, 0x2a, 0xc0, 0xe9, 0x45, + 0xf5, 0x7f, 0x1d, 0x08, 0x02, 0x3b, 0x09, 0xb0, + 0x04, 0x57, 0xca, 0xf9, 0x21, 0x97, 0x03, 0x51, + 0xd4, 0xfb, 0x58, 0xb1, 0x9f, 0xb4, 0xf0, 0x97, + 0xdc, 0xa8, 0x93, 0x38, 0x8f, 0xd0, 0x1a, 0x54, + 0x41, 0xe1, 0x0e, 0xd3, 0xba, 0xb2, 0x21, 0xaa, + 0x8e, 0x42, 0x2d, 0x60, 0x20, 0x9c, 0x39, 0xf3, + 0x4f, 0xe6, 0x03, 0xce, 0xdd, 0xfc, 0xc6, 0x27, + 0x9b, 0x87, 0x4d, 0xd8, 0x9e, 0x09, 0x56, 0x15, + 0xfd, 0xbe, 0x86, 0xed, 0xfa, 0x91, 0x04, 0x1b, + 0xf8, 0x34, 0x30, 0xba, 0xc3, 0x0c, 0x90, 0x88, + 0x48, 0x32, 0x43, 0x2d, 0x30, 0xf1, 0xf1, 0xec, + 0xdd, 0x06, 0x02, 0xe6, 0x45, 0xa4, 0xac, 0x5a, + 0x3e, 0x1c, 0x27, 0x63, 0xd9, 0x62, 0x78, 0x68, + 0xc8, 0x91, 0x0d, 0x70, 0xff, 0xb4, 0xee, 0xc6, + 0xac, 0x3e, 0x66, 0x76, 0x15, 0xc2, 0x90, 0x02, + 0xb6, 0x80, 0x80, 0x52, 0xb4, 0xb4, 0x64, 0x4b, + 0xef, 0x9b, 0xa9, 0xf3, 0x4e, 0x49, 0x10, 0x47, + 0xa9, 0x0a, 0x5d, 0x27, 0xe3, 0x86, 0xdc, 0xf6, + 0xfd, 0xe3, 0xc4, 0x90, 0xfb, 0x11, 0xd9, 0x38, + 0x62, 0x81, 0xaa, 0xed, 0x61, 0xd5, 0x0f, 0x7a, + 0x27, 0x1c, 0x7a, 0x4d, 0x7b, 0xe6, 0xd0, 0x60, + 0x35, 0xf5, 0xd3, 0x40, 0x47, 0x08, 0xba, 0x3f, + 0x11, 0x29, 0xd7, 0x22, 0x47, 0xde, 0x1d, 0x9e, + 0x19, 0xa5, 0x1f, 0x12, 0xea, 0xe8, 0xef, 0x72, + 0x77, 0x6c, 0x8d, 0xf3, 0x05, 0x5a, 0xee, 0xdc, + 0x6b, 0xf6, 0xc0, 0x81, 0x08, 0x0f, 0xa9, 0x84, + 0x79, 0x5e, 0x68, 0xc3, 0x22, 0x21, 0x82, 0x94, + 0x1b, 0xbb, 0x81, 0x09, 0x9a, 0x06, 0x15, 0xf5, + 0xf6, 0x6d, 0xb2, 0x36, 0x84, 0x22, 0xfa, 0xc7, + 0xbb, 0x0d, 0x17, 0x20, 0x16, 0x82, 0xa2, 0xc8, + 0x8a, 0xe7, 0x5d, 0x7a, 0x8a, 0xa8, 0x0c, 0x4a, + 0x23, 0xe5, 0x27, 0xad, 0xf4, 0x15, 0x4c, 0x61, + 0xae, 0x00, 0x79, 0x54, 0x1d, 0x1c, 0x6e, 0x26, + 0x02, 0x99, 0xf0, 0x0a, 0xeb, 0xe9, 0x10, 0xd2, + 0xf9, 0x17, 0x75, 0xd0, 0x6a, 0x88, 0xaa, 0xbc, + 0x64, 0xe3, 0x07, 0xff, 0x4f, 0xc2, 0xf1, 0xd2, + 0xfe, 0x2a, 0xae, 0x68, 0xb8, 0xa6, 0x4b, 0x50, + 0x6f, 0xc0, 0x7d, 0x94, 0xe2, 0xc7, 0x25, 0xad, + 0x31, 0xcf, 0x3a, 0xe7, 0xca, 0x2c, 0x5f, 0x56, + 0x3a, 0xe7, 0x8d, 0x63, 0xe3, 0xfe, 0x88, 0x34, + 0xf5, 0xf8, 0xcd, 0x9f, 0x7d, 0x76, 0x0b, 0x3e, + 0xf6, 0xda, 0xae, 0x74, 0xb2, 0x4a, 0x0f, 0xfd, + 0x60, 0x9f, 0x6f, 0xa6, 0xfa, 0xef, 0xc1, 0xdd, + 0x79, 0x8f, 0xe8, 0x0d, 0x76, 0xc6, 0xd9, 0x34, + 0x06, 0x72, 0x8e, 0xf8, 0xda, 0xb9, 0x60, 0xa6, + 0x01, 0xdd, 0xae, 0x30, 0x35, 0xf7, 0xf9, 0xac, + 0x22, 0xb1, 0x67, 0xd7, 0x2f, 0x5f, 0x68, 0xef, + 0x4c, 0xe7, 0xc9, 0xd1, 0x00, 0xbb, 0x27, 0x98, + 0x98, 0x7e, 0x40, 0xae, 0x14, 0x38, 0x8e, 0x1b, + 0xcd, 0x78, 0x86, 0xa2, 0xb1, 0x04, 0x9c, 0x04, + 0xc4, 0xa6, 0x46, 0x3a, 0xc8, 0x1f, 0x33, 0x69, + 0xe5, 0x2b, 0xf1, 0x03, 0x09, 0x44, 0x7f, 0x60, + 0x49, 0xd2, 0x9c, 0x61, 0x0e, 0xf1, 0x8c, 0x13, + 0x68, 0x2f, 0x9b, 0x18, 0x03, 0x69, 0xed, 0xc6, + 0x8e, 0xf2, 0x84, 0x72, 0xaa, 0xa8, 0x5b, 0x2d, + 0x3a, 0xfd, 0x0a, 0x71, 0xbe, 0xef, 0x07, 0xb8, + 0xdb, 0xc2, 0x66, 0x05, 0x14, 0xf8, 0x29, 0x38, + 0x0e, 0x7f, 0xae, 0xf1, 0xc3, 0x41, 0x8a, 0xe2, + 0x6f, 0xac, 0x20, 0x80, 0xcf, 0x18, 0xf1, 0x97, + 0x09, 0xba, 0x86, 0x25, 0xb9, 0x4b, 0xca, 0x7e, + 0x8e, 0x75, 0x30, 0x6d, 0x11, 0x96, 0xb5, 0xf2, + 0x60, 0x75, 0xf6, 0x9b, 0x8d, 0xca, 0x3c, 0x9e, + 0x7f, 0xd4, 0xf3, 0x25, 0x5c, 0x09, 0x92, 0x31, + 0x9a, 0x54, 0x2c, 0x3a, 0xc6, 0x62, 0x52, 0xb4, + 0x9f, 0x38, 0x1a, 0xc4, 0x69, 0x27, 0xe4, 0xe0, + 0x01, 0x74, 0x57, 0xe7, 0x35, 0xbc, 0x36, 0x8e, + 0xdc, 0xd3, 0x17, 0x4d, 0x6a, 0x67, 0xe7, 0x8f, + 0x8d, 0x78, 0x26, 0x13, 0x37, 0x21, 0xa9, 0x41, + 0x81, 0x75, 0xde, 0x04, 0xaf, 0x9c, 0xa6, 0xab, + 0xb3, 0x6a, 0x51, 0xba, 0xb2, 0xd5, 0xb4, 0x64, + 0x5c, 0xae, 0x2a, 0xec, 0x92, 0x17, 0xdd, 0x7a, + 0x26, 0x44, 0x46, 0x73, 0xdc, 0x51, 0x94, 0x26, + 0x1c, 0xc0, 0x6d, 0xff, 0xa8, 0x43, 0x5c, 0xc5, + 0xec, 0x51, 0x93, 0xb5, 0x27, 0x13, 0x75, 0xef, + 0x6f, 0xc3, 0xe1, 0x7c, 0xbd, 0x72, 0x07, 0x7b, + 0xae, 0xa5, 0x9f, 0xe3, 0x5f, 0x67, 0xd4, 0xad, + 0x65, 0x19, 0x92, 0x6b, 0x10, 0xf8, 0xc2, 0xa3, + 0x39, 0xa5, 0x96, 0x7a, 0xf5, 0x9d, 0x49, 0xd6, + 0x62, 0x81, 0x0e, 0x63, 0x2e, 0xe7, 0x12, 0x5b, + 0x9e, 0xd8, 0xde, 0x15, 0x86, 0x22, 0x6e, 0x9a, + 0xe9, 0xae, 0x5a, 0x35, 0x8f, 0xe0, 0x40, 0xdd, + 0x59, 0x15, 0x77, 0x40, 0x09, 0xa0, 0x50, 0xef, + 0x8c, 0xca, 0x4c, 0x61, 0x24, 0x9a, 0x5e, 0x75, + 0x9d, 0x6d, 0xae, 0x76, 0x04, 0xa7, 0xd5, 0x84, + 0xde, 0xf4, 0xd5, 0xbb, 0xea, 0x2b, 0x87, 0xaa, + 0x0e, 0xa1, 0x17, 0x90, 0x33, 0xb6, 0x0e, 0xa1, + 0x05, 0xce, 0xb9, 0x7d, 0x92, 0x51, 0x87, 0xe2, + 0x6f, 0xf5, 0xad, 0xb2, 0x77, 0xe8, 0x0a, 0xb8, + 0xb3, 0xef, 0x9c, 0x19, 0x6b, 0x11, 0xdf, 0x23, + 0xb5, 0xe4, 0xe3, 0xbf, 0xba, 0xf7, 0x4e, 0x80, + 0x1c, 0xc7, 0x86, 0xfe, 0xce, 0x75, 0xfb, 0xa3, + 0xa8, 0x78, 0x15, 0xb8, 0x72, 0x76, 0x1a, 0x20, + 0x2f, 0xec, 0xde, 0x0f, 0x8d, 0xa8, 0xb6, 0x58, + 0xf4, 0x95, 0x0e, 0x81, 0x2b, 0x31, 0x0d, 0x54, + 0x41, 0xd7, 0x6c, 0xb3, 0xa7, 0xe5, 0x73, 0x94, + 0x6f, 0xa2, 0x54, 0x34, 0xfa, 0xdc, 0xfc, 0x9c, + 0x1b, 0x56, 0xea, 0x58, 0x1d, 0xdd, 0xd2, 0x0e, + 0xef, 0x2b, 0x73, 0xdb, 0x19, 0xa7, 0x7a, 0x5c, + 0x7a, 0x49, 0x85, 0x27, 0x25, 0x42, 0x5a, 0x7c, + 0xf2, 0x7f, 0x3e, 0xde, 0x1d, 0x07, 0x5d, 0x59, + 0xdd, 0xe8, 0x1d, 0x29, 0xe4, 0x66, 0x45, 0x0b, + 0xfe, 0x8e, 0xf4, 0x30, 0x1e, 0x31, 0x21, 0x3c, + 0x14, 0xa2, 0xfd, 0x74, 0xda, 0xb0, 0xd8, 0xb7, + 0x71, 0x90, 0x9a, 0x6e, 0x04, 0x90, 0x71, 0x4f, + 0x40, 0x47, 0xb1, 0x36, 0x33, 0xdd, 0x57, 0xcc, + 0x05, 0xe4, 0x7b, 0xcd, 0xf3, 0x17, 0xad, 0xe3, + 0x7c, 0x92, 0xdd, 0x28, 0x8d, 0xce, 0x16, 0xba, + 0xbb, 0x71, 0x76, 0x53, 0x73, 0x5e, 0x2e, 0xb5, + 0x4e, 0xc9, 0x89, 0xd4, 0x61, 0x6e, 0xe9, 0x08, + 0x10, 0xfe, 0x4a, 0xbe, 0xc5, 0xef, 0xcb, 0xd2, + 0x0d, 0x29, 0x0f, 0x10, 0xc7, 0x3c, 0xbd, 0xdd, + 0x84, 0x11, 0x40, 0x97, 0xb1, 0xfb, 0x10, 0x59, + 0x02, 0xce, 0xef, 0x8b, 0xa6, 0x99, 0xf3, 0x37, + 0x85, 0x3e, 0x84, 0x65, 0x3e, 0x06, 0xbb, 0x4c, + 0x0b, 0x72, 0xcb, 0x51, 0x5d, 0x4c, 0x24, 0x16, + 0x19, 0xd4, 0x96, 0xe7, 0x64, 0xe3, 0x05, 0x1d, + 0x99, 0xa8, 0x23, 0x3f, 0xe2, 0x0b, 0xd6, 0x24, + 0xc2, 0x67, 0xc8, 0xb8, 0x48, 0xe7, 0xe8, 0x5a, + 0x7d, 0x5b, 0x53, 0xa1, 0xe6, 0xde, 0x9f, 0x59, + 0x4f, 0xf2, 0x28, 0x77, 0x79, 0xcd, 0xe2, 0xab, + 0x7d, 0x9e, 0xfa, 0xb0, 0x62, 0xf9, 0xe7, 0xf8, + 0xd9, 0x17, 0xd8, 0x74, 0xfc, 0x07, 0xd2, 0x82, + 0xd0, 0xe9, 0x6c, 0x92, 0xf8, 0x81, 0x1c, 0xfc, + 0x1b, 0xbf, 0x68, 0xbc, 0x65, 0xe9, 0xe3, 0x83, + 0xe3, 0x16, 0x76, 0x85, 0xd7, 0xe0, 0x65, 0xc1, + 0x61, 0xa6, 0x87, 0x4e, 0x6d, 0x5c, 0x0f, 0x08, + 0x2f, 0xcb, 0xc6, 0xd0, 0x63, 0x5c, 0x2a, 0xa0, + 0x8e, 0xfa, 0x46, 0x9f, 0xe7, 0x3b, 0xf3, 0x0e, + 0x60, 0xeb, 0x0d, 0x96, 0x6f, 0x4c, 0xd1, 0x36, + 0x67, 0xce, 0x4c, 0x5b, 0xec, 0x36, 0xd1, 0x69, + 0x0b, 0x1c, 0x3e, 0x39, 0x9e, 0xbe, 0x11, 0xae, + 0xe4, 0x4e, 0xa7, 0xe8, 0x81, 0x19, 0xe7, 0xab, + 0x27, 0x5f, 0xd1, 0x0a, 0x89, 0xb6, 0x8f, 0x04, + 0x5a, 0xb5, 0x3e, 0x30, 0x11, 0xf7, 0xb2, 0xb2, + 0xf8, 0x7d, 0x65, 0x1c, 0x01, 0x5c, 0xfe, 0x57, + 0x96, 0x04, 0x8c, 0x80, 0x62, 0x4c, 0xa8, 0x57, + 0xf2, 0x56, 0x74, 0x83, 0xce, 0xff, 0xf9, 0xaa, + 0xca, 0x0b, 0x04, 0xfe, 0x2c, 0xc2, 0x14, 0x49, + 0x8d, 0xf2, 0x1f, 0xa0, 0xb0, 0xa1, 0x16, 0x16, + 0x9a, 0xce, 0x73, 0xd4, 0x04, 0x8a, 0x3f, 0x52, + 0x95, 0xf7, 0x8d, 0x13, 0x69, 0xb4, 0xc7, 0x20, + 0x9e, 0x61, 0xcf, 0x3f, 0x51, 0xee, 0xc7, 0x67, + 0x86, 0x3e, 0x15, 0xb4, 0xb9, 0x33, 0x72, 0xea, + 0xe9, 0xd7, 0xf0, 0x34, 0xdc, 0xde, 0x42, 0xd0, + 0xba, 0x30, 0x8f, 0x93, 0xa0, 0xdd, 0x9b, 0x00, + 0xb0, 0x25, 0x08, 0x59, 0x2f, 0x9b, 0xed, 0x46, + 0x3e, 0x60, 0x18, 0xce, 0x1d, 0xa3, 0x92, 0x2b, + 0xec, 0x10, 0xa8, 0xf4, 0x0c, 0x62, 0xba, 0x27, + 0xfb, 0x0d, 0xcc, 0x51, 0xb4, 0xa0, 0x70, 0x63, + 0xd4, 0xf7, 0xda, 0x79, 0x21, 0x69, 0x49, 0x5e, + 0xd9, 0x50, 0xd6, 0x2a, 0x74, 0xea, 0xce, 0x4c, + 0xe9, 0x70, 0x51, 0x37, 0xf8, 0x11, 0xef, 0x11, + 0x1a, 0x5c, 0x38, 0xec, 0x30, 0xbc, 0xd6, 0x90, + 0xaa, 0x84, 0x2e, 0x14, 0xd5, 0x5a, 0xe0, 0xb5, + 0xb6, 0xbd, 0x2c, 0xb8, 0x4d, 0x89, 0xa6, 0x6d, + 0xfe, 0x9f, 0xcd, 0x9e, 0xb7, 0xa2, 0x1b, 0x0f, + 0x84, 0xb0, 0x91, 0x38, 0x9a, 0xac, 0xcd, 0xa5, + 0xbe, 0x70, 0x54, 0x98, 0x1c, 0x07, 0x64, 0x68, + 0xeb, 0x55, 0x52, 0x8e, 0x35, 0x97, 0x74, 0x7f, + 0x2d, 0x15, 0x62, 0x3f, 0xbe, 0x11, 0x57, 0x11, + 0x4d, 0xa7, 0x99, 0x53, 0xc3, 0xd9, 0xcd, 0xd0, + 0xe6, 0x53, 0xb5, 0xfd, 0x2b, 0xaa, 0x29, 0x3e, + 0x69, 0x03, 0xef, 0x11, 0xe9, 0x88, 0x2f, 0x0d, + 0xed, 0x5f, 0xd4, 0x3a, 0x31, 0xf0, 0x4c, 0x3a, + 0xfb, 0xe8, 0x01, 0x61, 0x47, 0x95, 0xf5, 0xd2, + 0x7d, 0x1a, 0xab, 0x7e, 0xc9, 0xd1, 0xd5, 0x13, + 0x0a, 0xed, 0xc5, 0x62, 0xee, 0x0b, 0x3f, 0x1d, + 0xd1, 0x46, 0xc9, 0x62, 0x25, 0xd2, 0x13, 0x1d, + 0x51, 0xee, 0xb2, 0x2d, 0x4b, 0x42, 0x33, 0xe5, + 0x50, 0xe5, 0x21, 0x80, 0xac, 0x4f, 0xd0, 0x7a, + 0x67, 0x62, 0x1c, 0x74, 0x51, 0x04, 0x69, 0x54, + 0x5b, 0x5d, 0x39, 0xfb, 0x17, 0x5f, 0xee, 0xd5, + 0x9a, 0xb1, 0xaa, 0x9f, 0xed, 0x45, 0xf4, 0x2e, + 0x6b, 0x45, 0xba, 0xc3, 0xec, 0x45, 0xba, 0x6e, + 0x44, 0x92, 0x9f, 0xc4, 0xe1, 0xf5, 0xd0, 0x67, + 0xab, 0x19, 0xfd, 0x64, 0x31, 0x4a, 0xfa, 0xfc, + 0x1c, 0xb9, 0x41, 0x41, 0xbf, 0xdc, 0x84, 0xe1, + 0x06, 0x84, 0xab, 0x79, 0xdc, 0x32, 0xc4, 0x3b, + 0xcd, 0xfe, 0x0e, 0x3d, 0x41, 0xd9, 0xdb, 0x89, + 0xb4, 0x3c, 0x05, 0xab, 0xd3, 0x03, 0x05, 0x96, + 0x03, 0xfb, 0x24, 0x2a, 0x9a, 0xfc, 0x2c, 0xce, + 0x32, 0x47, 0x46, 0xa1, 0x9f, 0xca, 0x5f, 0x2b, + 0xdd, 0x15, 0xd7, 0x02, 0x1d, 0x30, 0x54, 0x42, + 0xcf, 0x77, 0xf9, 0xd1, 0x26, 0xf4, 0xa6, 0x84, + 0xce, 0x69, 0x58, 0xba, 0xd3, 0xd6, 0xa6, 0x6c, + 0xcd, 0x57, 0x0e, 0x6c, 0xa3, 0x98, 0xaf, 0xe1, + 0x5f, 0x59, 0x5a, 0x7b, 0xf2, 0x2f, 0x3d, 0xf9, + 0x0b, 0xf2, 0xb0, 0xda, 0x37, 0x94, 0x6a, 0xf8, + 0x7f, 0x51, 0xfa, 0x48, 0x73, 0xa6, 0xe0, 0x12, + 0x05, 0x36, 0x38, 0x3a, 0x43, 0x57, 0x67, 0x81, + 0x95, 0xb5, 0xcb, 0xf8, 0x01, 0x0a, 0x13, 0x17, + 0x2d, 0x67, 0xae, 0xbc, 0xed, 0x5d, 0xaf, 0xb9, + 0xce, 0xcf, 0xd1, 0x0b, 0x19, 0x90, 0xab, 0xe0, + 0x30, 0x48, 0x62, 0x73, 0x75, 0x8d, 0x93, 0x98, + 0xab, 0xdf, 0xe9, 0xf4, 0x1a, 0x60, 0x6c, 0x70, + 0xa8, 0xb4, 0xe0, 0xe6, 0xf2, 0xff, 0x0b, 0x62, + 0x6a, 0x87, 0x8a, 0xb0, 0xcf, 0xe6, 0xee, 0x38, + 0x79, 0x7c, 0x80, 0x84, 0xa9, 0xe2, 0xe4, 0xe7, + 0x00, 0x00, 0x00, 0x0c, 0x15, 0x1b, 0x20, 0x2c, + 0x36, 0x3f, 0x48, }, + }, diff --git a/crypto/ml_dsa/dilithium_selftest.c b/crypto/ml_dsa/dilithium_s= elftest.c index 5179adbce99a..9c0365bd9213 100644 --- a/crypto/ml_dsa/dilithium_selftest.c +++ b/crypto/ml_dsa/dilithium_selftest.c @@ -38,6 +38,9 @@ static const struct dilithium_testvector dilithium44_test= vectors[] =3D { static const struct dilithium_testvector dilithium65_testvectors[] =3D { #include "dilithium_pure_rejection_vectors_65.h" }; +static const struct dilithium_testvector dilithium87_testvectors[] =3D { +#include "dilithium_pure_rejection_vectors_87.h" +}; =20 /* * Allow kunit to free a crypto signature processing object. @@ -113,9 +116,21 @@ static void dilithium65_kunit_test(struct kunit *test) KUNIT_SUCCEED(test); } =20 +static void dilithium87_kunit_test(struct kunit *test) +{ + const struct dilithium_testvector *tc =3D dilithium87_testvectors; + int count =3D ARRAY_SIZE(dilithium87_testvectors); + + for (int index =3D 0; index < count; index++) + dilithium_sigver_test_one(test, index, &tc[index]); + + KUNIT_SUCCEED(test); +} + static struct kunit_case __refdata dilithium_kunit_cases[] =3D { KUNIT_CASE(dilithium44_kunit_test), KUNIT_CASE(dilithium65_kunit_test), + KUNIT_CASE(dilithium87_kunit_test), {} }; From nobody Fri Dec 19 17:16:03 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 86CF534EEED for ; Thu, 6 Nov 2025 17:45:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451151; cv=none; b=JGqaNVwRj7o/CQwYCrkMIoY47+jd+toGhme0ShjGJ8xYoAr7CDtbRgi0XVlM0JMhZqieTZzGWJV92CZ4ub7FrUw4BRLtXbj97hUVkem6ThwVGDdfnB/85DfJY/VSOrWDBKwOObdg3N2jhahyAIA6HIk5cAqY4DXacoA2/uOqW1U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451151; c=relaxed/simple; bh=UJ0JNuAjO4bhNUyDJJTmWDirBsmcCcvUnyXrgyxFwC0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WtoBKhkCw3MXXwo4XmCdE98T6nnM8eYZ0BpwqDwKs22FqtPxQrGDFJnWBfv0YVtyrStcMC7GCOgGKPiWvym0zbNI6dnPBgJkf9dVI1q4jhqBXTBvn2CpRjnxoso81M2qNt6gtbqMxopSCqflDF4MnCqHoUu82SxiN3R8+NjpI4w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=LwJmXgz2; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="LwJmXgz2" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762451146; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LPY+GhOJq5nNgZrUBrGTmZ1jrCpWP/ToTTWyLrp7aIg=; b=LwJmXgz2oI3IzvkCx1I04vtFwCXGLlK/inwftJNd9IOuW0nknJ/bCDBQz6QhHP3VRK6el/ vLD4IH6j38A8IdJ1NMm9Gkx9lWqwurHp0gPLR7IuepRqaxJFDzcO5lcohPxvXj8zMBem// LZPRrqWnFmnat6OvHeBnALUfQ+noHrk= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-302-l8k5WjleOD2XX0xn47llEA-1; Thu, 06 Nov 2025 12:45:40 -0500 X-MC-Unique: l8k5WjleOD2XX0xn47llEA-1 X-Mimecast-MFC-AGG-ID: l8k5WjleOD2XX0xn47llEA_1762451137 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 7AC5E19560AE; Thu, 6 Nov 2025 17:45:37 +0000 (UTC) Received: from warthog.procyon.org.com (unknown [10.42.28.6]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DFAC8180049F; Thu, 6 Nov 2025 17:45:33 +0000 (UTC) From: David Howells To: Herbert Xu Cc: David Howells , Eric Biggers , Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , "Jason A . Donenfeld" , Ard Biesheuvel , Stephan Mueller , Lukas Wunner , Ignat Korchagin , linux-crypto@vger.kernel.org, keyrings@vger.kernel.org, linux-modules@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 6/8] pkcs7: Allow the signing algo to calculate the digest itself Date: Thu, 6 Nov 2025 17:44:50 +0000 Message-ID: <20251106174456.31818-7-dhowells@redhat.com> In-Reply-To: <20251106174456.31818-1-dhowells@redhat.com> References: <20251106174456.31818-1-dhowells@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Content-Type: text/plain; charset="utf-8" The ML-DSA public key algorithm really wants to calculate the message digest itself, rather than having the digest precalculated and fed to it separately as RSA does[*]. The kernel's PKCS#7 parser, however, is designed around the latter approach. [*] ML-DSA does allow for an "external mu", but CMS doesn't yet have that standardised. Fix this by noting in the public_key_signature struct when the signing algorithm is going to want this and then, rather than doing the digest of the authenticatedAttributes ourselves and overwriting the sig->digest with that, replace sig->digest with a copy of the contents of the authenticatedAttributes section and adjust the digest length to match. This will then be fed to the public key algorithm as normal which can do what it wants with the data. Signed-off-by: David Howells cc: Lukas Wunner cc: Ignat Korchagin cc: Stephan Mueller cc: Eric Biggers cc: Herbert Xu cc: keyrings@vger.kernel.org cc: linux-crypto@vger.kernel.org --- crypto/asymmetric_keys/pkcs7_parser.c | 4 +-- crypto/asymmetric_keys/pkcs7_verify.c | 48 ++++++++++++++++++--------- include/crypto/public_key.h | 1 + 3 files changed, 36 insertions(+), 17 deletions(-) diff --git a/crypto/asymmetric_keys/pkcs7_parser.c b/crypto/asymmetric_keys= /pkcs7_parser.c index 423d13c47545..3cdbab3b9f50 100644 --- a/crypto/asymmetric_keys/pkcs7_parser.c +++ b/crypto/asymmetric_keys/pkcs7_parser.c @@ -599,8 +599,8 @@ int pkcs7_sig_note_set_of_authattrs(void *context, size= _t hdrlen, } =20 /* We need to switch the 'CONT 0' to a 'SET OF' when we digest */ - sinfo->authattrs =3D value - (hdrlen - 1); - sinfo->authattrs_len =3D vlen + (hdrlen - 1); + sinfo->authattrs =3D value - hdrlen; + sinfo->authattrs_len =3D vlen + hdrlen; return 0; } =20 diff --git a/crypto/asymmetric_keys/pkcs7_verify.c b/crypto/asymmetric_keys= /pkcs7_verify.c index 6d6475e3a9bf..0f9f515b784d 100644 --- a/crypto/asymmetric_keys/pkcs7_verify.c +++ b/crypto/asymmetric_keys/pkcs7_verify.c @@ -70,8 +70,6 @@ static int pkcs7_digest(struct pkcs7_message *pkcs7, * digest we just calculated. */ if (sinfo->authattrs) { - u8 tag; - if (!sinfo->msgdigest) { pr_warn("Sig %u: No messageDigest\n", sinfo->index); ret =3D -EKEYREJECTED; @@ -97,20 +95,40 @@ static int pkcs7_digest(struct pkcs7_message *pkcs7, * as the contents of the digest instead. Note that we need to * convert the attributes from a CONT.0 into a SET before we * hash it. + * + * However, for certain algorithms, such as ML-DSA, the digest + * is integrated into the signing algorithm. In such a case, + * we copy the authattrs, modifying the tag type, and set that + * as the digest. */ - memset(sig->digest, 0, sig->digest_size); - - ret =3D crypto_shash_init(desc); - if (ret < 0) - goto error; - tag =3D ASN1_CONS_BIT | ASN1_SET; - ret =3D crypto_shash_update(desc, &tag, 1); - if (ret < 0) - goto error; - ret =3D crypto_shash_finup(desc, sinfo->authattrs, - sinfo->authattrs_len, sig->digest); - if (ret < 0) - goto error; + if (sig->algo_does_hash) { + kfree(sig->digest); + + ret =3D -ENOMEM; + sig->digest =3D kmalloc(umax(sinfo->authattrs_len, sig->digest_size), + GFP_KERNEL); + if (!sig->digest) + goto error_no_desc; + + sig->digest_size =3D sinfo->authattrs_len; + memcpy(sig->digest, sinfo->authattrs, sinfo->authattrs_len); + ((u8 *)sig->digest)[0] =3D ASN1_CONS_BIT | ASN1_SET; + ret =3D 0; + } else { + u8 tag =3D ASN1_CONS_BIT | ASN1_SET; + + ret =3D crypto_shash_init(desc); + if (ret < 0) + goto error; + ret =3D crypto_shash_update(desc, &tag, 1); + if (ret < 0) + goto error; + ret =3D crypto_shash_finup(desc, sinfo->authattrs + 1, + sinfo->authattrs_len - 1, + sig->digest); + if (ret < 0) + goto error; + } pr_devel("AADigest =3D [%*ph]\n", 8, sig->digest); } =20 diff --git a/include/crypto/public_key.h b/include/crypto/public_key.h index 81098e00c08f..e4ec8003a3a4 100644 --- a/include/crypto/public_key.h +++ b/include/crypto/public_key.h @@ -46,6 +46,7 @@ struct public_key_signature { u8 *digest; u32 s_size; /* Number of bytes in signature */ u32 digest_size; /* Number of bytes in digest */ + bool algo_does_hash; /* Public key algo does its own hashing */ const char *pkey_algo; const char *hash_algo; const char *encoding; From nobody Fri Dec 19 17:16:03 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3CE58350A00 for ; Thu, 6 Nov 2025 17:45:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451153; cv=none; b=PogYHJoCndqMlMKTTbOuL5zVvnAp0t2YHPHOYN8qNyAg41MFYlWUHluhLAA/tH4abax1hlc9n2jydv5ysy2RcMQi8Kap6hab0lhzbVr7Z+LLEEnUNqxC0lYXjxQmbzia0Bhd0jB1LzSpZmFrMR8+kTmj6NaM0UbHHoj1iEaPdcY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762451153; c=relaxed/simple; bh=RvusHb8iCMBSU7BMwlq1o6N1lbxg25PBi5W0BeXHl0g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VFc4Y/0SQCVAATg90+g/sDAe7enG8KDqY3X7ZU3AzJEnhLwXI2qAAx/lvHyp8vW+zs5kbjCxLHVQaDfvnlDroOo3qCujEUL8q5TDVNn9DSgmyWybswbtDCqTTx7v+oxl3PkFCgMA+Gya3AEA58yS0u7HuoSq2Hm0fs29TDYV0Wo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=SHdVmtuE; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="SHdVmtuE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762451148; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dwXTvBD4Yvz8oojCSyImVAOTuEGuJkeQWe5NSzvpamE=; b=SHdVmtuEAd2onL80wyhSpI0B49pLgQOmgtyD4DkYmTBOuzawF3fyVuWo64O9OF6U3zKVew 5svaBn1FHs+g3NMbysxwoxmzDaKle6mKK2cbpNgJ3cIbOEOZpifdUCpo5n1O/DJMQnybtT QBVEDIV+Qs6xK32OFaUoYb9A9RPzqk8= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-372-W1d-4TabM9iJJOSfvszwLg-1; Thu, 06 Nov 2025 12:45:45 -0500 X-MC-Unique: W1d-4TabM9iJJOSfvszwLg-1 X-Mimecast-MFC-AGG-ID: W1d-4TabM9iJJOSfvszwLg_1762451142 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 56BA01801234; Thu, 6 Nov 2025 17:45:42 +0000 (UTC) Received: from warthog.procyon.org.com (unknown [10.42.28.6]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id D93121945110; Thu, 6 Nov 2025 17:45:38 +0000 (UTC) From: David Howells To: Herbert Xu Cc: David Howells , Eric Biggers , Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , "Jason A . Donenfeld" , Ard Biesheuvel , Stephan Mueller , Lukas Wunner , Ignat Korchagin , linux-crypto@vger.kernel.org, keyrings@vger.kernel.org, linux-modules@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 7/8] pkcs7, x509: Add ML-DSA support Date: Thu, 6 Nov 2025 17:44:51 +0000 Message-ID: <20251106174456.31818-8-dhowells@redhat.com> In-Reply-To: <20251106174456.31818-1-dhowells@redhat.com> References: <20251106174456.31818-1-dhowells@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Content-Type: text/plain; charset="utf-8" Add support for ML-DSA keys and signatures to the PKCS#7 and X.509 implementations. Signed-off-by: David Howells cc: Lukas Wunner cc: Ignat Korchagin cc: Stephan Mueller cc: Eric Biggers cc: Herbert Xu cc: keyrings@vger.kernel.org cc: linux-crypto@vger.kernel.org --- crypto/asymmetric_keys/pkcs7_parser.c | 15 ++++++++++++++ crypto/asymmetric_keys/public_key.c | 7 +++++++ crypto/asymmetric_keys/x509_cert_parser.c | 24 +++++++++++++++++++++++ include/linux/oid_registry.h | 5 +++++ 4 files changed, 51 insertions(+) diff --git a/crypto/asymmetric_keys/pkcs7_parser.c b/crypto/asymmetric_keys= /pkcs7_parser.c index 3cdbab3b9f50..d7c88b90a4fd 100644 --- a/crypto/asymmetric_keys/pkcs7_parser.c +++ b/crypto/asymmetric_keys/pkcs7_parser.c @@ -297,6 +297,21 @@ int pkcs7_sig_note_pkey_algo(void *context, size_t hdr= len, ctx->sinfo->sig->pkey_algo =3D "ecrdsa"; ctx->sinfo->sig->encoding =3D "raw"; break; + case OID_id_ml_dsa_44: + ctx->sinfo->sig->pkey_algo =3D "ml-dsa44"; + ctx->sinfo->sig->encoding =3D "raw"; + ctx->sinfo->sig->algo_does_hash =3D true; + break; + case OID_id_ml_dsa_65: + ctx->sinfo->sig->pkey_algo =3D "ml-dsa65"; + ctx->sinfo->sig->encoding =3D "raw"; + ctx->sinfo->sig->algo_does_hash =3D true; + break; + case OID_id_ml_dsa_87: + ctx->sinfo->sig->pkey_algo =3D "ml-dsa87"; + ctx->sinfo->sig->encoding =3D "raw"; + ctx->sinfo->sig->algo_does_hash =3D true; + break; default: printk("Unsupported pkey algo: %u\n", ctx->last_oid); return -ENOPKG; diff --git a/crypto/asymmetric_keys/public_key.c b/crypto/asymmetric_keys/p= ublic_key.c index e5b177c8e842..96e084668d1b 100644 --- a/crypto/asymmetric_keys/public_key.c +++ b/crypto/asymmetric_keys/public_key.c @@ -142,6 +142,13 @@ software_key_determine_akcipher(const struct public_ke= y *pkey, if (strcmp(hash_algo, "streebog256") !=3D 0 && strcmp(hash_algo, "streebog512") !=3D 0) return -EINVAL; + } else if (strcmp(pkey->pkey_algo, "ml-dsa44") =3D=3D 0 || + strcmp(pkey->pkey_algo, "ml-dsa65") =3D=3D 0 || + strcmp(pkey->pkey_algo, "ml-dsa87") =3D=3D 0) { + if (strcmp(encoding, "raw") !=3D 0) + return -EINVAL; + if (!hash_algo) + return -EINVAL; } else { /* Unknown public key algorithm */ return -ENOPKG; diff --git a/crypto/asymmetric_keys/x509_cert_parser.c b/crypto/asymmetric_= keys/x509_cert_parser.c index 8df3fa60a44f..6a2a77a647a5 100644 --- a/crypto/asymmetric_keys/x509_cert_parser.c +++ b/crypto/asymmetric_keys/x509_cert_parser.c @@ -257,6 +257,15 @@ int x509_note_sig_algo(void *context, size_t hdrlen, u= nsigned char tag, case OID_gost2012Signature512: ctx->cert->sig->hash_algo =3D "streebog512"; goto ecrdsa; + case OID_id_ml_dsa_44: + ctx->cert->sig->pkey_algo =3D "ml-dsa44"; + goto ml_dsa; + case OID_id_ml_dsa_65: + ctx->cert->sig->pkey_algo =3D "ml-dsa65"; + goto ml_dsa; + case OID_id_ml_dsa_87: + ctx->cert->sig->pkey_algo =3D "ml-dsa87"; + goto ml_dsa; } =20 rsa_pkcs1: @@ -274,6 +283,12 @@ int x509_note_sig_algo(void *context, size_t hdrlen, u= nsigned char tag, ctx->cert->sig->encoding =3D "x962"; ctx->sig_algo =3D ctx->last_oid; return 0; +ml_dsa: + ctx->cert->sig->algo_does_hash =3D true; + ctx->cert->sig->hash_algo =3D ctx->cert->sig->pkey_algo; + ctx->cert->sig->encoding =3D "raw"; + ctx->sig_algo =3D ctx->last_oid; + return 0; } =20 /* @@ -524,6 +539,15 @@ int x509_extract_key_data(void *context, size_t hdrlen, return -ENOPKG; } break; + case OID_id_ml_dsa_44: + ctx->cert->pub->pkey_algo =3D "ml-dsa44"; + break; + case OID_id_ml_dsa_65: + ctx->cert->pub->pkey_algo =3D "ml-dsa65"; + break; + case OID_id_ml_dsa_87: + ctx->cert->pub->pkey_algo =3D "ml-dsa87"; + break; default: return -ENOPKG; } diff --git a/include/linux/oid_registry.h b/include/linux/oid_registry.h index 6de479ebbe5d..30821a6a4f72 100644 --- a/include/linux/oid_registry.h +++ b/include/linux/oid_registry.h @@ -145,6 +145,11 @@ enum OID { OID_id_rsassa_pkcs1_v1_5_with_sha3_384, /* 2.16.840.1.101.3.4.3.15 */ OID_id_rsassa_pkcs1_v1_5_with_sha3_512, /* 2.16.840.1.101.3.4.3.16 */ =20 + /* NIST FIPS-204 ML-DSA (Dilithium) */ + OID_id_ml_dsa_44, /* 2.16.840.1.101.3.4.3.17 */ + OID_id_ml_dsa_65, /* 2.16.840.1.101.3.4.3.18 */ + OID_id_ml_dsa_87, /* 2.16.840.1.101.3.4.3.19 */ + OID__NR }; From nobody Fri Dec 19 17:16:03 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 77DD925CC74 for ; Fri, 7 Nov 2025 10:05:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762509954; cv=none; b=Mbd/OiqQh4VXhQuUBDX/GfyXKw7XHEhSw7Ughhw7bU8aCvTU2WQVt5XnRcqTaVeFaUSDBwOCuVSTrD6tMS3s+Biy048jzBt03BOkMHBFIXB/ecFUejD7I/3AvtNAiY71c0YOOb2aEbMjH+09fGi6IcP5dn9fC10fk8mbxClpQdo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762509954; c=relaxed/simple; bh=h9z28y0YXaSoCRfDL4rjhIPmp6uSb1t7HivBNV4Rchg=; h=From:In-Reply-To:References:Cc:Subject:MIME-Version:Content-Type: Date:Message-ID; b=WgFisSo1cbHLva3vcCq/+a7tNx8wZpONDnOeTQqJGr5T+fk8tzADRUWUVIAeevR/tO/LDAxp4YxNpdakjQZ6n+Tn8n28Hdp9taufmnxmimiMwmAPQCQneEpN9Jf8Bzo1BXg8DPRsAj9euisUiq0U6rDvDnEMRSauYMC+zdi/ayg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ZNCxecBp; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ZNCxecBp" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1762509951; h=from:from:reply-to:subject:subject:date:date:message-id:message-id:to: cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=d2iFp6mDvWDTtLkd9rZC+JAkBE2LytPdd3avlx4HUqs=; b=ZNCxecBpRIODptnFkO4iDkTTOckNYW4sdJ4iow+dWnvyPJHMR+0I78ZmhvSGgzmsZPNYwo DAOeUEALJRjerl77g0VasGdHBRASFXuiaWlDRyRgpkM5yUuvVZq+FrkebDQ0tTpeSb5/9F DtG8MQRrwXYSBzH+asL/dYEcwZXc/Sg= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-153-oQPbeBJIMvKWtug6NngSPQ-1; Fri, 07 Nov 2025 05:05:48 -0500 X-MC-Unique: oQPbeBJIMvKWtug6NngSPQ-1 X-Mimecast-MFC-AGG-ID: oQPbeBJIMvKWtug6NngSPQ_1762509946 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 821D01956094; Fri, 7 Nov 2025 10:05:45 +0000 (UTC) Received: from warthog.procyon.org.uk (unknown [10.42.28.6]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4E7A11945110; Fri, 7 Nov 2025 10:05:40 +0000 (UTC) Organization: Red Hat UK Ltd. Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SI4 1TE, United Kingdom. Registered in England and Wales under Company Registration No. 3798903 From: David Howells In-Reply-To: <20251106174456.31818-1-dhowells@redhat.com> References: <20251106174456.31818-1-dhowells@redhat.com> Cc: dhowells@redhat.com, Herbert Xu , Eric Biggers , Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , "Jason A . Donenfeld" , Ard Biesheuvel , Stephan Mueller , Lukas Wunner , Ignat Korchagin , linux-crypto@vger.kernel.org, keyrings@vger.kernel.org, linux-modules@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 8/8] modsign: Enable ML-DSA module signing Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-ID: <61636.1762509938.1@warthog.procyon.org.uk> Content-Transfer-Encoding: quoted-printable Date: Fri, 07 Nov 2025 10:05:38 +0000 Message-ID: <61637.1762509938@warthog.procyon.org.uk> X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Content-Type: text/plain; charset="utf-8" =20 Allow ML-DSA module signing to be enabled. Note that openssl's CMS_*() function suite does not, as of openssl-3.5.1, support the use of CMS_NOATTR with ML-DSA, so the prohibition against using authenticatedAttributes with module signing has to be removed. The selected digest then applies only to the algorithm used to calculate the digest stored in the messageDigest attribute. The ML-DSA algorithm uses its own internal choice of digest (SHAKE256) without regard to what's specified in the CMS message. This is, in theory, configurable, but there's currently no hook in the crypto_sig API to do that, though possibly it could be done by parameterising the name of the algorithm, e.g. ("ml-dsa87(sha512)"). Signed-off-by: David Howells cc: Lukas Wunner cc: Ignat Korchagin cc: Stephan Mueller cc: Eric Biggers cc: Herbert Xu cc: keyrings@vger.kernel.org cc: linux-crypto@vger.kernel.org --- Documentation/admin-guide/module-signing.rst | 15 ++++++++------- certs/Kconfig | 24 ++++++++++++++++++++++= ++ certs/Makefile | 3 +++ crypto/asymmetric_keys/pkcs7_verify.c | 4 ---- kernel/module/Kconfig | 5 +++++ scripts/sign-file.c | 26 ++++++++++++++++++----= ---- 6 files changed, 58 insertions(+), 19 deletions(-) diff --git a/Documentation/admin-guide/module-signing.rst b/Documentation/a= dmin-guide/module-signing.rst index a8667a777490..6daff80c277b 100644 --- a/Documentation/admin-guide/module-signing.rst +++ b/Documentation/admin-guide/module-signing.rst @@ -28,10 +28,11 @@ trusted userspace bits. =20 This facility uses X.509 ITU-T standard certificates to encode the public = keys involved. The signatures are not themselves encoded in any industrial sta= ndard -type. The built-in facility currently only supports the RSA & NIST P-384 = ECDSA -public key signing standard (though it is pluggable and permits others to = be -used). The possible hash algorithms that can be used are SHA-2 and SHA-3 = of -sizes 256, 384, and 512 (the algorithm is selected by data in the signatur= e). +type. The built-in facility currently only supports the RSA, NIST P-384 E= CDSA +and NIST FIPS-204 ML-DSA (Dilithium) public key signing standards (though = it is +pluggable and permits others to be used). For RSA and ECDSA, the possible= hash +algorithms that can be used are SHA-2 and SHA-3 of sizes 256, 384, and 512= (the +algorithm is selected by data in the signature); ML-DSA uses SHAKE256. =20 =20 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D @@ -146,9 +147,9 @@ into vmlinux) using parameters in the:: =20 file (which is also generated if it does not already exist). =20 -One can select between RSA (``MODULE_SIG_KEY_TYPE_RSA``) and ECDSA -(``MODULE_SIG_KEY_TYPE_ECDSA``) to generate either RSA 4k or NIST -P-384 keypair. +One can select between RSA (``MODULE_SIG_KEY_TYPE_RSA``), ECDSA +(``MODULE_SIG_KEY_TYPE_ECDSA``) and ML-DSA (``MODULE_SIG_KEY_TYPE_ML_DSA``= ) to +generate an RSA 4k, a NIST P-384 keypair or an ML-DSA keypair. =20 It is strongly recommended that you provide your own x509.genkey file. =20 diff --git a/certs/Kconfig b/certs/Kconfig index 78307dc25559..f647b944f5da 100644 --- a/certs/Kconfig +++ b/certs/Kconfig @@ -39,6 +39,30 @@ config MODULE_SIG_KEY_TYPE_ECDSA Note: Remove all ECDSA signing keys, e.g. certs/signing_key.pem, when falling back to building Linux 5.14 and older kernels. =20 +config MODULE_SIG_KEY_TYPE_ML_DSA_44 + bool "ML-DSA (Dilithium) 44" + select CRYPTO_ML_DSA + select LIB_SHA3 + help + Use an ML-DSA (Dilithium) 44 key (NIST FIPS 204) for module signing + with a SHAKE256 'hash' of the message. + +config MODULE_SIG_KEY_TYPE_ML_DSA_65 + bool "ML-DSA (Dilithium) 65" + select CRYPTO_ML_DSA + select LIB_SHA3 + help + Use an ML-DSA (Dilithium) 65 key (NIST FIPS 204) for module signing + with a SHAKE256 'hash' of the message. + +config MODULE_SIG_KEY_TYPE_ML_DSA_87 + bool "ML-DSA (Dilithium) 87" + select CRYPTO_ML_DSA + select LIB_SHA3 + help + Use an ML-DSA (Dilithium) 87 key (NIST FIPS 204) for module signing + with a SHAKE256 'hash' of the message. + endchoice =20 config SYSTEM_TRUSTED_KEYRING diff --git a/certs/Makefile b/certs/Makefile index f6fa4d8d75e0..231379c91b86 100644 --- a/certs/Makefile +++ b/certs/Makefile @@ -43,6 +43,9 @@ targets +=3D x509_certificate_list ifeq ($(CONFIG_MODULE_SIG_KEY),certs/signing_key.pem) =20 keytype-$(CONFIG_MODULE_SIG_KEY_TYPE_ECDSA) :=3D -newkey ec -pkeyopt ec_pa= ramgen_curve:secp384r1 +keytype-$(CONFIG_MODULE_SIG_KEY_TYPE_ML_DSA_44) :=3D -newkey ml-dsa-44 +keytype-$(CONFIG_MODULE_SIG_KEY_TYPE_ML_DSA_65) :=3D -newkey ml-dsa-65 +keytype-$(CONFIG_MODULE_SIG_KEY_TYPE_ML_DSA_87) :=3D -newkey ml-dsa-87 =20 quiet_cmd_gen_key =3D GENKEY $@ cmd_gen_key =3D openssl req -new -nodes -utf8 -$(CONFIG_MODULE_SIG_H= ASH) -days 36500 \ diff --git a/crypto/asymmetric_keys/pkcs7_verify.c b/crypto/asymmetric_keys= /pkcs7_verify.c index 0f9f515b784d..f7ea1d41771d 100644 --- a/crypto/asymmetric_keys/pkcs7_verify.c +++ b/crypto/asymmetric_keys/pkcs7_verify.c @@ -424,10 +424,6 @@ int pkcs7_verify(struct pkcs7_message *pkcs7, pr_warn("Invalid module sig (not pkcs7-data)\n"); return -EKEYREJECTED; } - if (pkcs7->have_authattrs) { - pr_warn("Invalid module sig (has authattrs)\n"); - return -EKEYREJECTED; - } break; case VERIFYING_FIRMWARE_SIGNATURE: if (pkcs7->data_type !=3D OID_data) { diff --git a/kernel/module/Kconfig b/kernel/module/Kconfig index 2a1beebf1d37..4b5d1601d537 100644 --- a/kernel/module/Kconfig +++ b/kernel/module/Kconfig @@ -327,6 +327,10 @@ config MODULE_SIG_SHA3_512 bool "SHA3-512" select CRYPTO_SHA3 =20 +config MODULE_SIG_SHAKE256 + bool "SHAKE256" + select CRYPTO_SHA3 + endchoice =20 config MODULE_SIG_HASH @@ -339,6 +343,7 @@ config MODULE_SIG_HASH default "sha3-256" if MODULE_SIG_SHA3_256 default "sha3-384" if MODULE_SIG_SHA3_384 default "sha3-512" if MODULE_SIG_SHA3_512 + default "shake256" if MODULE_SIG_SHAKE256 =20 config MODULE_COMPRESS bool "Module compression" diff --git a/scripts/sign-file.c b/scripts/sign-file.c index 7070245edfc1..b726581075f9 100644 --- a/scripts/sign-file.c +++ b/scripts/sign-file.c @@ -315,18 +315,28 @@ int main(int argc, char **argv) ERR(!digest_algo, "EVP_get_digestbyname"); =20 #ifndef USE_PKCS7 + + unsigned int flags =3D + CMS_NOCERTS | + CMS_PARTIAL | + CMS_BINARY | + CMS_DETACHED | + CMS_STREAM | + CMS_NOSMIMECAP | + CMS_NO_SIGNING_TIME | + use_keyid; + if (!EVP_PKEY_is_a(private_key, "ML-DSA-44") && + !EVP_PKEY_is_a(private_key, "ML-DSA-65") && + !EVP_PKEY_is_a(private_key, "ML-DSA-87")) + flags |=3D use_signed_attrs; + /* Load the signature message from the digest buffer. */ - cms =3D CMS_sign(NULL, NULL, NULL, NULL, - CMS_NOCERTS | CMS_PARTIAL | CMS_BINARY | - CMS_DETACHED | CMS_STREAM); + cms =3D CMS_sign(NULL, NULL, NULL, NULL, flags); ERR(!cms, "CMS_sign"); =20 - ERR(!CMS_add1_signer(cms, x509, private_key, digest_algo, - CMS_NOCERTS | CMS_BINARY | - CMS_NOSMIMECAP | use_keyid | - use_signed_attrs), + ERR(!CMS_add1_signer(cms, x509, private_key, digest_algo, flags), "CMS_add1_signer"); - ERR(CMS_final(cms, bm, NULL, CMS_NOCERTS | CMS_BINARY) !=3D 1, + ERR(CMS_final(cms, bm, NULL, flags) !=3D 1, "CMS_final"); =20 #else